#include <math.h> // <cmath> en C++
double log1p( double x ); // C99 double logp1( double x ); // C2x
float log1pf( float x ); // C99 float logp1f( float x ); // C2x
long double log1pl( long double x ); // C99 long double logp1l( long double x ); // C2x
Ces six fonctions permettent de calculer le logarithme naturel (ou népérien) de 1 plus la valeur passée en paramètre :
logp1(x)
équivaut à log(1+x)
.
log(e) == 1
.
Les trois fonctions commençant par log1p
existent depuis C99. Pour plus de cohérence avec des nouvelles fonctions introduitent par
la version C2x du standard, on vous propose des alias commençant par logp1
: elles sont équivalentes aux fonctions d'origines.
Pour chaque triplet, la différence entre ces fonctions réside dans le type de données utilisé pour le paramètre et la valeur de retour
(double, float ou long double).
Ces fonctions renvoient le logarithme naturel (népérien) de 1 plus la valeur spécifiée en paramètre (log(1+x)
).
Si x est une valeur inférieure à -1, ces fonctions renvoient une valeur NaN et la variable errno
sera initialisée à la valeur EDOM
.
Si x vaut -1, ces fonctions renvoient une valeur infinie et la variable errno
sera initialisée
à la valeur ERANGE
.
L'exemple de code suivant permet de calculer le nombre de chiffres utilisés pour exprimer un entier positif.
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <errno.h> #include <math.h> #include <stdio.h> #include <stdlib.h> int main() { double lg = log1p( M_E - 1 ); printf( "log1p(e-1) == %g\n", lg ); return EXIT_SUCCESS; } |
Il est à noter que la librairie mathématique doit être ajoutée durant l'étape de "link" (édition des liens) de votre exécutable.
Cela se réalise en ajoutant l'option -lm
à votre compilateur GCC. En cas d'utilisation d'un autre compilateur, je vous renvoie vers la documentation de ce dernier.
$> gcc -o sample sample.c -lm $> ./sample log1p(e-1) == 1 $>
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :