CppDS.com

C++ 98 11 14 17 20 手册

std::tanh(std::complex)

来自cppreference.com
< cpp‎ | numeric‎ | complex
定义于头文件 <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)
  1. C11 DR471 ,这只对非零 x 成立。若 z(0,∞) ,则结果应为 (0,NaN)
  2. C11 DR471 ,这只对非零 x 成立。若 z(0,NaN) ,则结果应为 (0,NaN)

注意

双曲正切的数学定义是 tanh z =
ez
-e-z
ez
+e-z

双曲正切是复平面上的解析函数且无分支切割。它对于虚部是周期的,周期为 πi ,而且沿虚轴有一阶极点,位于坐标 (0, π(1/2 + n)) 。然而无常用浮点表示能准确表示 π/2 ,故没有参数值能导致极点错误。

示例

#include <iostream>
#include <cmath>
#include <complex>
 
int main()
{
    std::cout << std::fixed;
    std::complex<double> z(1, 0); // 表现类似沿实轴的 tanh
    std::cout << "tanh" << z << " = " << std::tanh(z)
              << " (tanh(1) = " << std::tanh(1) << ")\n";
 
    std::complex<double> z2(0, 1); // 表现类似沿虚轴的正切
    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)
(函数模板)
计算复数的反双曲正切( artanh(z)
(函数模板)
(C++11)(C++11)
计算双曲正切( tanh(x)
(函数)
在 valarray 的每个元素上调用 std::tanh 函数
(函数模板)
关闭