Rechercher
 

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 :

Fonctions fdim, fdimf et fdiml

Entête à inclure

#include <math.h>  // <cmath> en C++

Fonctions fdim, fdimf et fdiml

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.

Paramètres

Valeur de retour

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.

Exemple de code

 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;
}
Exemple d'utilisation de la fonction fdim.

Il est a 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
$> 

Sujets connexes

Fonctions fmax, fmaxf et fmaxl
Fonctions fmin, fminf et fminl