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);// 表现类似沿实轴的 tanhstd::cout<<"tanh"<< z <<" = "<<std::tanh(z)<<" (tanh(1) = "<<std::tanh(1)<<")\n"; std::complex<double> z2(0.0, 1.0);// 表现类似沿虚轴的正切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 的每个元素 (函数模板) | |
ctanh 的 C 文档 |