FREXP |
Mantisse et exposant |
---|---|
Langage C | math.h |
Syntaxe
double frexp(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.
Algorithme
MODULE FREXP(nombre) SI nombre est égal à 0 ALORS RETOURNE 0 pour la mantisse et 0 pour l'exposant FIN SI Déterminer l'exposant tel que (nombre / 2^exposant) soit dans l'intervalle [0.5, 1.0[ Calculer la mantisse comme (nombre / 2^exposant) RETOURNE mantisse et exposant |
Remarques
- Si vous avez un message d'erreur «undefined reference to `frexp'» avec un compilateur «gcc», vous devrez probablement rajouter le paramètre «-lm» afin de lui indiquer qu'il faut inclure les bibliothèques mathématique à vos projets.
- Décomposition des flottants avec frexp : La fonction frexp est utilisée pour décomposer un nombre flottant en une mantisse et un exposant, selon la relation x=mx2e. Elle permet ainsi d'obtenir des parties facilitant des opérations de calculs numériques, notamment pour des algorithmes où la précision de l'exposant est cruciale.
- Fonctionnalité de précision en arithmétique : frexp est particulièrement utile dans les applications nécessitant des calculs précis sur les parties exponentielles de nombres flottants. En extrayant une mantisse et un exposant, elle permet de manipuler la représentation binaire sous-jacente, ce qui est utile pour des calculs scientifiques, graphiques, ou des algorithmes de compression de données.
- Syntaxe et retour de frexp : La syntaxe de frexp prend en paramètre un flottant et un pointeur vers un entier. Elle retourne la mantisse en tant que flottant, et place l'exposant dans la variable pointée. La valeur de la mantisse est toujours comprise entre -1 et 1, ce qui permet un contrôle précis de l'échelle de la partie fractionnaire.
- Traitement des valeurs spéciales avec frexp : La fonction gère correctement les cas spéciaux comme zéro et les nombres très petits. Pour un nombre zéro, elle retourne une mantisse de zéro et un exposant de zéro, évitant ainsi des erreurs de calcul. En revanche, pour des valeurs infinies ou non numériques (NaN), le comportement de frexp peut dépendre des implémentations.
- Comparaison avec modf pour la séparation de parties : Bien que similaire à modf, séparant la partie entière et la partie fractionnaire, frexp est plus adapté aux applications où l'exposant binaire est pertinent. modf retourne les parties entière et fractionnaire d'un flottant, tandis que frexp décompose en termes de puissance de deux, ce qui est optimal pour les opérations binaires.
- Applications en gestion de précision : Dans des situations de précision extrême, comme en calcul numérique ou traitement d'images, frexp est un outil précieux pour éviter les erreurs d'arrondi. En permettant de travailler avec des mantisses normalisées, elle aide à éviter des pertes de précision dans des calculs en double précision.
- Utilisation avec des bibliothèques mathématiques : frexp est souvent combinée avec des fonctions comme ldexp, permettant de reconstituer le nombre original à partir de la mantisse et de l'exposant. Cette approche est courante dans les bibliothèques mathématiques où les flottants doivent être manipulés au niveau de leurs composantes pour les transformations ou la résolution d'équations.
Exemple
Voici un exemple de la génération des valeurs de cette fonction :
Essayer maintenant !
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.
Dernière mise à jour : Mardi, le 28 juillet 2015