std::acosh(std::complex)(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

🌸 std::acosh(std::complex) 🌸

okay bestie, this is the std::acosh(std::complex)(3) page from the C++ Standard Libary manual, and we are gonna get you through it with zero confusion and maximum sparkle. πŸ’–


πŸ’… NAME πŸ’…

std::acosh(std::complex) β€” literally std::acosh(std::complex), no cap. ✨


🌸 Synopsis 🌸

Defined in header <complex>.

template< class T >                       (since C++11)
complex<T> acosh( const complex<T>& z );

okay so this computes the complex arc hyperbolic cosine of a complex value z, with branch cut at values less than 1 along the real axis. That's the whole vibe. πŸ¦‹


🫢 Parameters 🫢

  • z β€” complex value.

πŸ’– Return value πŸ’–

If no errors occur, the complex arc hyperbolic cosine of z is returned, in the range of a half-strip of nonnegative values along the real axis and in the interval [βˆ’iΟ€; +iΟ€] along the imaginary axis. 🌈

πŸ’€ Error handling and special values πŸ’€

Errors are reported consistent with math_errhandling.

If the implementation supports IEEE floating-point arithmetic, then:

  • std::acosh(std::conj(z)) == std::conj(std::acosh(z)).
  • If z is (Β±0,+0), the result is (+0,Ο€/2).
  • If z is (x,+∞) (for any finite x), the result is (+∞,Ο€/2).
  • If z is (x,NaN) (for any^[1] finite x), the result is (NaN,NaN) and FE_INVALID may be raised.
  • If z is (-∞,y) (for any positive finite y), the result is (+∞,Ο€).
  • If z is (+∞,y) (for any positive finite y), the result is (+∞,+0).
  • If z is (-∞,+∞), the result is (+∞,3Ο€/4).
  • If z is (±∞,NaN), the result is (+∞,NaN).
  • If z is (NaN,y) (for any finite y), the result is (NaN,NaN) and FE_INVALID may be raised.
  • If z is (NaN,+∞), the result is (+∞,NaN).
  • If z is (NaN,NaN), the result is (NaN,NaN).
  1. ↑ per C11 DR471, this holds for non-zero x only. If z is (0,NaN), the result should be (NaN,Ο€/2).

🧚 Notes 🧚

Although the C++ standard names this function "complex arc hyperbolic cosine", the inverse functions of the hyperbolic functions are the area functions. Their argument is the area of a hyperbolic sector, not an arc. The correct name is "complex inverse hyperbolic cosine", and, less common, "complex area hyperbolic cosine". πŸ’œ

Inverse hyperbolic cosine is a multivalued function and requires a branch cut on the complex plane. The branch cut is conventionally placed at the line segment (-∞,+1) of the real axis.

The mathematical definition of the principal value of the inverse hyperbolic cosine is:

acosh z = ln(z +
√
z+1
√
z-1)

For any z:

acosh(z) =

√
z-1
√
1-z

acos(z), or simply i acos(z) in the upper half of the complex plane.

πŸ’… Example πŸ’…

The page says // Run this code, so run this code, bestie:

#include <complex>
#include <iostream>

int main()
{
    std::cout << std::fixed;
    std::complex<double> z1(0.5, 0);
    std::cout << "acosh" << z1 << " = " << std::acosh(z1) << '\n';

    std::complex<double> z2(0.5, -0.0);
    std::cout << "acosh" << z2 << " (the other side of the cut) = "
              << std::acosh(z2) << '\n';

    // in upper half-plane, acosh = i acos
    std::complex<double> z3(1, 1), i(0, 1);
    std::cout << "acosh" << z3 << " = " << std::acosh(z3) << '\n'
              << "i*acos" << z3 << " = " << i*std::acos(z3) << '\n';
}

πŸ“ Output πŸ“

It prints this, fr fr:

acosh(0.500000,0.000000) = (0.000000,-1.047198)
acosh(0.500000,-0.000000) (the other side of the cut) =
(0.000000,1.047198)
acosh(1.000000,1.000000) = (1.061275,0.904557)
i*acos(1.000000,1.000000) = (1.061275,0.904557)

🌈 See also 🌈

  • acos(std::complex) β€” computes arc cosine of a complex number; (C++11); \({\small\arccos{z}}\)arccos(z); (function template).
  • asinh(std::complex) β€” computes area hyperbolic sine of a complex number; (C++11); \({\small\operatorname{arsinh}{z}}\)arsinh(z); (function template).
  • atanh(std::complex) β€” computes area hyperbolic tangent of a complex number; (C++11); \({\small\operatorname{artanh}{z}}\)artanh(z); (function template).
  • cosh(std::complex) β€” computes hyperbolic cosine of a complex number; (C++11); \({\small\cosh{z}}\)cosh(z); (function template).
  • acosh, acoshf, acoshl β€” computes the inverse hyperbolic cosine; \({\small\operatorname{arcosh}{x}}\)arcosh(x); (C++11), (function), (C++11), (C++11).
  • C documentation for cacosh.

okay that's the whole page, bestie β€” source/version is http://cppreference.com, dated 2024.06.10 πŸ’–βœ¨

πŸ“¦ where this page comes from