61
Master Calcul Haute Performance, Simulation UniversitØ de Perpignan Via Domitia Semestre 9 (M2) AnnØe universitaire 2015/2016 Validation NumØrique ReprØsentation des nombres, arithmØtique ottante, norme IEEE 754 Guillaume Revy [email protected] UniversitØ de Perpignan Via Domitia Guillaume Revy (Univ. de Perpignan Via Domitia) ReprØsentation des nombres, arithmØtique ottante, norme IEEE 754 1/37

Représentation des nombres, arithmétique flottante, norme IEEE 754

  • Upload
    lythien

  • View
    265

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Représentation des nombres, arithmétique flottante, norme IEEE 754

Master Calcul Haute Performance, Simulation Université de Perpignan Via DomitiaSemestre 9 (M2) Année universitaire 2015/2016

Validation Numérique

Représentation des nombres, arithmétique flottante,norme IEEE 754

Guillaume [email protected]

Université de Perpignan Via Domitia

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 1/37

Page 2: Représentation des nombres, arithmétique flottante, norme IEEE 754

Organisation du cours “Validation Numérique”

Organisation :

I 16h de coursI 16h de TD/TP

2 intervenants :

I G. Revy 8 séances de 2h de CM/TD/TPI Ph. Langlois 8 séances de 2h de CM/TD/TP

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 2/37

Page 3: Représentation des nombres, arithmétique flottante, norme IEEE 754

Plan du cours

1. Introduction générale

2. Représentation des nombres entiers et réels

3. Norme IEEE 754

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 3/37

Page 4: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Plan du cours

1. Introduction générale

2. Représentation des nombres entiers et réels

3. Norme IEEE 754

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 4/37

Page 5: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

IntroductionL’informatique est, aujourd’hui, omniprésente

I ordinateurs personnels (bureautique, audio-vidéo, jeux vidéos, ...)I outils pour la calcul numérique, de simulation, modélisation,I systèmes embarqués (audio-vidéo, téléphonie mobile, tablettes PC, ...)

En informatique, les ordinateurs effectuent des calculs

I puis-je avoir confiance en les résultats de mon ordinateur ?

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 5/37

Page 6: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Bourse de Vancouver (1982)

1982 : création d’un nouvel indice de valeur initiale 1000

I recalculé après chaque transactionI tronqué après le 3e chiffre

Au bout de 22 mois : valeur calculée = 524.881 au lieu de 1098.811

Source du problème : la valeur calculée était tronquée au lieu d’être arrondie

I dans ce cas : toutes les erreurs sont de même signeI aucune compensation possible

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 6/37

Page 7: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Bourse de Vancouver (1982)

1982 : création d’un nouvel indice de valeur initiale 1000

I recalculé après chaque transactionI tronqué après le 3e chiffre

Au bout de 22 mois : valeur calculée = 524.881 au lieu de 1098.811

Source du problème : la valeur calculée était tronquée au lieu d’être arrondie

I dans ce cas : toutes les erreurs sont de même signeI aucune compensation possible

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 6/37

Page 8: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Missile Patriote (25 février 1991)

Échec lors de l’interception d’un Scud (Dharan, Arabie Saoudite)

I bilan : 28 morts / 100 blessés

Compteur dans la batterie du missile : ajout de 1/10 tous les dixièmes de secondeI 1/10 non représentable exactement en machineI 1/10 ≈ (0.000110011001100110011001100110011001...)2

I erreur (24 bits) ≈ 9.5×10−8 par ajout de 1/10I au bout de 100h : erreur ≈ 0.34 secondes

Vitesse du missile Scud : 1676 m/s

I au bout de 100h : erreur ≈ 568 m

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 7/37

Page 9: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Premier vol d’Ariane 5 (4 juin 1996)

Après 39 sec. de vol : autodestruction de la fusée

I coût de la fusée / du cargot ≈ 500 millions $I coût du développement ≈ 7 milliard $

Système de Référence Inertielle (SRI) : calcule la position, la vitesse etl’inclinaison de la fusée, en fonction de mesures d’accélération et de rotation

I identique à celui d’Ariane 4I accélération 5 fois plus élevée

Forte accélération de la fusée dépassement de capacité lors du calcul desposition et vitesse

I dû à la conversion d’un nombre virgule flottante 64 bits (double) en nombre entierde 16 bits dans un logiciel en Ada

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 8/37

Page 10: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Autres exemples de bugs

Bug du Pentium (1994) : Bug dans la fonction de division de l’unité de calcul àvirgule flottante du Pentium P5

4 195 835,0 / 3 145 727,0 = 1,333 820 449 136 241 002 <-- valeur correcte4 195 835,0 / 3 145 727,0 = 1,333 739 068 902 037 589 <-- Pentium P5

I coût ≈ 475 millions $

Bug dans Maple 7.0 : Erreur dans la fonction factorielle de Maple 7.0

I 1001!/1000! 1 (au lieu de 1001)

Bug dans Excel 2007 : Problème d’affichage dans Excel 2007

Valeur à calculer Valeur attendue Valeur affichée dans Excel 2007

850 × 77.1

65535

100000

(850 × 77.1) + 1

65536

100001

(850 × 77.1) - 1

65534 65534

I la valeur en machine est correcte seule la valeur affichée est erronée

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 9/37

Page 11: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Autres exemples de bugs

