命名空间
变体
操作

std::log(std::complex)

来自 cppreference.cn
< cpp‎ | 数值‎ | 复数
 
 
 
 
定义于头文件 <complex>
template< class T >
std::complex<T> log( const std::complex<T>& z );

计算复数 z自然(底数为 e)对数,并在负实轴上有一分支切割。

目录

[编辑] 参数

z - 复数类型的值

[编辑] 返回值

如果没有发生错误,返回 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 保持一致。

[编辑] 示例

#include <cmath>
#include <complex>
#include <iostream>
 
int main()
{
    std::complex<double> z {0.0, 1.0}; // r = 1, θ = pi / 2
    std::cout << "2 * log" << z << " = " << 2.0 * std::log(z) << '\n';
 
    std::complex<double> z2 {sqrt(2.0) / 2, sqrt(2.0) / 2}; // r = 1, θ = pi / 4
    std::cout << "4 * log" << z2 << " = " << 4.0 * std::log(z2) << '\n';
 
    std::complex<double> z3 {-1.0, 0.0}; // r = 1, θ = pi
    std::cout << "log" << z3 << " = " << std::log(z3) << '\n';
    std::complex<double> z4 {-1.0, -0.0}; // the other side of the cut
    std::cout << "log" << z4 << " (the other side of the cut) = " << std::log(z4) << '\n';
}

可能的输出

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)

[编辑] 缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 发布时的行为 正确的行为
LWG 2597 C++98 规范错误处理了带符号的零虚部 已移除错误要求

[编辑] 参阅

具有沿负实轴分支割线的复数常用对数
(函数模板) [编辑]
复数 e 的指数
(函数模板) [编辑]
(C++11)(C++11)
计算自然(底数为 e)对数(ln(x)
(函数) [编辑]
将函数 std::log 应用于 valarray 的每个元素
(函数模板) [编辑]
C 文档 关于 clog