Namespaces
Variants

expm1, expm1f, expm1l

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
(C23)
(C99)
expm1
(C99)
(C23)
(C23)

Power functions
Trigonometric and hyperbolic functions
Nearest integer floating-point
(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
Decimal re-encoding functions
Total order and payload functions
Classification
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
Arguments and return values
Error handling
Fast operation indicators
Défini dans l'en-tête <math.h>
float expm1f ( float arg ) ;
(1) (depuis C99)
double expm1 ( double arg ) ;
(2) (depuis C99)
long double expm1l ( long double arg ) ;
(3) (depuis C99)
Défini dans l'en-tête <tgmath.h>
#define expm1( arg )
(4) (depuis C99)
1-3) Calcule e (le nombre d'Euler, 2.7182818 ) élevé à la puissance donnée arg , moins 1.0 . Cette fonction est plus précise que l'expression exp ( arg ) - 1.0 si arg est proche de zéro.
4) Macro générique de type : Si arg a le type long double , expm1l est appelé. Sinon, si arg a un type entier ou le type double , expm1 est appelé. Sinon, expm1f est appelé.

Table des matières

Paramètres

arg - valeur en virgule flottante

Valeur de retour

Si aucune erreur ne se produit e arg
-1
est retourné.

Si une erreur de plage due à un dépassement de capacité se produit, +HUGE_VAL , +HUGE_VALF , ou +HUGE_VALL est renvoyé.

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'implémentation prend en charge l'arithmétique à virgule flottante IEEE (IEC 60559),

  • Si l'argument est ±0, il est retourné, non modifié
  • Si l'argument est -∞, -1 est retourné
  • Si l'argument est +∞, +∞ est retourné
  • Si l'argument est NaN, NaN est retourné

Notes

Les fonctions expm1 et log1p sont utiles pour les calculs financiers, par exemple, lors du calcul de petits taux d'intérêt quotidiens : (1+x) n
-1
peut être exprimé comme expm1 ( n * log1p ( x ) ) . Ces fonctions simplifient également l'écriture de fonctions hyperboliques inverses précises.

Pour le type compatible IEEE double , un dépassement de capacité est garanti si 709.8 < arg .

Exemple

#include <errno.h>
#include <fenv.h>
#include <float.h>
#include <math.h>
#include <stdio.h>
// #pragma STDC FENV_ACCESS ON
int main(void)
{
    printf("expm1(1) = %f\n", expm1(1));
    printf("Intérêts gagnés en 2 jours sur 100$, composés quotidiennement à 1%%\n"
           " sur un calendrier 30/360 = %f\n",
           100*expm1(2*log1p(0.01/360)));
    printf("exp(1e-16)-1 = %g, mais expm1(1e-16) = %g\n",
           exp(1e-16)-1, expm1(1e-16));
    // valeurs spéciales
    printf("expm1(-0) = %f\n", expm1(-0.0));
    printf("expm1(-Inf) = %f\n", expm1(-INFINITY));
    // gestion d'erreur
    errno = 0; feclearexcept(FE_ALL_EXCEPT);
    printf("expm1(710) = %f\n", expm1(710));
    if (errno == ERANGE)
        perror("    errno == ERANGE");
    if (fetestexcept(FE_OVERFLOW))
        puts("    FE_OVERFLOW raised");
}

Sortie possible :

expm1(1) = 1.718282
Intérêts gagnés en 2 jours sur 100$, composés quotidiennement à 1%
 sur un calendrier 30/360 = 0.005556
exp(1e-16)-1 = 0, mais expm1(1e-16) = 1e-16
expm1(-0) = -0.000000
expm1(-Inf) = -1.000000
expm1(710) = inf
    errno == ERANGE: Résultat trop grand
    FE_OVERFLOW raised

Références

  • Norme C23 (ISO/CEI 9899:2024) :
  • 7.12.6.3 Les fonctions expm1 (p: TBD)
  • 7.25 Mathématiques génériques de type <tgmath.h> (p: TBD)
  • F.10.3.3 Les fonctions expm1 (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.12.6.3 Les fonctions expm1 (p: 177)
  • 7.25 Mathématiques génériques <tgmath.h> (p: 272-273)
  • F.10.3.3 Les fonctions expm1 (p: 379)
  • Norme C11 (ISO/IEC 9899:2011) :
  • 7.12.6.3 Les fonctions expm1 (p: 243)
  • 7.25 Mathématiques génériques <tgmath.h> (p: 373-375)
  • F.10.3.3 Les fonctions expm1 (p: 521)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.12.6.3 Les fonctions expm1 (p. 223-224)
  • 7.22 Mathématiques génériques de type <tgmath.h> (p. 335-337)
  • F.9.3.3 Les fonctions expm1 (p. 458)

Voir aussi

(C99) (C99)
calcule e élevé à la puissance donnée ( e x )
(fonction)
(C99) (C99) (C99)
calcule 2 élevé à la puissance donnée ( 2 x )
(fonction)
(C99) (C99) (C99)
calcule le logarithme naturel (base- e ) de 1 plus le nombre donné ( ln(1+x) )
(fonction)