LDEXP |
Produit de l'exposant |
---|---|
Langage C++ | cmath (math.h) |
Syntaxe
float ldexp(float m, int exp); |
double ldexp(double m,int exp); |
long double ldexp(long double m, int exp); |
Paramètres
Nom | Description |
---|---|
m | Ce paramètre permet d'indiquer le nombre contenant l'expression multipliant l'expression |
exp | Ce paramètre permet d'indiquer l'exposant en base 2 |
Description
Cette fonction retourne la valeur de produit par la puissance 2.
Remarques
- La fonction ldexp() renvoie la valeur de m * 2exp. Si un débordement se produit, la constante HUGE_VAL est retourné.
- Définition et utilité : La fonction ldexp fait partie de la bibliothèque <cmath> en C++ et permet de calculer la valeur d'un nombre réel multiplié par une puissance de deux. Elle est utilisée pour effectuer des calculs de type x * 2^exp, où x est un nombre réel (ou flottant) et exp est un exposant entier. Cette fonction est particulièrement utile dans les calculs numériques impliquant des puissances de deux, comme dans les applications de traitement de signal, d'algorithmique, et de représentation en virgule flottante.
- Relation avec les représentations en virgule flottante : La fonction ldexp est particulièrement utile pour la manipulation de nombres en virgule flottante, étant souvent représentés sous la forme d'un mantisse et d'un exposant (notamment dans les systèmes à base de normes IEEE pour les nombres à virgule flottante). Elle permet de recréer ce comportement en manipulant directement les puissances de deux, ce qui est utile dans les applications où la performance ou la précision des calculs est essentielle.
- Calcul de puissances de 2 : ldexp est une fonction plus précise et performante pour effectuer des calculs impliquant des puissances de 2 que d'autres approches, comme celles basées sur l'utilisation d'opérateurs arithmétiques. Par exemple, au lieu de faire x * pow(2, exp) pour obtenir x * 2^exp, l'utilisation de ldexp(x, exp) est plus rapide et précise, car elle est directement optimisée pour cette tâche particulière.
- Utilisation dans des calculs numériques et scientifiques : ldexp est largement utilisée dans des domaines numériques et scientifiques, où des calculs impliquent fréquemment des puissances de 2. Elle est couramment employée dans les algorithmes de transformation de données, les simulations physiques, ou les calculs statistiques nécessitant une manipulation directe des exposants dans des opérations mathématiques. Par exemple, elle peut être utilisée dans des algorithmes d'approximation ou de calculs d'erreur.
- Comportement avec les valeurs négatives et les exposants négatifs : Lorsque l'exposant est négatif, la fonction ldexp produit un résultat en divisant le nombre par une puissance de deux. Par exemple, pour ldexp(3.5, -2), cela donne 3.5 / 2^2 = 0.875. Cela permet de manipuler des fractions de manière élégante et optimisée. Par conséquent, ldexp est capable de traiter aussi bien des grands nombres que des petits nombres (y compris les sous-unités), ce qui la rend extrêmement flexible dans les calculs impliquant des puissances de deux, tant positives que négatives.
- Précision et limitations : Comme pour toute fonction de calcul impliquant des opérations sur des nombres à virgule flottante, la fonction ldexp peut être sujette à des erreurs d'arrondi, particulièrement lorsqu'elle est utilisée avec des nombres très grands ou très petits, proches des limites de la précision numérique. Il est important de garder à l'esprit que, bien que ldexp soit précise, les calculs avec des exposants extrêmes peuvent entraîner des pertes de précision à cause des limitations inhérentes à la représentation des nombres à virgule flottante en mémoire.
Exemples
Voici un exemple montrant le résultat de cette fonction :

on obtiendra le résultat suivant :
ldexp(1, 1) = 2, ldexp(1, 2) = 4, ldexp(1, 3) = 8ldexp(2, 1) = 4, ldexp(2, 2) = 8, ldexp(2, 3) = 16
ldexp(3, 1) = 6, ldexp(3, 2) = 12, ldexp(3, 3) = 24
ldexp(4, 1) = 8, ldexp(4, 2) = 16, ldexp(4, 3) = 32
ldexp(5, 1) = 10, ldexp(5, 2) = 20, ldexp(5, 3) = 40
ldexp(6, 1) = 12, ldexp(6, 2) = 24, ldexp(6, 3) = 48
ldexp(7, 1) = 14, ldexp(7, 2) = 28, ldexp(7, 3) = 56
ldexp(8, 1) = 16, ldexp(8, 2) = 32, ldexp(8, 3) = 64
ldexp(9, 1) = 18, ldexp(9, 2) = 36, ldexp(9, 3) = 72
Voici un exemple simple montrant comment utiliser ldexp pour calculer la valeur d'un nombre multiplié par une puissance de deux :
Ce programme affichera "Le résultat de 3.5 * 2^2 est 14", car 3.5 multiplié par 4 donne 14.
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 - modf
Langage de programmation - C - Référence de procédures et fonctions - ldexp
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 156.