Namespaces
Variants

std:: exp (std::complex)

From cppreference.net
定义于头文件 <complex>
template < class T >
std:: complex < T > exp ( const std:: complex < T > & z ) ;

计算 z 的以 e 为底的指数函数,即 e (自然常数, 2.7182818 )的 z 次幂。

目录

参数

z - 复数值

返回值

如果未发生错误,则返回 e z 次幂, e z

(说明:严格遵循翻译要求: 1. 保留所有HTML标签和属性不变 2. 不翻译
标签内的内容(虽然示例中未出现这些标签)
3. C++术语(如变量名z)保持原样
4. 对数学表达式和格式标记进行精确对应翻译
5. 采用专业书面语表达)

错误处理与特殊值

错误报告遵循 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)

注释

复指数函数 e z
对于 z = x+iy 等于 e x
cis(y)
,即 e x
(cos(y) + i sin(y))

指数函数是复平面上的一个 整函数 ,且不存在分支切割。

当实部为0时,以下操作具有等效结果:

(注:根据要求,所有HTML标签、属性及 标签内的C++代码均未翻译,仅对自然语言部分进行翻译。由于原文中除代码外无其他自然语言文本,故输出保持原样)

在这种情况下, 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 的给定次幂 ( e x )
(函数)
对 valarray 的每个元素应用函数 std::exp
(函数模板)
从幅值和相位角构造复数
(函数模板)
C 文档 for cexp