asinh

asinh(x: array, /) array

Calculates an implementation-dependent approximation to the inverse hyperbolic sine for each element x_i in the input array x.

Note

The principal value of the inverse hyperbolic sine of a complex number \(z\) is

\[\operatorname{asinh}(z) = \ln(z + \sqrt{1+z^2})\]

For any \(z\),

\[\operatorname{asinh}(z) = \frac{\operatorname{asin}(zj)}{j}\]

Note

For complex floating-point operands, asinh(conj(x)) must equal conj(asinh(x)) and asinh(-z) must equal -asinh(z).

Note

The inverse hyperbolic sine is a multi-valued function and requires a branch cut on the complex plane. By convention, a branch cut is placed at the line segments \((-\infty j, -j)\) and \((j, \infty j)\) of the imaginary axis.

Accordingly, for complex arguments, the function returns the inverse hyperbolic sine in the range of a strip unbounded along the real axis and in the interval \([-\pi j/2, +\pi j/2]\) along the imaginary axis.

Note: branch cuts follow C99 and have provisional status (see Branch Cuts).

Parameters:

x (array) – input array whose elements each represent the area of a hyperbolic sector. Should have a floating-point data type.

Returns:

out (array) – an array containing the inverse hyperbolic sine of each element in x. The returned array must have a floating-point data type determined by Type Promotion Rules.

Notes

Special cases

For real-valued floating-point operands,

  • If x_i is NaN, the result is NaN.

  • If x_i is +0, the result is +0.

  • If x_i is -0, the result is -0.

  • If x_i is +infinity, the result is +infinity.

  • If x_i is -infinity, the result is -infinity.

For complex floating-point operands, let a = real(x_i), b = imag(x_i), and

  • If a is +0 and b is +0, the result is +0 + 0j.

  • If a is a positive (i.e., greater than 0) finite number and b is +infinity, the result is +infinity + πj/2.

  • If a is a finite number and b is NaN, the result is NaN + NaN j.

  • If a is +infinity and b is a positive (i.e., greater than 0) finite number, the result is +infinity + 0j.

  • If a is +infinity and b is +infinity, the result is +infinity + πj/4.

  • If a is NaN and b is +0, the result is NaN + 0j.

  • If a is NaN and b is a nonzero finite number, the result is NaN + NaN j.

  • If a is NaN and b is +infinity, the result is ±infinity + NaN j (sign of the real component is unspecified).

  • If a is NaN and b is NaN, the result is NaN + NaN j.

Changed in version 2022.12: Added complex data type support.