Namensräume
Varianten
Aktionen

std::atanh, std::atanhf, std::atanhl

Von cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
 
Definiert in der Header-Datei <cmath>
(1)
float       atanh ( float num );

double      atanh ( double num );

long double atanh ( long double num );
(bis C++23)
/* Gleitkommazahl-Typ */
            atanh ( /*Gleitkommazahltyp*/ num );
(seit C++23)
(constexpr seit C++26)
float       atanhf( float num );
(2) (seit C++11)
(constexpr seit C++26)
long double atanhl( long double num );
(3) (seit C++11)
(constexpr seit C++26)
SIMD-Überladung (seit C++26)
Definiert im Header <simd>
template< /*math-floating-point*/ V >

constexpr /*deduzierter-simd-t*/<V>

            atanh ( const V& v_num );
(S) (seit C++26)
Definiert in der Header-Datei <cmath>
template< class Integer >
double      atanh ( Integer num );
(A) (constexpr seit C++26)
1-3) Berechnet den inversen hyperbolischen Tangens von num. Die Bibliothek stellt Überladungen von std::atanh für alle cv-unqualifizierten Gleitkommatypen als Parametertyp bereit.(seit C++23)
S) Die SIMD-Überladung führt eine elementweise std::atanh für v_num durch.
(Siehe math-floating-point und deduced-simd-t für ihre Definitionen.)
(seit C++26)
A) Zusätzliche Überladungen werden für alle ganzzahligen Typen bereitgestellt, die als double behandelt werden.
(seit C++11)

Inhalt

[edit] Parameter

num - Gleitkomma- oder Ganzzahlwert

[edit] Rückgabewert

Wenn keine Fehler auftreten, wird der inverse hyperbolische Tangens von num (tanh-1
(num)
oder artanh(num)) zurückgegeben.

Wenn ein Domänenfehler auftritt, wird ein implementierungsabhängiger Wert zurückgegeben (NaN, wo unterstützt).

Wenn ein Polfehler auftritt, wird ±HUGE_VAL, ±HUGE_VALF oder ±HUGE_VALL (mit dem korrekten Vorzeichen) zurückgegeben.

Wenn ein Bereichsfehler aufgrund eines Unterlaufs auftritt, wird das korrekte Ergebnis (nach Rundung) zurückgegeben.

[edit] Fehlerbehandlung

Fehler werden wie in math_errhandling beschrieben gemeldet.

Wenn das Argument nicht im Intervall [-1+1] liegt, tritt ein Bereichsfehler auf.

Wenn das Argument ±1 ist, tritt ein Polfehler auf.

Wenn die Implementierung IEEE-Gleitkomma-Arithmetik (IEC 60559) unterstützt,

  • Wenn das Argument ±0 ist, wird es unverändert zurückgegeben.
  • Wenn das Argument ±1 ist, wird ±∞ zurückgegeben und FE_DIVBYZERO wird ausgelöst.
  • Wenn |num|>1, wird NaN zurückgegeben und FE_INVALID wird ausgelöst.
  • Wenn das Argument NaN ist, wird NaN zurückgegeben.

[edit] Hinweise

Obwohl der C-Standard (auf den sich C++ für diese Funktion bezieht) diese Funktion "arcus hyperbolicus tangens" nennt, sind die Umkehrfunktionen der hyperbolischen Funktionen die Flächenfunktionen. Ihr Argument ist die Fläche eines hyperbolischen Sektors, nicht ein Bogen. Der korrekte Name ist "inverser hyperbolischer Tangens" (von POSIX verwendet) oder "Flächen-hyperbolischer Tangens".

POSIX spezifiziert, dass im Falle eines Unterlaufs num unverändert zurückgegeben wird und, falls dies nicht unterstützt wird, ein implementierungsdefinierter Wert zurückgegeben wird, der nicht größer ist als DBL_MIN, FLT_MIN und LDBL_MIN.

Die zusätzlichen Überladungen müssen nicht exakt wie in (A) angegeben bereitgestellt werden. Sie müssen nur ausreichend sein, um sicherzustellen, dass für ihr Argument num vom Integer-Typ, std::atanh(num) dieselbe Wirkung hat wie std::atanh(static_cast<double>(num)).

[edit] Beispiel

#include <cerrno>
#include <cfenv>
#include <cfloat>
#include <cmath>
#include <cstring>
#include <iostream>
// #pragma STDC FENV_ACCESS ON
 
int main()
{
    std::cout << "atanh(0) = " << std::atanh(0) << '\n'
              << "atanh(-0) = " << std::atanh(-0.0) << '\n'
              << "atanh(0.9) = " << std::atanh(0.9) << '\n';
 
    // error handling
    errno = 0;
    std::feclearexcept(FE_ALL_EXCEPT);
 
    std::cout << "atanh(-1) = " << std::atanh(-1) << '\n';
 
    if (errno == ERANGE)
        std::cout << "    errno == ERANGE: " << std::strerror(errno) << '\n';
    if (std::fetestexcept(FE_DIVBYZERO))
        std::cout << "    FE_DIVBYZERO raised\n";
}

Mögliche Ausgabe

atanh(0) = 0
atanh(-0) = -0
atanh(0.9) = 1.47222
atanh(-1) = -inf
    errno == ERANGE: Numerical result out of range
    FE_DIVBYZERO raised

[edit] Siehe auch

(C++11)(C++11)(C++11)
berechnet den inversen hyperbolischen Sinus (arsinh(x))
(Funktion) [bearbeiten]
(C++11)(C++11)(C++11)
berechnet den inversen hyperbolischen Kosinus (arcosh(x))
(Funktion) [bearbeiten]
(C++11)(C++11)
berechnet den hyperbolischen Tangens (tanh(x))
(Funktion) [bearbeiten]
berechnet den Area Hyperbolicus Tangens einer komplexen Zahl (artanh(z))
(function template) [edit]
C-Dokumentation für atanh

[edit] Externe Links

Weisstein, Eric W. "Inverse Hyperbolic Tangent." From MathWorld — A Wolfram Web Resource.