#include <math.h> // <cmath> en C++
double exp10m1( double x ); // C2x
float exp10m1f( float x ); // C2x
long double exp10m1l( long double x ); // C2x
Ces trois fonctions permettent de calculer la value de 10 élevé à la puissance x, moins 1. La différence entre ces trois fonctions réside dans le type de données utilisé pour le paramètre et la valeur de retour (double, float ou long double).
-std=c2x
.
Notez aussi que ces trois fonctions sont déjà présentes dans certains compilateurs actuels.
Ces fonctions renvoient 10x-1, si la magnitude de x est raisonnable (en fonction du type considéré).
Si la magnitude de x est trop grande (en fonction du type considéré) une valeur HUGE_VAL
sera produite
et la variable errno
sera initialisée à la valeur ERANGE
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <math.h> #include <stdio.h> #include <stdlib.h> int main() { printf( "exp10m1(0) == %g\n", exp10m1(0) ); printf( "exp10m1(1) == %g\n", exp10m1(1) ); printf( "exp10m1(2) == %g\n", exp10m1(2) ); printf( "exp10m1(3) == %g\n", exp10m1(3) ); double res = exp10m1( 1000000 ); if ( res == HUGE_VAL ) { printf( "exp10m1(1000000) - errno == ERANGE: %d\n", errno == ERANGE ); } 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 -std=c2x $> ./sample exp10m1(0) == 0 exp10m1(1) == 9 exp10m1(2) == 99 exp10m1(3) == 999 exp10m1(1000000) - errno == ERANGE: 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 :