2.5 Repr´ esentation des nombres en machine
53
de F : il s’agit de la notion de chiffre de garde sur laquelle on reviendra `
a la
fin de cette section.
En particulier, si ◦ d´ esigne l’addition, on a ∀x, y ∈ R (voir Exercice 10)
| x + y − (x + y)|
|x + y|
≤ u(1 + u)
|x| + |y|
|x + y|
+ u,
(2.37)
et donc l’erreur relative associ´ ee ` a la somme sera petite, ` a moins que x + y
ne soit lui-mˆ eme petit. La somme de deux nombres proches en module mais
de signes oppos´ es m´ erite un commentaire particulier : dans ce cas, en effet,
x + y peut ˆ etre petit, ce qui g´ en` ere ce qu’on appelle les erreurs d’annulation
(comme le montre l’Exemple 2.6).
Il est important de remarquer que certaines propri´ et´ es de l’arithm´ etique classique sont conserv´ ees quand on passe ` a l’arithm´ etique des flottants
(comme, par exemple, la commutativit´ e de la somme ou du produit de deux
termes), tandis que d’autres sont perdues. C’est le cas de l’associativit´ e de la
somme : on peut en effet montrer (voir Exercice 11) qu’en g´ en´ eral
x + (y + z) = (x + y) + z.
Nous d´ esignerons par flop (de l’anglais floating operation) une op´ eration ´ el´ ementaire `
a virgule flottante (addition, soustraction, multiplication ou division). Le lecteur prendra garde au fait que certains auteurs d´ esignent par flop
une op´ eration de la forme a + b · c. Selon la convention que nous adoptons,
un produit scalaire entre deux vecteurs de longueur n requiert 2n − 1 flops,
un produit matrice-vecteur 2(m − 1)n flops si la matrice est de taille n × m
et enfin, un produit matrice-matrice 2(r − 1)mn flops si les matrices sont
respectivement de tailles m × r et r × n.
Remarque 2.5 (arithm´ etique IEC559) Le standard IEC559 d´ efinit aussi une arithm´ etique ferm´ ee sur F, ce qui signifie que toute op´ eration sur F
produit un r´ esultat qui peut ˆ etre repr´ esent´ e dans le syst` eme, mˆ eme s’il n’est
pas n´ ecessairement d´ efini d’un point de vue math´ ematique. Par exemple, la
Table 2.3 montre les r´ esultats obtenus dans des situations exceptionnelles.
La pr´ esence d’un N aN (Not a Number) dans une suite d’op´ erations implique
automatiquement que le r´ esultat est un N aN. L’acceptation g´ en´ erale de ce
standard est encore en cours.
Mentionnons que tous les syst` emes de flottants ne satisfont pas (2.36). Une
des raisons principales est l’absence de chiffre de garde dans la soustraction.
Le chiffre de garde est un bit suppl´ ementaire qui entre en jeu au niveau de
la mantisse quand une soustraction est effectu´ ee entre deux flottants. Pour
montrer l’importance du chiffre de garde, consid´ erons l’exemple suivant avec
53
de F : il s’agit de la notion de chiffre de garde sur laquelle on reviendra `
a la
fin de cette section.
En particulier, si ◦ d´ esigne l’addition, on a ∀x, y ∈ R (voir Exercice 10)
| x + y − (x + y)|
|x + y|
≤ u(1 + u)
|x| + |y|
|x + y|
+ u,
(2.37)
et donc l’erreur relative associ´ ee ` a la somme sera petite, ` a moins que x + y
ne soit lui-mˆ eme petit. La somme de deux nombres proches en module mais
de signes oppos´ es m´ erite un commentaire particulier : dans ce cas, en effet,
x + y peut ˆ etre petit, ce qui g´ en` ere ce qu’on appelle les erreurs d’annulation
(comme le montre l’Exemple 2.6).
Il est important de remarquer que certaines propri´ et´ es de l’arithm´ etique classique sont conserv´ ees quand on passe ` a l’arithm´ etique des flottants
(comme, par exemple, la commutativit´ e de la somme ou du produit de deux
termes), tandis que d’autres sont perdues. C’est le cas de l’associativit´ e de la
somme : on peut en effet montrer (voir Exercice 11) qu’en g´ en´ eral
x + (y + z) = (x + y) + z.
Nous d´ esignerons par flop (de l’anglais floating operation) une op´ eration ´ el´ ementaire `
a virgule flottante (addition, soustraction, multiplication ou division). Le lecteur prendra garde au fait que certains auteurs d´ esignent par flop
une op´ eration de la forme a + b · c. Selon la convention que nous adoptons,
un produit scalaire entre deux vecteurs de longueur n requiert 2n − 1 flops,
un produit matrice-vecteur 2(m − 1)n flops si la matrice est de taille n × m
et enfin, un produit matrice-matrice 2(r − 1)mn flops si les matrices sont
respectivement de tailles m × r et r × n.
Remarque 2.5 (arithm´ etique IEC559) Le standard IEC559 d´ efinit aussi une arithm´ etique ferm´ ee sur F, ce qui signifie que toute op´ eration sur F
produit un r´ esultat qui peut ˆ etre repr´ esent´ e dans le syst` eme, mˆ eme s’il n’est
pas n´ ecessairement d´ efini d’un point de vue math´ ematique. Par exemple, la
Table 2.3 montre les r´ esultats obtenus dans des situations exceptionnelles.
La pr´ esence d’un N aN (Not a Number) dans une suite d’op´ erations implique
automatiquement que le r´ esultat est un N aN. L’acceptation g´ en´ erale de ce
standard est encore en cours.
Mentionnons que tous les syst` emes de flottants ne satisfont pas (2.36). Une
des raisons principales est l’absence de chiffre de garde dans la soustraction.
Le chiffre de garde est un bit suppl´ ementaire qui entre en jeu au niveau de
la mantisse quand une soustraction est effectu´ ee entre deux flottants. Pour
montrer l’importance du chiffre de garde, consid´ erons l’exemple suivant avec