Bug du Pentium (1994) : Bug dans la fonction de division de l’unité de calcul àvirgule flottante du Pentium P5

4 195 835,0 / 3 145 727,0 = 1,333 820 449 136 241 002 <-- valeur correcte4 195 835,0 / 3 145 727,0 = 1,333 739 068 902 037 589 <-- Pentium P5

I coût ≈ 475 millions $

Bug dans Maple 7.0 : Erreur dans la fonction factorielle de Maple 7.0

I 1001!/1000! 1 (au lieu de 1001)

Bug dans Excel 2007 : Problème d’affichage dans Excel 2007

Valeur à calculer Valeur attendue Valeur affichée dans Excel 2007

850 × 77.1

65535

100000

(850 × 77.1) + 1

65536

100001

(850 × 77.1) - 1

65534 65534

I la valeur en machine est correcte seule la valeur affichée est erronée

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 9/37

Page 12: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Autres exemples de bugs

Bug du Pentium (1994) : Bug dans la fonction de division de l’unité de calcul àvirgule flottante du Pentium P5

4 195 835,0 / 3 145 727,0 = 1,333 820 449 136 241 002 <-- valeur correcte4 195 835,0 / 3 145 727,0 = 1,333 739 068 902 037 589 <-- Pentium P5

I coût ≈ 475 millions $

Bug dans Maple 7.0 : Erreur dans la fonction factorielle de Maple 7.0

I 1001!/1000! 1 (au lieu de 1001)

Bug dans Excel 2007 : Problème d’affichage dans Excel 2007

Valeur à calculer Valeur attendue Valeur affichée dans Excel 2007

850 × 77.1

65535

100000

(850 × 77.1) + 1

65536

100001

(850 × 77.1) - 1

65534 65534

I la valeur en machine est correcte seule la valeur affichée est erronée

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 9/37

Page 13: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Autres exemples de bugs

Bug du Pentium (1994) : Bug dans la fonction de division de l’unité de calcul àvirgule flottante du Pentium P5

4 195 835,0 / 3 145 727,0 = 1,333 820 449 136 241 002 <-- valeur correcte4 195 835,0 / 3 145 727,0 = 1,333 739 068 902 037 589 <-- Pentium P5

I coût ≈ 475 millions $

Bug dans Maple 7.0 : Erreur dans la fonction factorielle de Maple 7.0

I 1001!/1000! 1 (au lieu de 1001)

Bug dans Excel 2007 : Problème d’affichage dans Excel 2007

Valeur à calculer Valeur attendue Valeur affichée dans Excel 2007

850 × 77.1

65535

100000

(850 × 77.1) + 1

65536

100001

(850 × 77.1) - 1

65534

65534

I la valeur en machine est correcte seule la valeur affichée est erronée

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 9/37

Page 14: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Autres exemples de bugs

Bug du Pentium (1994) : Bug dans la fonction de division de l’unité de calcul àvirgule flottante du Pentium P5

4 195 835,0 / 3 145 727,0 = 1,333 820 449 136 241 002 <-- valeur correcte4 195 835,0 / 3 145 727,0 = 1,333 739 068 902 037 589 <-- Pentium P5

I coût ≈ 475 millions $

Bug dans Maple 7.0 : Erreur dans la fonction factorielle de Maple 7.0

I 1001!/1000! 1 (au lieu de 1001)

Bug dans Excel 2007 : Problème d’affichage dans Excel 2007

Valeur à calculer Valeur attendue Valeur affichée dans Excel 2007

850 × 77.1 65535 100000

(850 × 77.1) + 1 65536 100001

(850 × 77.1) - 1 65534 65534

I la valeur en machine est correcte seule la valeur affichée est erronée

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 9/37

Page 15: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Suite de J.-M. Muller

Soit un la suite définie par :u0 = 2

u1 =−4

un+1 = 111− 1130un

+ 3000(un ·un-1)

intmain(void){

float u0 = 2.0f, u1 = -4.0f;

printf("u( 0) = % 1.19e\n",u0);printf("u( 1) = % 1.19e\n",u1);

int n; for(n = 1 ; n <= 19 ; n++){float tmp = 111.f - 1130.f/u1 + 3000.f * 1/(u1*u0);printf("u(%2d) = % 1.19e\n",n+1,tmp);u0 = u1; u1 = tmp;

}

return 0;}

$> ./suite -jmmulleru( 0) = 2.0000000000000000000e+00u( 1) = -4.0000000000000000000e+00u( 2) = 1.8500000000000000000e+01u( 3) = 9.3783798217773437500e+00u( 4) = 7.8011646270751953125e+00u( 5) = 7.1545600891113281250e+00u( 6) = 6.8088302612304687500e+00u( 7) = 6.6227531433105468750e+00u( 8) = 6.9049758911132812500e+00u( 9) = 1.2952423095703125000e+01u(10) = 5.7301113128662109375e+01u(11) = 9.5321716308593750000e+01u(12) = 9.9694656372070312500e+01u(13) = 9.9981079101562500000e+01u(14) = 9.9998840332031250000e+01u(15) = 9.9999923706054687500e+01u(16) = 9.9999992370605468750e+01u(17) = 1.0000000000000000000e+02u(18) = 1.0000000000000000000e+02u(19) = 1.0000000000000000000e+02u(20) = 1.0000000000000000000e+02

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 10/37

