142
Le logiciel R - Maˆ ıtriser le langage
> 0.90000000000000002220446049250313080847263336181641 - 0.9
[1] 0
Renvoi
La lecture de [10] pourra s’av´ erer utile dans ce contexte.
3.9.2.4 Limite de cette repr´ esentation due ` a l’exposant
• Plus petit et plus grand nombre pouvant ˆ etre repr´ esent´ e.
Un autre probl` eme entraˆ ın´ e par la repr´ esentation en virgule flottante est le
suivant. Puisque l’exposant e de la repr´ esentation
x = (−1)
s (1 + f )2
(e−1023)
(3.3)
est forc´ ement born´ e (car cod´ e sur 11 bits), il existe un plus petit et un plus
grand nombre r´ eel qu’il est possible de repr´ esenter ` a l’aide d’un ordinateur
donn´ e. La tentative de repr´ esenter un nombre en dehors de cette plage devrait
produire, respectivement, un d´ ebordement par valeur inf´ erieure (underflow ) ou
par valeur sup´ erieure (overflow ). R est toutefois bien con¸ cu et renverra plutˆ ot
-Inf ou +Inf. Illustrons ceci via quelques instructions R.
> .Machine$double.xmin # Plus petit nombre réel pouvant être
# codé:
[1] 2.225074e-308
> # que l’on retrouve par:
> s <- 0; e <- 0; f <- sum(2^(-(1:52)))
> x <- (-1)^s * 2^(e-1023) * (1+f); x
[1] 2.225074e-308
> .Machine$double.xmax # Plus grand nombre réel pouvant être
# codé:
[1] 1.797693e+308
> # que l’on retrouve par:
> s <- 0; e <- 2046; f <- sum(2^(-(1:52)))
> x=(-1)^s * 2^(e-1023) * (1+f); x
[1] 1.797693e+308
Astuce
Le package Brobdingnag permet de g´ erer des nombres beaucoup plus
grands.
• Trous entre deux nombres.
Une derni` ere mise en garde importante vaut la peine d’ˆ etre faite. Il est
en effet important de noter qu’il n’est pas possible d’obtenir certains nombres
Précédent

- 176/701

Suivant