std::exp(std::complex)
來自 cppreference.com
定義於標頭檔案 <complex> |
||
template< class T > std::complex<T> exp( const std::complex<T>& z ); |
||
計算 z 的底數為 e 的指數,即 e(尤拉數,2.7182818
)的 z 次方。
目錄 |
[編輯] 引數
z | - | 複數型別的值 |
[編輯] 返回值
如果未發生錯誤,則返回 e 的 z 次方,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 時,以下結果等效:
- std::exp(std::complex<float>(0, theta))
- std::complex<float>(cosf(theta), sinf(theta))
- std::polar(1.f, theta)
在這種情況下,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 文件 用於 cexp
|