Page 16: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Suite de J.-M. Muller

Soit un la suite définie par :u0 = 2

u1 =−4

un+1 = 111− 1130un

+ 3000(un ·un-1)

intmain(void){

float u0 = 2.0f, u1 = -4.0f;

printf("u( 0) = % 1.19e\n",u0);printf("u( 1) = % 1.19e\n",u1);

int n; for(n = 1 ; n <= 19 ; n++){float tmp = 111.f - 1130.f/u1 + 3000.f * 1/(u1*u0);printf("u(%2d) = % 1.19e\n",n+1,tmp);u0 = u1; u1 = tmp;

}

return 0;}

$> ./suite -jmmulleru( 0) = 2.0000000000000000000e+00u( 1) = -4.0000000000000000000e+00u( 2) = 1.8500000000000000000e+01u( 3) = 9.3783798217773437500e+00u( 4) = 7.8011646270751953125e+00u( 5) = 7.1545600891113281250e+00u( 6) = 6.8088302612304687500e+00u( 7) = 6.6227531433105468750e+00u( 8) = 6.9049758911132812500e+00u( 9) = 1.2952423095703125000e+01u(10) = 5.7301113128662109375e+01u(11) = 9.5321716308593750000e+01u(12) = 9.9694656372070312500e+01u(13) = 9.9981079101562500000e+01u(14) = 9.9998840332031250000e+01u(15) = 9.9999923706054687500e+01u(16) = 9.9999992370605468750e+01u(17) = 1.0000000000000000000e+02u(18) = 1.0000000000000000000e+02u(19) = 1.0000000000000000000e+02u(20) = 1.0000000000000000000e+02

0

20

40

60

80

100

120

0 5 10 15 20

float

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 10/37

Page 17: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Suite de J.-M. Muller

Soit un la suite définie par :u0 = 2

u1 =−4

un+1 = 111− 1130un

+ 3000(un ·un-1)

intmain(void){

float u0 = 2.0f, u1 = -4.0f;

printf("u( 0) = % 1.19e\n",u0);printf("u( 1) = % 1.19e\n",u1);

int n; for(n = 1 ; n <= 19 ; n++){float tmp = 111.f - 1130.f/u1 + 3000.f * 1/(u1*u0);printf("u(%2d) = % 1.19e\n",n+1,tmp);u0 = u1; u1 = tmp;

}

return 0;}

$> ./suite -jmmulleru( 0) = 2.0000000000000000000e+00u( 1) = -4.0000000000000000000e+00u( 2) = 1.8500000000000000000e+01u( 3) = 9.3783798217773437500e+00u( 4) = 7.8011646270751953125e+00u( 5) = 7.1545600891113281250e+00u( 6) = 6.8088302612304687500e+00u( 7) = 6.6227531433105468750e+00u( 8) = 6.9049758911132812500e+00u( 9) = 1.2952423095703125000e+01u(10) = 5.7301113128662109375e+01u(11) = 9.5321716308593750000e+01u(12) = 9.9694656372070312500e+01u(13) = 9.9981079101562500000e+01u(14) = 9.9998840332031250000e+01u(15) = 9.9999923706054687500e+01u(16) = 9.9999992370605468750e+01u(17) = 1.0000000000000000000e+02u(18) = 1.0000000000000000000e+02u(19) = 1.0000000000000000000e+02u(20) = 1.0000000000000000000e+02

0

20

40

60

80

100

120

0 5 10 15 20

floatdouble

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 10/37

Page 18: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Suite de J.-M. Muller

Soit un la suite définie par :u0 = 2

u1 =−4

un+1 = 111− 1130un

+ 3000(un ·un-1)

intmain(void){

float u0 = 2.0f, u1 = -4.0f;

printf("u( 0) = % 1.19e\n",u0);printf("u( 1) = % 1.19e\n",u1);

int n; for(n = 1 ; n <= 19 ; n++){float tmp = 111.f - 1130.f/u1 + 3000.f * 1/(u1*u0);printf("u(%2d) = % 1.19e\n",n+1,tmp);u0 = u1; u1 = tmp;

}

return 0;}

$> ./suite -jmmulleru( 0) = 2.0000000000000000000e+00u( 1) = -4.0000000000000000000e+00u( 2) = 1.8500000000000000000e+01u( 3) = 9.3783798217773437500e+00u( 4) = 7.8011646270751953125e+00u( 5) = 7.1545600891113281250e+00u( 6) = 6.8088302612304687500e+00u( 7) = 6.6227531433105468750e+00u( 8) = 6.9049758911132812500e+00u( 9) = 1.2952423095703125000e+01u(10) = 5.7301113128662109375e+01u(11) = 9.5321716308593750000e+01u(12) = 9.9694656372070312500e+01u(13) = 9.9981079101562500000e+01u(14) = 9.9998840332031250000e+01u(15) = 9.9999923706054687500e+01u(16) = 9.9999992370605468750e+01u(17) = 1.0000000000000000000e+02u(18) = 1.0000000000000000000e+02u(19) = 1.0000000000000000000e+02u(20) = 1.0000000000000000000e+02

0

20

40

60

80

100

120

0 5 10 15 20

floatdouble

theorique

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 10/37

Page 19: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Quelles sont les propriétes d’une bonne arithmétique ?

Rapidité des calculs

