tanh¶
- tanh(x: array, /) array¶
Calculates an implementation-dependent approximation to the hyperbolic tangent for each element
x_iof the input arrayx.The mathematical definition of the hyperbolic tangent is
\[\begin{split}\begin{align} \operatorname{tanh}(x) &= \frac{\operatorname{sinh}(x)}{\operatorname{cosh}(x)} \\ &= \frac{e^x - e^{-x}}{e^x + e^{-x}} \end{align}\end{split}\]where \(\operatorname{sinh}(x)\) is the hyperbolic sine and \(\operatorname{cosh}(x)\) is the hyperbolic cosine.
Note
The hyperbolic tangent is an analytical function on the complex plane and has no branch cuts. The function is periodic, with period \(\pi j\), with respect to the imaginary component and has first order poles along the imaginary line at coordinates \((0, \pi (\frac{1}{2} + n))\). However, IEEE 754 binary floating-point representation cannot represent \(\pi / 2\) exactly, and, thus, no argument value is possible such that a pole error occurs.
- Parameters:
x (array) – input array whose elements each represent a hyperbolic angle. Should have a floating-point data type.
- Returns:
out (array) – an array containing the hyperbolic tangent of each element in
x. The returned array must have a floating-point data type determined by Type Promotion Rules.
Notes
Special cases
Note
For all operands,
tanh(-x)must equal-tanh(x).For real-valued floating-point operands,
If
x_iisNaN, the result isNaN.If
x_iis+0, the result is+0.If
x_iis-0, the result is-0.If
x_iis+infinity, the result is+1.If
x_iis-infinity, the result is-1.
For complex floating-point operands, let
a = real(x_i),b = imag(x_i), andNote
For complex floating-point operands,
tanh(conj(x))must equalconj(tanh(x)).If
ais+0andbis+0, the result is+0 + 0j.If
ais a nonzero finite number andbis+infinity, the result isNaN + NaN j.If
ais+0andbis+infinity, the result is+0 + NaN j.If
ais a nonzero finite number andbisNaN, the result isNaN + NaN j.If
ais+0andbisNaN, the result is+0 + NaN j.If
ais+infinityandbis a positive (i.e., greater than0) finite number, the result is1 + 0j.If
ais+infinityandbis+infinity, the result is1 + 0j(sign of the imaginary component is unspecified).If
ais+infinityandbisNaN, the result is1 + 0j(sign of the imaginary component is unspecified).If
aisNaNandbis+0, the result isNaN + 0j.If
aisNaNandbis a nonzero number, the result isNaN + NaN j.If
aisNaNandbisNaN, the result isNaN + NaN j.
Warning
For historical reasons stemming from the C standard, array libraries may not return the expected result when
ais+0andbis either+infinityorNaN. The result should be+0 + NaN jin both cases; however, for libraries compiled against older C versions, the result may beNaN + NaN j.Array libraries are not required to patch these older C versions, and, thus, users are advised that results may vary across array library implementations for these special cases.
Changed in version 2022.12: Added complex data type support.