std::tanh(std::complex)
來自 cppreference.com
定義於標頭檔案 <complex> |
||
template< class T > complex<T> tanh( const complex<T>& z ); |
(C++11 起) | |
計算複數值 z 的複數雙曲正切。
目錄 |
[編輯] 引數
z | - | 複數型別的值 |
[編輯] 返回值
若無錯誤發生,則返回 z 的複數雙曲正切。
[編輯] 錯誤處理和特殊值
錯誤報告與 math_errhandling 保持一致。
如果實現支援 IEEE 浮點算術,
- std::tanh(std::conj(z)) == std::conj(std::tanh(z)).
- std::tanh(-z) == -std::tanh(z).
- 若 z 為
(+0,+0)
,則結果為(+0,+0)
。 - 若 z 為
(x,+∞)
(對於任何[1]有限 x),則結果為(NaN,NaN)
並引發 FE_INVALID。 - 若 z 為
(x,NaN)
(對於任何[2]有限 x),則結果為(NaN,NaN)
並可能引發 FE_INVALID。 - 若 z 為
(+∞,y)
(對於任何有限正 y),則結果為(1,+0)
。 - 若 z 為
(+∞,+∞)
,則結果為(1,±0)
(虛部的符號未指定)。 - 若 z 為
(+∞,NaN)
,則結果為(1,±0)
(虛部的符號未指定)。 - 若 z 為
(NaN,+0)
,則結果為(NaN,+0)
。 - 若 z 為
(NaN,y)
(對於任何非零 y),則結果為(NaN,NaN)
並可能引發 FE_INVALID。 - 若 z 為
(NaN,NaN)
,則結果為(NaN,NaN)
。
- ↑ 根據 C11 DR471,這僅適用於非零 x。如果
z
是(0,∞)
,則結果應為(0,NaN)
。 - ↑ 根據 C11 DR471,這僅適用於非零 x。如果
z
是(0,NaN)
,則結果應為(0,NaN)
。
[編輯] 注意
雙曲正切的數學定義是 tanh z =ez -e-z |
ez +e-z |
雙曲正切是複平面上的一個解析函式,沒有分支切口。它對於虛部是週期性的,週期為 πi,並且沿虛線在座標 (0, π(1/2 + n)) 處具有一階極點。然而,沒有常見的浮點表示能夠精確表示 π/2,因此沒有出現極點錯誤的引數值。
[編輯] 示例
執行此程式碼
#include <cmath> #include <complex> #include <iostream> int main() { std::cout << std::fixed; std::complex<double> z(1.0, 0.0); // behaves like real tanh along the real line std::cout << "tanh" << z << " = " << std::tanh(z) << " (tanh(1) = " << std::tanh(1) << ")\n"; std::complex<double> z2(0.0, 1.0); // behaves like tangent along the imaginary line std::cout << "tanh" << z2 << " = " << std::tanh(z2) << " ( tan(1) = " << std::tan(1) << ")\n"; }
輸出
tanh(1.000000,0.000000) = (0.761594,0.000000) (tanh(1) = 0.761594) tanh(0.000000,1.000000) = (0.000000,1.557408) ( tan(1) = 1.557408)
[編輯] 參閱
計算複數的雙曲正弦 (sinh(z)) (函式模板) | |
計算複數的雙曲餘弦 (cosh(z)) (函式模板) | |
(C++11) |
計算複數的反雙曲正切 (artanh(z)) (函式模板) |
(C++11)(C++11) |
計算雙曲正切(tanh(x)) (函式) |
將函式 std::tanh 應用於 valarray 的每個元素 (函式模板) | |
C 文件 用於 ctanh
|