I calcul rapide de la trajectoire d’un missile de défense aérienne

Précision des calculs

I calcul correct de cette trajectoire

Dynamique des valeurs représentées

I représenter des valeurs très petites et très grandes

Portabilité des calculs

I reproductibilité des résultats d’un programme d’une machine à une autre

Facilité d’utilisation et d’implantation

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 11/37

Page 20: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Lien avec la qualité numérique d’un logiciel

Dans un programme (logiciel) numérique, les erreurs sont principalement dues :

I à la difficulté de traduire un problème mathématique en une implantation dans unlangage de programmation erreurs de méthode,

I à l’arrondi des données d’entrées du problème (données physiques ou de capteur,par exemple) erreurs de données,

I à l’imprécision de l’arithmétique utilisée erreurs d’arrondi.

Comment déterminer et contrôler ces erreurs d’arrondi ?

I en encadrant les erreurs par des intervalles,I en augmentant la précision de calcul ou en compensant les erreurs d’arrondi, afin

d’améliorer la précision du résultat calculé,I en calculant les solutions exactes,I ...

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 12/37

Page 21: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Lien avec la qualité numérique d’un logiciel

Dans un programme (logiciel) numérique, les erreurs sont principalement dues :

I à la difficulté de traduire un problème mathématique en une implantation dans unlangage de programmation erreurs de méthode,

I à l’arrondi des données d’entrées du problème (données physiques ou de capteur,par exemple) erreurs de données,

I à l’imprécision de l’arithmétique utilisée erreurs d’arrondi.

Comment déterminer et contrôler ces erreurs d’arrondi ?

I en encadrant les erreurs par des intervalles,I en augmentant la précision de calcul ou en compensant les erreurs d’arrondi, afin

d’améliorer la précision du résultat calculé,I en calculant les solutions exactes,I ...

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 12/37

Page 22: Représentation des nombres, arithmétique flottante, norme IEEE 754

Introduction générale

Que va-t-on voir dans cette partie de cours ?

Représentation des nombres

Arithmétique flottante : définitions et représentation

Norme IEEE 754, arrondi correct et propriétés de l’arithmétique flottante

Arithmétiques arbitraire et multi-précision (GMP, MPFR, ...)

Arithmétique d’intervalles (MPFI, ...)

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 13/37

Page 23: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

Plan du cours

1. Introduction générale

2. Représentation des nombres entiers et réels

3. Norme IEEE 754

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 14/37

Page 24: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

Représentation en numération simple à position

On appelle base un entier β supérieur ou égal à 2

I dans notre cas, on utilisera principalement la base β = 2

Un chiffre sera un entier (symbole) compris entre 0 et β−1

I si β = 2 chiffre = bit ∈ {0,1}

Un nombre X de n chiffres = une séquence (xn−1xn−2 · · ·x1x0)β, telle que

X =n−1

∑i=0

xi ·βi

I numération simple à positionI βn valeurs représentables sur n chiffresI si β = 2 ⇒ X = un nombre de n bits

Exemple avec β = 2 et n = 8 X = 170 = 27 +25 +23 +21 = (10101010)2

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 15/37

Page 25: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

Représentation en complément à la base

En base β, sur n chiffres→ représentation de βn nombres

I essayons de représenter les nombres entre −βn/2 et βn/2−1

Comment représenter les valeurs de 0 à βn ?

I de 0 à βn/2−1 : utilisation de la notation simple à positionI de −βn/2 à -1 : translation de βn−1 positions

Remarque : si β = 2, alors la chaîne de bits (xn−1xn−2 · · ·x1x0) représente

−xn−1 ·2n−1 +n−2

∑i=0

xi ·2i

I bit de poids fort⇒ bit de poids négatifI le signe d’un nombre est déterminé par son bit de poids fort

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 16/37

Page 26: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

Représentation en complément à la base

En base β, sur n chiffres→ représentation de βn nombres

I essayons de représenter les nombres entre −βn/2 et βn/2−1

Comment représenter les valeurs de 0 à βn ?

I de 0 à βn/2−1 : utilisation de la notation simple à positionI de −βn/2 à -1 : translation de βn−1 positions

Remarque : si β = 2, alors la chaîne de bits (xn−1xn−2 · · ·x1x0) représente

−xn−1 ·2n−1 +n−2

∑i=0

xi ·2i

I bit de poids fort⇒ bit de poids négatifI le signe d’un nombre est déterminé par son bit de poids fort

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 16/37

Page 27: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

Représentation en complément à la base

En base β, sur n chiffres→ représentation de βn nombres

I essayons de représenter les nombres entre −βn/2 et βn/2−1

Comment représenter les valeurs de 0 à βn ?

I de 0 à βn/2−1 : utilisation de la notation simple à positionI de −βn/2 à -1 : translation de βn−1 positions

Remarque : si β = 2, alors la chaîne de bits (xn−1xn−2 · · ·x1x0) représente

−xn−1 ·2n−1 +n−2

∑i=0

xi ·2i

I bit de poids fort⇒ bit de poids négatifI le signe d’un nombre est déterminé par son bit de poids fort

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 16/37

Page 28: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

Représentation en virgule fixe

Principe : représentation de nombres réels par des nombres entiers

I utilisation d’un facteur d’échelle impliciteI représentation du nombre entier dans un des systèmes précédents

