命名空间
变体
操作

std::exp(std::complex)

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

计算 z 的以 e 为底的指数,即 e (欧拉数,2.7182818) 的 z 次幂。

目录

[编辑] 参数

z - 复数值

[编辑] 返回值

如果没有错误发生,则返回 ez 次幂,ez

[编辑] 错误处理和特殊值

错误报告与 math_errhandling 一致。

如果实现支持 IEEE 浮点算术,

  • std::exp(std::conj(z)) == std::conj(std::exp(z))
  • 如果 z(±0,+0),则结果是 (1,+0)
  • 如果 z(x,+∞) (对于任何有限 x),则结果是 (NaN,NaN) 并且引发 FE_INVALID
  • 如果 z(x,NaN) (对于任何有限 x),则结果是 (NaN,NaN) 并且可能引发 FE_INVALID
  • 如果 z(+∞,+0),则结果是 (+∞,+0)
  • 如果 z(-∞,y) (对于任何有限 y),则结果是 +0cis(y)
  • 如果 z(+∞,y) (对于任何有限非零 y),则结果是 +∞cis(y)
  • 如果 z(-∞,+∞),则结果是 (±0,±0) (符号未指定)
  • 如果 z(+∞,+∞),则结果是 (±∞,NaN) 并且引发 FE_INVALID (实部的符号未指定)
  • 如果 z(-∞,NaN),则结果是 (±0,±0) (符号未指定)
  • 如果 z(+∞,NaN),则结果是 (±∞,NaN) (实部的符号未指定)
  • 如果 z(NaN,+0),则结果是 (NaN,+0)
  • 如果 z(NaN,y) (对于任何非零 y),则结果是 (NaN,NaN) 并且可能引发 FE_INVALID
  • 如果 z(NaN,NaN),则结果是 (NaN,NaN)

其中 cis(y)cos(y) + i sin(y)

[编辑] 注解

复指数函数 ez
对于 z = x+iy 等于 ex
cis(y)
,或者 ex
(cos(y) + i sin(y))

指数函数在复平面上是整函数,没有分支切割线。

当实部为 0 时,以下各项具有等效结果

在这种情况下,exp 可能会慢大约 4.5 倍。应该使用其他形式之一来代替调用实部为字面值 0 的参数的 exp。 尝试通过运行时检查 z.real() == 0 来避免 exp 没有任何好处。

[编辑] 示例

#include <cmath>
#include <complex>
#include <iostream>
 
int main()
{
   const double pi = std::acos(-1.0);
   const std::complex<double> i(0.0, 1.0);
 
   std::cout << std::fixed << " exp(i * pi) = " << std::exp(i * pi) << '\n';
}

输出

exp(i * pi) = (-1.000000,0.000000)

[编辑] 参见

以负实轴为分支切割线的复数自然对数
(函数模板) [编辑]
(C++11)(C++11)
返回 e 的给定次幂 (ex)
(函数) [编辑]
将 std::exp 函数应用于 valarray 的每个元素
(函数模板) [编辑]
从幅值和相位角构造复数
(函数模板) [编辑]
C 文档 for cexp