std:: exp (std::complex)
|
定义于头文件
<complex>
|
||
|
template
<
class
T
>
std:: complex < T > exp ( const std:: complex < T > & z ) ; |
||
计算
z
的以 e 为底的指数函数,即
e
(自然常数,
2.7182818
)的
z
次幂。
目录 |
参数
| z | - | 复数值 |
返回值
如果未发生错误,则返回
e
的
z
次幂,
e
z
。
、
、
错误处理与特殊值
错误报告遵循 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时,以下操作具有等效结果:
- std:: exp ( std:: complex < float > ( 0 , theta ) )
- std:: complex < float > ( cosf ( theta ) , sinf ( theta ) )
- std:: polar ( 1 . f , theta )
标签内的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
|
|