Exemple : soient X un nombre entier en base β sur n chiffres, et x un nombre réelreprésenté par X

X = (xn−1xn−2 · · ·x1x0)β

et x = X ·β−F

= (xn−1xn−2 · · ·xn−I︸ ︷︷ ︸I chiffres

,xn−I−1 · · ·x1x0︸ ︷︷ ︸F chiffres

)β,

avec n = I + F.

X1X2X3X4X5X6 X0X = X7

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 17/37

Page 29: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

Représentation en virgule fixe

Principe : représentation de nombres réels par des nombres entiers

I utilisation d’un facteur d’échelle impliciteI représentation du nombre entier dans un des systèmes précédents

Exemple : soient X un nombre entier en base β sur n chiffres, et x un nombre réelreprésenté par X

X = (xn−1xn−2 · · ·x1x0)βet x = X ·β−F

= (xn−1xn−2 · · ·xn−I︸ ︷︷ ︸I chiffres

,xn−I−1 · · ·x1x0︸ ︷︷ ︸F chiffres

)β,

avec n = I + F.

F chiffresI chiffres

X1X2X3X4X5X6 X0X = X7

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 17/37

Page 30: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

Exemple de programme virgule fixe

intmain(void){

// Declaration de 2 nombres virgules fixes encodes sous forme d’entiersint A = 17; // Q30.2 : A = 000000000000000000000000000100.01int B = 13; // Q29.3 : B = 00000000000000000000000000001.101

// Calcul de la somme de ces deux nombresA = A << 1; // Q29.3 : A = 00000000000000000000000000100.010int C = A + B; // Q29.3 : C = 00000000000000000000000000101.111

}

La valeur du résultat encodé par C, et les opérations intermédiaires (décalage, ...)dépendent de la dynamique (du format) des entrées A et B.

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 18/37

Page 31: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

Remarques sur la virgule fixe

⊕ La virgule fixe est encore utilisée pour des raisons de rapidité

I opérations en virgule fixe = opérations entière

Le facteur de mise à l’échelle est implicite

I connaissance de l’ordre de grandeur des données de la part des développeursI difficulté de développement

Les nombres représentés ne sont pas d’ordres de grandeurs très différents

I la dynamique des valeurs représentée est plus faible qu’en virgule flottante

Les calculs entre nombres en virgule fixe de magnitudes d’ordre de grandeurdifférents est beaucoup plus compliqué

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 19/37

Page 32: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

Remarques sur la virgule fixe

⊕ La virgule fixe est encore utilisée pour des raisons de rapidité

I opérations en virgule fixe = opérations entière

Le facteur de mise à l’échelle est implicite

I connaissance de l’ordre de grandeur des données de la part des développeursI difficulté de développement

Les nombres représentés ne sont pas d’ordres de grandeurs très différents

I la dynamique des valeurs représentée est plus faible qu’en virgule flottante

Les calculs entre nombres en virgule fixe de magnitudes d’ordre de grandeurdifférents est beaucoup plus compliqué

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 19/37

Page 33: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

Règles d’arithmétique virgule fixe addition et multiplication

Addition

I format virgule fixe identiqueI alignement des virgulesI extension du bit de signe Sr r0r1r4 r3 r2 r−4r−1 r−2 r−3 r−5

b1 b0 b−2b−1 0b−3 0Sb Sb Sb

a2a3Sa a1 a0 a−1 a−2 a−3 a−4 a−5

Ia

Ib Fb

Fa

Ir = max(Ia,Ib)+1 Fr = max(Fa,Fb)

Multiplication

I doublement de la taille dereprésentation du signe

Sr r0r1r4 r3 r2 r−1 r−2 r−3 r−5r−4

b−2b−1b0b1Sb

Sr

a0a1a2Sa a−1 a−2 a−3

FaIa

Ib Fb

Fr = Fa+FbIr = Ia+Ib

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 20/37

Page 34: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

Règles d’arithmétique virgule fixe addition et multiplication

Addition

I format virgule fixe identiqueI alignement des virgulesI extension du bit de signe Sr r0r1r4 r3 r2 r−4r−1 r−2 r−3 r−5

b1 b0 b−2b−1 0b−3 0Sb Sb Sb

a2a3Sa a1 a0 a−1 a−2 a−3 a−4 a−5

Ia

Ib Fb

Fa

Ir = max(Ia,Ib)+1 Fr = max(Fa,Fb)

Multiplication

I doublement de la taille dereprésentation du signe

Sr r0r1r4 r3 r2 r−1 r−2 r−3 r−5r−4

b−2b−1b0b1Sb

Sr

a0a1a2Sa a−1 a−2 a−3

FaIa

Ib Fb

Fr = Fa+FbIr = Ia+Ib

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 20/37

Page 35: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

Représentation d’un nombre virgule flottante

En virgule flottante, en base β, un nombre réel x est représenté par :un signe s ∈ {0,1} 0 : positif / 1 : négatif

une mantisse m, écrite en virgule fixe en base β sur p chiffres (β≥ 2)

un exposant e ∈ {emin, · · · ,emax}

de telle sorte que

x = (−1)s ·m ·βe,

avec pour k ∈ {0, · · · ,p−1}

m = m0 · · ·mi .mi+1 · · ·mp−1 et mk ∈ {0, · · · ,β−1}.

On dit que le nombre flottant x est de précision p (avec p ≥ 1)

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 21/37

