std::log(std::complex)_C++中文网
| template< class T > |
||
计算 z 的复自然(底 e )对数,分支切割沿负实轴。
参数
返回值
若不发生错误,则返回 z 的复自然对数,在沿虚轴为区间 [−iπ, +iπ] ,沿实轴为数学上无界的条状范围中。
错误处理及特殊值
报告的错误与 math_errhandling 一致。
若实现支持 IEEE 浮点算术,则
- 考虑虚部符号,函数连续到分支切割上
- std::log(std::conj(z)) == std::conj(std::log(z))
- 若
z为(-0,+0),则结果为(-∞,π)并引发 FE_DIVBYZERO - 若
z为(+0,+0),则结果为(-∞,+0)并引发 FE_DIVBYZERO - 若
z为(x,+∞)(对于任何有限 x ),则结果为(+∞,π/2) - 若
z为(x,NaN)(对于任何有限 x ),则结果为(NaN,NaN)并可能引发 FE_INVALID - 若
z为(-∞,y)(对于任何有限正 y ),则结果为(+∞,π) - 若
z为(+∞,y)(对于任何有限正 y ),则结果为(+∞,+0) - 若
z为(-∞,+∞),则结果为(+∞,3π/4) - 若
z为(+∞,+∞),则结果为(+∞,π/4) - 若
z为(±∞,NaN),则结果为(+∞,NaN) - 若
z为(NaN,y)(对于任何有限 y ),则结果为(NaN,NaN)并可能引发 FE_INVALID - 若
z为(NaN,+∞),则结果为(+∞,NaN) - 若
z为(NaN,NaN),则结果为(NaN,NaN)
注意
拥有极坐标表示 (r,θ) 的复数 z 的自然对数等于 ln r + i(θ+2nπ) ,其主值为 ln r + iθ 。
此函数语义的目的是与 C 函数 clog 一致。
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
| DR | 应用于 | 出版时的行为 | 正确行为 |
|---|---|---|---|
| LWG 2597 | C++98 | 规定错误地处理了有符号零虚部 | 移除错误的要求 |
示例
输出:
2*log(0,1) = (0,3.14159) 4*log(0.707107,0.707107) = (0,3.14159) log(-1,0) = (0,3.14159) log(-1,-0) (the other side of the cut) = (0,-3.14159)