#include <math.h> // <cmath> en C++
double exp10( double x ); // C2x
float exp10f( float x ); // C2x
long double exp10l( long double x ); // C2x
Ces trois fonctions permettent de calculer une puissance de 10. 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, 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 19 |
#include <errno.h> #include <math.h> #include <stdio.h> #include <stdlib.h> int main() { printf( "exp10(0) == %g\n", exp10(0) ); printf( "exp10(1) == %g\n", exp10(1) ); printf( "exp10(2) == %g\n", exp10(2) ); printf( "exp10(3) == %g\n", exp10(3) ); double res = exp10( 1000000 ); if ( res == HUGE_VAL ) { printf( "exp10(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 exp10(0) == 1 exp10(1) == 10 exp10(2) == 100 exp10(3) == 1000 exp10(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 :