Participer au site avec un Tip
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 logb, logbf et logbl

Entête à inclure

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

Fonctions logb, logbf et logbl

double ilogb( double x );                     // C99
float ilogbf( float x );                      // C99
long double ilogbl( long double x );          // C99

Ces trois fonctions permettent d'extraire un exposant entier, en base définie pas la constante FTL_RADIX, de la valeur passée en paramètre. L'exposant retourné correspond au plus grand entier tel que FLT_RADIXresult <= x. La valeur de retour sera exprimée par l'un des trois types flottants et non par un type entier.

la constante FLT_RADIX est définie dans l'entête <float.h>. Sur la plupart des plateformes, FLT_RADIX est égal à 2, ce qui rend cette fonction équivalente à log2 pour des valeurs positives.

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).

si aucune erreur ne se produit, ces trois fonctions ont un comportement équivalent aux fonctions ilogb, ilogbf et ilogbl, à la différence du type utilisé pour exprimer la valeur de retour.

Paramètre

Valeur de retour

Exemple de code

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
#include <float.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

int main( int argc, char * argv[] ) {

    double x = 12.5; 
    double exposant = logb( x );
 
    printf( "L'exposant entier de %g, en base %d est %g.\n", x, FLT_RADIX, exposant );

    return EXIT_SUCCESS;
}
Exemple d'utilisation des fonctions logb.

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
L'exposant entier de 12.5, en base 2 est 3.
$>

Sujets connexes

Les fonctions exp, expf et expl
Les fonctions exp2, exp2f et exp2l
Les fonctions exp10, exp10f et exp10l
Les fonctions expm1, expm1f et expm1l

Les fonctions ilogb, ilogbf et ilogbl
Les fonctions llogb, llogbf et llogbl
Les fonctions log10, log10f et log10l
Les fonctions log2, log2f et log2l
Les fonctions scalbn, scalbnf et scalbnl
Les fonctions scalbln, scalblnf et scalblnl