Page 36: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

Remarques sur l’arithmétique virgule flottante

Remarque 1 : βe joue ici le rôle du facteur de mise à l’échelle

I il est explicite en virgule flottante

Remarque 2 : Cette représentation

x = (−1)s ·m ·βe

n’est pas unique. Par exemple, le nombre 2.617 en base β = 10 se représente enprécision p = 4 de différentes manières :

.2617 ·101 ou 2617 ·10−3.

I notion d’exposant convention choisie pour représenter la mantisse

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 22/37

Page 37: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

Dynamique des nombres : floating-point vs. fixed-point

0

100

200

300

400

500

600

700

800

10 bits

16 bits

24 bits

32 bits

64 bits

log 1

0

( max

(x)/

min

(x))

Different standard formats (IEEE 754-2008 and OpenGL).

Fixed-pointFloating-point

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 23/37

Page 38: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

Dynamique des nombres : floating-point vs. fixed-point

0

20

40

60

80

100

120

10 bits

16 bits

24 bits

32 bits

log 1

0

( max

(x)/

min

(x))

Different standard formats (IEEE 754-2008 and OpenGL).

Fixed-point DSP

Fixed-pointFloating-point

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 23/37

Page 39: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

La virgule flottante avant la norme IEEE 754

Différentes machines avec différents systèmes flottants :

Système et arithmétique Base β Précision p Exposants (emin, emax)

Cray 1 (single) 2 48 (−8192, 8191)Cray 1 (double) 2 96 (−8192, 8191)DEC VAX G format (double) 2 53 (−1023, 1023)DEC VAX D format (double) 2 56 (−127, 127)HP 28 et 48G 10 12 (−499, 499)IBM 3090 (single) 16 6 (−64, 63)IBM 3090 (double) 16 14 (−64, 63)IBM 3090 (extended) 16 28 (−64, 63)

Comment écrire un programme qui soit portable ?

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 24/37

Page 40: Représentation des nombres, arithmétique flottante, norme IEEE 754

Représentation des nombres entiers et réels

La virgule flottante avant la norme IEEE 754

Sur certaines machines Cray, on avait :

pour certaines entrées x , 1× x overflow (dépassement de capacité)

x + y 6= y + x

0.5× x 6= x/2.0

Sur IBM 370 (1970), en Fortran, on avait :

√−4 = 2

I = 14./7.0 I = 1

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 25/37

Page 41: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Plan du cours

1. Introduction générale

2. Représentation des nombres entiers et réels

3. Norme IEEE 754

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 26/37

Page 42: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Histoire de la norme IEEE 754

Jusque dans les années 80 : chaque constructeur avait sa propre implantation del’arithmétique flottante

I quelle base β était utilisée ? quelle plage d’exposant [emin,emax]?I un programme différents résultats sur différentes architectures

Besoin de standardiser et d’homogénéiser l’implantation l’arithmétique virguleflottante en base 2

I fixer précisement le format des données et leur encodage en machineI définir le comportement et la précision des opérations de base (+, −, ×, /, √ )I définir les valeurs spéciales, les modes d’arrondis, et la gestion des exceptions

1985 : publication du standard IEEE 754-1985, initié par Prof. William Kahan

I 2008 : révision de la norme IEEE 754-2008

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 27/37

Page 43: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Histoire de la norme IEEE 754

Jusque dans les années 80 : chaque constructeur avait sa propre implantation del’arithmétique flottante

I quelle base β était utilisée ? quelle plage d’exposant [emin,emax]?I un programme différents résultats sur différentes architectures

Besoin de standardiser et d’homogénéiser l’implantation l’arithmétique virguleflottante en base 2

I fixer précisement le format des données et leur encodage en machineI définir le comportement et la précision des opérations de base (+, −, ×, /, √ )I définir les valeurs spéciales, les modes d’arrondis, et la gestion des exceptions

1985 : publication du standard IEEE 754-1985, initié par Prof. William Kahan

I 2008 : révision de la norme IEEE 754-2008

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 27/37

Page 44: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Histoire de la norme IEEE 754

Jusque dans les années 80 : chaque constructeur avait sa propre implantation del’arithmétique flottante

I quelle base β était utilisée ? quelle plage d’exposant [emin,emax]?I un programme différents résultats sur différentes architectures

Besoin de standardiser et d’homogénéiser l’implantation l’arithmétique virguleflottante en base 2

I fixer précisement le format des données et leur encodage en machineI définir le comportement et la précision des opérations de base (+, −, ×, /, √ )I définir les valeurs spéciales, les modes d’arrondis, et la gestion des exceptions

1985 : publication du standard IEEE 754-1985, initié par Prof. William Kahan

I 2008 : révision de la norme IEEE 754-2008

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 27/37

Page 45: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Quelques nouveautés de la norme IEEE 754-2008... en plus de ce qui est définit dans la norme IEEE 754-1985

Standardisation de la base β = 10, en plus de la base β = 2

I dans le reste du cours, on ne s’intéressera qu’à la base β = 2

Standardisation de l’opération fma (fused multiply-add) :

fma(a,b,c) = ◦(a×b+ c).

I une multiplication et une addition, avec un seul arrondi final

Standardisation de l’arithmétique quadruple précision

Définition du comportement de certaines fonctions, autres que les opérations debase (+,−,×,/,√ ),

