FREXP |
Mantisse et exposant |
---|---|
Langage C++ | cmath (math.h) |
Syntaxe
float frexp(float x, int *ptrexposant); |
double frexp(double x,int *ptrexposant) |
long double frexp(long double x, int *ptrexposant); |
Paramètres
Nom | Description |
---|---|
x | Ce paramètre permet d'indiquer l'expression contenant le nombre à traiter |
ptrexposant | Ce paramètre permet d'indiquer l'exposant à retourner |
Description
Cette fonction permet d'effectuer la séparation de la mantisse et de l'exposant.
Remarques
- La fonction frexp() décompose le nombre x en une mantisse comprise entre 0,5 et moins de 1, et un exposant entier tel que x = mantissa * 2ptrexposant. La mantisse est retournée par la fonction, et l'exposant est entreposé dans la variable pointée par ptrexposant.
- Gère les nombres négatifs : frexp fonctionne aussi avec les nombres négatifs. Si x est négatif, la mantisse retournée est également négative, mais l'exposant reste positif ou nul. Exemple :
- Comportement pour x = 0 : Si x est 0.0, la fonction retourne 0.0 comme mantisse et entrepose 0 dans exp. Cela permet d'éviter des erreurs et de traiter correctement les cas où x est nul sans risque de division par zéro.
- Relation avec ldexp : frexp est souvent utilisée avec ldexp, effectuant l'opération inverse :
- Version pour différents types flottants : Il existe plusieurs surcharges de frexp pour différents types :
- Utilité en arithmétique flottante : frexp est très utile en arithmétique flottante pour : normaliser des nombres, extraire des exposants, analyser la précision d'un calcul et éviter des dépassements de capacité (overflow) en réduisant temporairement la magnitude des nombres avant certaines opérations.
donnera une mantisse négative et un exposant positif.
Cela est utile en calcul scientifique et en traitement numérique pour manipuler les exposants de manière efficace.
Cela garantit la compatibilité avec différents niveaux de précision en fonction des besoins.
Exemple
Voici un exemple de la génération des valeurs de cette fonction :

on obtiendra le résultat suivant :
frexp(1) = (0.5000,1)frexp(2) = (0.5000,2)
frexp(3) = (0.7500,2)
frexp(4) = (0.5000,3)
frexp(5) = (0.6250,3)
frexp(6) = (0.7500,3)
frexp(7) = (0.8750,3)
frexp(8) = (0.5000,4)
frexp(9) = (0.5625,4)
Voir également
Langage de programmation - C++ - Référence de procédures et fonctions - exp
Langage de programmation - C++ - Référence de procédures et fonctions - ldexp
Langage de programmation - C - Référence de procédures et fonctions - frexp
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 732.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 113.