#include <math.h> // <cmath> en C++
double fdim( double x, double y ); // C99
float fdimf( float x, float y ); // C99
long double fdiml( long double x, long double y ); // C99
Ces trois fonctions permettent de calculer la différence positive de deux valeurs à virgule flottante. La différence positive est définie ainsi : max(x-y, 0).
La différence entre ces trois méthodes réside dans le type de données utilisé pour le paramètre et la valeur de retour (double, float ou long double). Elles ont été ajoutées à partir de C99.
Si les deux paramètres sont bien des valeurs à virgule flottante valides, ces fonction renvoient la différence positive, soit max(x-y, 0). Si x ou y ou les deux paramètres valent NAN, ces fonctions renvoient NAN.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <math.h> #include <stdio.h> #include <stdlib.h> int main() { // On commence par tester un appel avec des valeurs NaN (Not a Number). double result = fdim(NAN, NAN); if ( isnan(result) ) { printf( "%lf\n", result ); } // On test un cas ou x est supérieur à y result = fdim( 5.0, 2.5 ); printf( "%lf\n", result ); // Un dernier test ou y est supérieur à x result = fdim( 3.3, 10 ); printf( "%lf\n", result ); 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 nan 2.500000 0.000000 $>
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 :