I fonctions élémentaires : cos(x), sin(x), log(x), exp(x), ...

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 28/37

Page 46: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Formats de représentation standards des données

Le standard IEEE 754-2008 définit 3 formats de base pour les nombres flottants :

Simple précision Double précision Quadruple précision

Précision p 24 53 113

Taille de l’exposant w 8 11 15

Taille de la représentation k = p+w 32 64 128

emin, emax -126, 127 -1022, 1023 -16382, 16383

Type C float double -

avec

I taille de la mantisse precision : p bitsI taille d’exposant : w bitsI emax = 2w−1−1 et emin = 1−emax

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 29/37

Page 47: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Repésentation normalisée des nombres flottants

Même en fixant la position de la virgule dans la mantisse d’un nombre flottant, unmême nombre peut avoir plusieurs représentations :

2.170×100 et 0.217×10−1.

Pour pallier ce problème, et éviter de perdre de la précision sur la mantisse, on faiten sorte qu’elle soit normalisée, c’est-a-dire, que le bit m0 6= 0

I la représentation est alors unique (pour les valeurs non nulles)I c’est la représentation qui minimise l’exposantI en base β = 2 : m0 = 1 on a donc pas besoin de stocker le bit m0 en mémoire

(= bit implicite)

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 30/37

Page 48: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Encodage des nombres flottants normalisés en mémoire

Soit x un nombre flottant normalisé. L’encodage de x est le suivant :1 bit pour le signe (0 ou 1),

w bits pour l’exposant,

p−1 bits pour la fraction de la mantisse.

avec k = w +p.

I on n’a pas besoin de stocker le bit m0 car m0 = 1 (= bit implicite)

L’exposant e ∈ [emin,emax] et peut donc être négatif. Mais on peut avoir besoin decomparer deux exposants

I lors d’une addition (par exemple) pour aligner les mantissesI comparaison délicate en notation signe-valeur absolue ou complément à 2

Encodage de l’exposant en utilsant une représentation biaisée : e+emax

I faciliter les comparaisons d’exposantsI éviter de faire intervenir les signes des exposants

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 31/37

Page 49: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Encodage des nombres flottants normalisés en mémoire

Soit x un nombre flottant normalisé. L’encodage de x est le suivant :1 bit pour le signe (0 ou 1),

w bits pour l’exposant,

p−1 bits pour la fraction de la mantisse.

avec k = w +p.

I on n’a pas besoin de stocker le bit m0 car m0 = 1 (= bit implicite)

L’exposant e ∈ [emin,emax] et peut donc être négatif. Mais on peut avoir besoin decomparer deux exposants

I lors d’une addition (par exemple) pour aligner les mantissesI comparaison délicate en notation signe-valeur absolue ou complément à 2

Encodage de l’exposant en utilsant une représentation biaisée : e+emax

I faciliter les comparaisons d’exposantsI éviter de faire intervenir les signes des exposants

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 31/37

Page 50: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Intérêt des nombres dénormalisés

La normalisation de la mantisse (m0 6= 0) implique qu’il n’y a pas de nombrereprésentable entre 0 et 2emin .

Cette situation peut être problématique, comme par exemple dans le cas suivant :

if x != y then // avec x = 2^emin et y = (1 + 2^(1-p))*2^eminz = 1 / (y - x) // -> x != y mais y - x = 2^(emin -p+1) arrondi vers 0

I intérêt des nombres dénormalisés

Un nombre dénormalisé est de la forme suivante :

x = (−1)s ·m ·βe, avec m0 = 0 et e = emin.

I encodage de la fraction uniquement, avec un exposant particulier 0

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 32/37

Page 51: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Intérêt des nombres dénormalisés

La normalisation de la mantisse (m0 6= 0) implique qu’il n’y a pas de nombrereprésentable entre 0 et 2emin .

Cette situation peut être problématique, comme par exemple dans le cas suivant :

if x != y then // avec x = 2^emin et y = (1 + 2^(1-p))*2^eminz = 1 / (y - x) // -> x != y mais y - x = 2^(emin -p+1) arrondi vers 0

I intérêt des nombres dénormalisés

Un nombre dénormalisé est de la forme suivante :

x = (−1)s ·m ·βe, avec m0 = 0 et e = emin.

I encodage de la fraction uniquement, avec un exposant particulier 0

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 32/37

Page 52: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Nombres spéciaux {±0,±∞,NaN}

Le standard IEEE 754-2008 également trois nombres spéciaux (ou valeursspéciales), et deux zéros :

I deux infinis : +∞, −∞

I Not-a-Numbers : sNaN (signaling-NaN) et qNaN (quiet-NaN) résultat d’unopération invalide (0/0, par exemple), se propagent dans les calculs

I deux zéros signés : +0 et −0 cohérent avec les deux infinis

1+0

=+∞ et1−0

=−∞.

Les quiet-NaN devraient être utilisés pour propager de l’information en dehorsd’une partie de programme conserver un maximum d’information sur leproblème survenu

I faciliter un diagnostic a posteriori

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 33/37

Page 53: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Encodages des nombres spéciaux en mémoire... dans le format simple précision

Encodage des valeurs +0 et −0

+0 0 00000000 00000000000000000000

−0 1 00000000 00000000000000000000

I deux représentations pour le zéro cohérent avec les deux infinis

