Namespaces
Variants

log1p, log1pf, log1pl

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
(C99)
log1p logp1
(C99) (C23)
(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 log1pf ( float arg ) ;
(1) (depuis C99)
double log1p ( double arg ) ;
(2) (depuis C99)
long double log1pl ( long double arg ) ;
(3) (depuis C99)
Défini dans l'en-tête <tgmath.h>
#define log1p( arg )
(4) (depuis C99)
1-3) Calcule le logarithme naturel (base e ) de 1 + arg . Cette fonction est plus précise que l'expression log ( 1 + arg ) si arg est proche de zéro.
4) Macro générique de type : Si arg a le type long double , log1pl est appelé. Sinon, si arg a un type entier ou le type double , log1p est appelé. Sinon, log1pf est appelé.

Table des matières

Paramètres

arg - valeur en virgule flottante

Valeur de retour

Si aucune erreur ne se produit ln(1 + arg) 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é.

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 .

Une erreur de domaine se produit si arg est inférieur à -1 .

Une erreur de pôle peut se produire si arg est -1 .

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 l'argument est inférieur à -1, NaN est retourné et FE_INVALID est déclenché.
  • 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.

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("log1p(0) = %f\n", log1p(0));
    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("log(1+1e-16) = %g, mais log1p(1e-16) = %g\n",
           log(1+1e-16), log1p(1e-16));
    // valeurs spéciales
    printf("log1p(-0) = %f\n", log1p(-0.0));
    printf("log1p(+Inf) = %f\n", log1p(INFINITY));
    // gestion d'erreur
    errno = 0; feclearexcept(FE_ALL_EXCEPT);
    printf("log1p(-1) = %f\n", log1p(-1));
    if (errno == ERANGE)
        perror("    errno == ERANGE");
    if (fetestexcept(FE_DIVBYZERO))
        puts("    FE_DIVBYZERO raised");
}

Sortie possible :

log1p(0) = 0.000000
Intérêts gagnés en 2 jours sur 100$, composés quotidiennement à 1%
 sur un calendrier 30/360 = 0.005556
log(1+1e-16) = 0, mais log1p(1e-16) = 1e-16
log1p(-0) = -0.000000
log1p(+Inf) = Inf
log1p(-1) = -Inf
    errno == ERANGE: Résultat trop grand
    FE_DIVBYZERO raised

Références

  • Norme C23 (ISO/CEI 9899:2024) :
  • 7.12.6.9 Les fonctions log1p (p: TBD)
  • 7.25 Mathématiques génériques de type <tgmath.h> (p: TBD)
  • F.10.3.9 Les fonctions log1p (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.12.6.9 Les fonctions log1p (p: TBD)
  • 7.25 Mathématiques génériques de type <tgmath.h> (p: TBD)
  • F.10.3.9 Les fonctions log1p (p: TBD)
  • Norme C11 (ISO/CEI 9899:2011) :
  • 7.12.6.9 Les fonctions log1p (p: 245)
  • 7.25 Mathématiques génériques <tgmath.h> (p: 373-375)
  • F.10.3.9 Les fonctions log1p (p: 522)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.12.6.9 Les fonctions log1p (p: 226)
  • 7.22 Mathématiques génériques <tgmath.h> (p: 335-337)
  • F.9.3.9 Les fonctions log1p (p: 459)

Voir aussi

(C99) (C99)
calcule le logarithme naturel (base e ) ( ln(x) )
(fonction)
calcule le logarithme décimal (base 10 ) ( log 10 (x) )
(fonction)
(C99) (C99) (C99)
calcule le logarithme base-2 ( log 2 (x) )
(fonction)
(C99) (C99) (C99)
calcule e élevé à la puissance donnée, moins un ( e x -1 )
(fonction)