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 文档 for ctanh
|