Encodage des valeurs +∞, −∞ et NaN (Not a Number)

+∞ 0 11111111 00000000000000000000

−∞ 1 11111111 00000000000000000000

sNaN 1 11111111 00000000000000000001

qNaN 1 11111111 10000000000000000001

I plusieurs représentations pour les deux NaNI si m1 = 1 quiet NaNI si m1 = 0 signaling NaN

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 34/37

Page 54: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Encodages des nombres spéciaux en mémoire... dans le format simple précision

Encodage des valeurs +0 et −0

+0 0 00000000 00000000000000000000

−0 1 00000000 00000000000000000000

I deux représentations pour le zéro cohérent avec les deux infinis

Encodage des valeurs +∞, −∞ et NaN (Not a Number)

+∞ 0 11111111 00000000000000000000

−∞ 1 11111111 00000000000000000000

sNaN 1 11111111 00000000000000000001

qNaN 1 11111111 10000000000000000001

I plusieurs représentations pour les deux NaNI si m1 = 1 quiet NaNI si m1 = 0 signaling NaN

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 34/37

Page 55: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Drapeaux en cas d’exception

Aucune exception ne doit entraver le bon déroulement des calculs. Un mécanismede drapeaux informe le système sur ce qui s’est produit.

Les 5 drapeaux qui doivent être levés en cas d’exceptions sont :

I opération invalide : une entrée de l’opération est invalide :√−2, ...

le résultat par défaut est un NaNI division par zéro : un résultat exact infini est défini pour cette opération sur des

entrées finies : 1/0, log(+0), ... le résultat est un infini (±∞)

I dépassement de capacité vers l’infini (overflow) : le résultat exact est strictementsupérieur à (2−21−p) ·2emax (le plus grand nombre flottant normalisé) le résultat est soit ±∞, soit ±(2−21−p) ·2emax (suivant le mode d’arrondi)

I dépassement de capacité vers 0 (underflow) : le résultat exact est strictementinférieur à 2emin (le plus petit nombre flottant normalisé) le résultat est soit ±0, soit ± un nombre dénormalisé, soit ±2emin (suivant le mode

d’arrondi)

I résultat inexact : le résultat d’une opération est inexact, c’est-à-dire, ne peut êtrereprésenté exactement

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 35/37

Page 56: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Notions d’arrondi et d’arrondi correct

Le résultat d’une opération flottante entre deux nombres flottants n’est, engénéral, pas exactement représentable par un nombre flottant.

I le résultat doit être arrondi

La norme IEEE 754-2008 propose 4 modes d’arrondi

I au plus près pair (RN),I vers +∞ (RU), vers −∞ (RD),I et vers 0 (RZ)

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 36/37

Page 57: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Notions d’arrondi et d’arrondi correct

Le résultat d’une opération flottante entre deux nombres flottants n’est, engénéral, pas exactement représentable par un nombre flottant.

I le résultat doit être arrondi

La norme IEEE 754-2008 propose 4 modes d’arrondi

I au plus près pair (RN),I vers +∞ (RU), vers −∞ (RD),I et vers 0 (RZ) RU(x)

RD(x)

RZ(x) si x > 0

resultat exact x

RN(x)

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 36/37

Page 58: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Notions d’arrondi et d’arrondi correct

Le résultat d’une opération flottante entre deux nombres flottants n’est, engénéral, pas exactement représentable par un nombre flottant.

I le résultat doit être arrondi

La norme IEEE 754-2008 propose 4 modes d’arrondi

I au plus près pair (RN),I vers +∞ (RU), vers −∞ (RD),I et vers 0 (RZ) RU(x)

RD(x)

RZ(x) si x > 0

resultat exact x

RN(x)

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 36/37

Page 59: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Notions d’arrondi et d’arrondi correct

Le résultat d’une opération flottante entre deux nombres flottants n’est, engénéral, pas exactement représentable par un nombre flottant.

I le résultat doit être arrondi

La norme IEEE 754-2008 propose 4 modes d’arrondi

I au plus près pair (RN),I vers +∞ (RU), vers −∞ (RD),I et vers 0 (RZ) RU(x)

RD(x)

RZ(x) si x > 0

resultat exact x

RN(x) si mantisse paire

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 36/37

Page 60: Représentation des nombres, arithmétique flottante, norme IEEE 754

Norme IEEE 754

Notions d’arrondi et d’arrondi correct

Le résultat d’une opération flottante entre deux nombres flottants n’est, engénéral, pas exactement représentable par un nombre flottant.

I le résultat doit être arrondi

La norme IEEE 754-2008

I requiert l’arrondi correct pour les quatres opérations de base (+,−,×,/), la racinecarrée (√ ) et le fma,

I et le recommande uniquement pour les autres opérations (trigonométriques,logarithmes, exponentielles, ...).

Arrondi correct : le résultat d’une opération flottante entre deux nombres flottantsest dans un premier temps calculé avec une précision infinie et un intervalled’exposant [emin,emax] non borné, puis arrondi dans le format considéré suivant lemode d’arrondi fixé

I le résultat est dit correctement arrondi

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 36/37

Page 61: Représentation des nombres, arithmétique flottante, norme IEEE 754

Questions ?

Guillaume Revy (Univ. de Perpignan Via Domitia) Représentation des nombres, arithmétique flottante, norme IEEE 754 37/37