Namespaces
Variants

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

From cppreference.net
Common mathematical functions
Nearest integer floating point operations
(C++11)
(C++11)
(C++11) (C++11) (C++11)
Floating point manipulation functions
(C++11) (C++11)
(C++11)
(C++11)
Classification and comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
Défini dans l'en-tête <cmath>
(1)
float atanh ( float num ) ;

double atanh ( double num ) ;

long double atanh ( long double num ) ;
(jusqu'à C++23)
/*floating-point-type*/
atanh ( /*floating-point-type*/ num ) ;
(depuis C++23)
(constexpr depuis C++26)
float atanhf ( float num ) ;
(2) (depuis C++11)
(constexpr depuis C++26)
long double atanhl ( long double num ) ;
(3) (depuis C++11)
(constexpr depuis C++26)
Surcharge SIMD (depuis C++26)
Défini dans l'en-tête <simd>
template < /*math-floating-point*/ V >

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

atanh ( const V & v_num ) ;
(S) (depuis C++26)
Défini dans l'en-tête <cmath>
template < class Integer >
double atanh ( Integer num ) ;
(A) (constexpr depuis C++26)
1-3) Calcule la tangente hyperbolique inverse de num . La bibliothèque fournit des surcharges de std::atanh pour tous les types à virgule flottante non qualifiés cv comme type du paramètre. (depuis C++23)
S) La surcharge SIMD effectue un calcul std::atanh élément par élément sur v_num .
(Voir math-floating-point et deduced-simd-t pour leurs définitions.)
(depuis C++26)
A) Des surcharges supplémentaires sont fournies pour tous les types entiers, qui sont traités comme double .
(depuis C++11)

Table des matières

Paramètres

num - valeur à virgule flottante ou entière

Valeur de retour

Si aucune erreur ne se produit, l'arc tangente hyperbolique de num ( tanh -1
(num)
, ou artanh(num) ), est retourné.

Si une erreur de domaine se produit, une valeur définie par l'implémentation est retournée (NaN là où supporté).

Si une erreur de pôle se produit, ±HUGE_VAL , ±HUGE_VALF , ou ±HUGE_VALL est retourné (avec le signe correct).

Si une erreur de plage se produit en raison d'un dépassement inférieur, le résultat correct (après arrondi) est retourné.

Gestion des erreurs

Les erreurs sont signalées comme spécifié dans math_errhandling .

Si l'argument n'est pas sur l'intervalle [ - 1 , + 1 ] , une erreur de domaine se produit.

Si l'argument est ±1, une erreur de pôle se produit.

Si l'implémentation prend en charge l'arithmétique à virgule flottante IEEE (IEC 60559),

  • si l'argument est ±0, il est retourné inchangé.
  • si l'argument est ±1, ±∞ est retourné et FE_DIVBYZERO est déclenché.
  • si |num|>1 , NaN est retourné et FE_INVALID est déclenché.
  • si l'argument est NaN, NaN est retourné.

Notes

Bien que la norme C (à laquelle le C++ se réfère pour cette fonction) nomme cette fonction « tangente hyperbolique inverse », les fonctions inverses des fonctions hyperboliques sont les fonctions d'aire. Leur argument est l'aire d'un secteur hyperbolique, et non un arc. Le nom correct est « tangente hyperbolique inverse » (utilisé par POSIX) ou « tangente hyperbolique d'aire ».

POSIX spécifie qu'en cas de dépassement inférieur, num est retourné non modifié, et si cela n'est pas pris en charge, une valeur définie par l'implémentation non supérieure à DBL_MIN , FLT_MIN , et LDBL_MIN est retournée.

Les surcharges supplémentaires ne sont pas requises d'être fournies exactement comme (A) . Elles doivent seulement être suffisantes pour garantir que pour leur argument num de type entier, std :: atanh ( num ) ait le même effet que std :: atanh ( static_cast < double > ( num ) ) .

Exemple

#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';
    // gestion des erreurs
    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 levée\n";
}

Sortie possible :

atanh(0) = 0
atanh(-0) = -0
atanh(0.9) = 1.47222
atanh(-1) = -inf
    errno == ERANGE: Résultat numérique hors limites
    FE_DIVBYZERO levée

Voir aussi

(C++11) (C++11) (C++11)
calcule le sinus hyperbolique inverse ( arsinh(x) )
(fonction)
(C++11) (C++11) (C++11)
calcule le cosinus hyperbolique inverse ( arcosh(x) )
(fonction)
(C++11) (C++11)
calcule la tangente hyperbolique ( tanh(x) )
(fonction)
calcule la tangente hyperbolique inverse d'un nombre complexe ( artanh(z) )
(modèle de fonction)

Liens externes

Weisstein, Eric W. "Inverse Hyperbolic Tangent." De MathWorld — Une ressource web Wolfram.