• Aucun résultat trouvé

IEEE 754 : au-delà du réel Journées académiques 2014 Guillaume CONNAN

N/A
N/A
Protected

Academic year: 2022

Partager "IEEE 754 : au-delà du réel Journées académiques 2014 Guillaume CONNAN"

Copied!
344
0
0

Texte intégral

(1)

Guillaume CONNAN

IREM de Nantes

Dernière mise à jour : 23 avril 2014 à 21:47

(IREM de Nantes) 1 / 140

(2)

1 Préambule 2 La norme IEEE 754

Différents formats

Les normaux, les sous-normaux et les paranormaux

3 Algèbre des nombres VF 4 Réels, arrondis et flottants

5 Que la force de l’erreur soit avec vous Atelier Padawan # 1 : majorer l’erreur Atelier Padawan # 2 : somme de flottants Atelier Padawan # 3 : somme compensée de flottants quelconques

6 Des sujets de Bac maladroits...

7 Lectures recommandées pour aller plus loin

(IREM de Nantes) 2 / 140

(3)

1 Préambule 2 La norme IEEE 754

Différents formats

Les normaux, les sous-normaux et les paranormaux

3 Algèbre des nombres VF 4 Réels, arrondis et flottants

5 Que la force de l’erreur soit avec vous Atelier Padawan # 1 : majorer l’erreur Atelier Padawan # 2 : somme de flottants Atelier Padawan # 3 : somme compensée de flottants quelconques

6 Des sujets de Bac maladroits...

7 Lectures recommandées pour aller plus loin

(IREM de Nantes) 3 / 140

(4)

(IREM de Nantes) 4 / 140

(5)

(IREM de Nantes) 5 / 140

(6)

(IREM de Nantes) 6 / 140

(7)

(IREM de Nantes) 7 / 140

(8)

(IREM de Nantes) 8 / 140

(9)

(IREM de Nantes) 9 / 140

(10)

(IREM de Nantes) 10 / 140

(11)

(IREM de Nantes) 11 / 140

(12)

(IREM de Nantes) 12 / 140

(13)

(IREM de Nantes) 13 / 140

(14)

(IREM de Nantes) 14 / 140

(15)

char

int2147483647+1= −2147483648...

short long float single double long double

3 3.0 3.0000 3.0e0 0.3e1 ...

(IREM de Nantes) 15 / 140

(16)

char

int2147483647+1= −2147483648...

short long float single double long double

3 3.0 3.0000 3.0e0 0.3e1 ...

(IREM de Nantes) 15 / 140

(17)

char

int2147483647+1= −2147483648...

shortlong float single double long double

3 3.0 3.0000 3.0e0 0.3e1 ...

(IREM de Nantes) 15 / 140

(18)

char

int2147483647+1= −2147483648...

shortlong float single double long double

3 3.0 3.0000 3.0e0 0.3e1 ...

(IREM de Nantes) 15 / 140

(19)

char

int2147483647+1= −2147483648...

shortlong float single double long double

3 3.0 3.0000 3.0e0 0.3e1 ...

(IREM de Nantes) 15 / 140

(20)

char

int2147483647+1= −2147483648...

shortlong float single double long double

3 3.0 3.0000 3.0e0 0.3e1 ...

(IREM de Nantes) 15 / 140

(21)

char

int2147483647+1= −2147483648...

short long float single double long double

3 3.0 3.0000 3.0e0 0.3e1 ...

(IREM de Nantes) 15 / 140

(22)

char

int2147483647+1= −2147483648...

short long float single double long double

33.0 3.0000 3.0e0 0.3e1 ...

(IREM de Nantes) 15 / 140

(23)

char

int2147483647+1= −2147483648...

short long float single double long double

33.0 3.0000 3.0e0 0.3e1 ...

(IREM de Nantes) 15 / 140

(24)

char

int2147483647+1= −2147483648...

short long float single double long double

33.0 3.0000 3.0e0 0.3e1 ...

(IREM de Nantes) 15 / 140

(25)

char

int2147483647+1= −2147483648...

short long float single double long double

33.03.0000 3.0e0 0.3e1 ...

(IREM de Nantes) 15 / 140

(26)

char

int2147483647+1= −2147483648...

short long float single double long double

33.03.0000 3.0e0 0.3e1 ...

(IREM de Nantes) 15 / 140

(27)

char

int2147483647+1= −2147483648...

short long float single double long double

33.03.0000 3.0e0 0.3e1 ...

(IREM de Nantes) 15 / 140

(28)

char

int2147483647+1= −2147483648...

short long float single double long double

3 3.03.0000 3.0e0 0.3e1 ...

(IREM de Nantes) 15 / 140

(29)

char

int2147483647+1= −2147483648...

short long float single double long double

3 3.0 3.00003.0e0 0.3e1 ...

(IREM de Nantes) 15 / 140

(30)

char

int2147483647+1= −2147483648...

short long float single double long double

3 3.0 3.0000 3.0e0 0.3e1 ...

(IREM de Nantes) 15 / 140

(31)

char

int2147483647+1= −2147483648...

short long float single double long double

3 3.0 3.0000 3.0e0 0.3e1 ...

(IREM de Nantes) 15 / 140

(32)

In [1]: 3 * 0.1 ..

.

(IREM de Nantes) 16 / 140

(33)

In [1]: 3 * 0.1

Out[1]: 0.30000000000000004 ..

(IREM de Nantes) 17 / 140

(34)

In [1]: 3 * 0.1

Out[1]: 0.30000000000000004

In [2]: sum([0.1 for k in range(10000000)]) .

(IREM de Nantes) 18 / 140

(35)

In [1]: 3 * 0.1

Out[1]: 0.30000000000000004

In [2]: sum([0.1 for k in range(10000000)]) Out[2]: 999999.9998389754

(IREM de Nantes) 19 / 140

(36)

LES NOMBRES RÉELS N’EXISTENT PAS.

TOUT CE QUE VOUS AVEZ VU AU LYCÉE N’EST

QU’ILLUSION !

(IREM de Nantes) 20 / 140

(37)

LES NOMBRES RÉELS N’EXISTENT PAS.

TOUT CE QUE VOUS AVEZ VU AU LYCÉE N’EST

QU’ILLUSION !

(IREM de Nantes) 20 / 140

(38)

1 Préambule 2 La norme IEEE 754

Différents formats

Les normaux, les sous-normaux et les paranormaux

3 Algèbre des nombres VF 4 Réels, arrondis et flottants

5 Que la force de l’erreur soit avec vous Atelier Padawan # 1 : majorer l’erreur Atelier Padawan # 2 : somme de flottants Atelier Padawan # 3 : somme compensée de flottants quelconques

6 Des sujets de Bac maladroits...

7 Lectures recommandées pour aller plus loin

(IREM de Nantes) 21 / 140

(39)

1 Préambule

2 La norme IEEE 754 Différents formats

Les normaux, les sous-normaux et les paranormaux

3 Algèbre des nombres VF

4 Réels, arrondis et flottants

5 Que la force de l’erreur soit avec vous Atelier Padawan # 1 : majorer l’erreur Atelier Padawan # 2 : somme de flottants Atelier Padawan # 3 : somme compensée de flottants quelconques

6 Des sujets de Bac maladroits...

7 Lectures recommandées pour aller plus loin

(IREM de Nantes) 22 / 140

(40)

(IREM de Nantes) 23 / 140

(41)

v=(1)s×m×2E binary32(#E,#m)=(8,24)

binary64(#E,#m)=(11,53).

toy7(#E,#m)=(3,4).

(IREM de Nantes) 24 / 140

(42)

v=(1)s×m×2E binary32(#E,#m)=(8,24)

binary64(#E,#m)=(11,53).

toy7(#E,#m)=(3,4).

(IREM de Nantes) 24 / 140

(43)

v=(1)s×m×2E binary32(#E,#m)=(8,24)

binary64(#E,#m)=(11,53).

toy7(#E,#m)=(3,4).

(IREM de Nantes) 24 / 140

(44)

v=(1)s×m×2E binary32(#E,#m)=(8,24)

binary64(#E,#m)=(11,53).

toy7(#E,#m)=(3,4).

(IREM de Nantes) 24 / 140

(45)

v=(1)s×m×2E binary32(#E,#m)=(8,24)

binary64(#E,#m)=(11,53).

toy7(#E,#m)=(3,4).

(IREM de Nantes) 24 / 140

(46)

v=(1)s×m×2E binary32(#E,#m)=(8,24)

binary64(#E,#m)=(11,53).

toy7(#E,#m)=(3,4).

(IREM de Nantes) 24 / 140

(47)

v=(1)s×m×2E binary32(#E,#m)=(8,24)

binary64(#E,#m)=(11,53).

toy7(#E,#m)=(3,4).

(IREM de Nantes) 24 / 140

(48)

v=(1)s×m×2E binary32(#E,#m)=(8,24)

binary64(#E,#m)=(11,53).

toy7(#E,#m)=(3,4).

(IREM de Nantes) 24 / 140

(49)

v=(1)s×m×2E binary32(#E,#m)=(8,24)

binary64(#E,#m)=(11,53).

toy7(#E,#m)=(3,4).

(IREM de Nantes) 24 / 140

(50)

v=(1)s×m×2E binary32(#E,#m)=(8,24)

binary64(#E,#m)=(11,53).

toy7(#E,#m)=(3,4).

(IREM de Nantes) 24 / 140

(51)

v=(1)s×m×2E binary32(#E,#m)=(8,24)

binary64(#E,#m)=(11,53).

toy7(#E,#m)=(3,4).

(IREM de Nantes) 24 / 140

(52)

On peut également gagner de la place en ne stockant pas le signe de l’exposant.

Sur#Ebits on peut coder 2#E nombres.

La première moitié va donc de 0 à 2#E11.

Elle correspond aux exposants réels deEminjusqu’à 0.

La deuxième de 2#E1à 2#E1.

Elle correspond aux exposants de 1 jusqu’àEmax.

Il suffit donc de translater les exposants réels de 2#E11...

estocké=Eréel+2#E11

(IREM de Nantes) 25 / 140

(53)

On peut également gagner de la place en ne stockant pas le signe de l’exposant.

Sur#Ebits on peut coder 2#E nombres.

La première moitié va donc de 0 à 2#E11.

Elle correspond aux exposants réels deEminjusqu’à 0.

La deuxième de 2#E1à 2#E1.

Elle correspond aux exposants de 1 jusqu’àEmax.

Il suffit donc de translater les exposants réels de 2#E11...

estocké=Eréel+2#E11

(IREM de Nantes) 25 / 140

(54)

On peut également gagner de la place en ne stockant pas le signe de l’exposant.

Sur#Ebits on peut coder 2#E nombres.

La première moitié va donc de 0 à 2#E11.

Elle correspond aux exposants réels deEminjusqu’à 0.

La deuxième de 2#E1à 2#E1.

Elle correspond aux exposants de 1 jusqu’àEmax.

Il suffit donc de translater les exposants réels de 2#E11...

estocké=Eréel+2#E11

(IREM de Nantes) 25 / 140

(55)

On peut également gagner de la place en ne stockant pas le signe de l’exposant.

Sur#Ebits on peut coder 2#E nombres.

La première moitié va donc de 0 à 2#E11.

Elle correspond aux exposants réels deEminjusqu’à 0.

La deuxième de 2#E1à 2#E1.

Elle correspond aux exposants de 1 jusqu’àEmax.

Il suffit donc de translater les exposants réels de 2#E11...

estocké=Eréel+2#E11

(IREM de Nantes) 25 / 140

(56)

On peut également gagner de la place en ne stockant pas le signe de l’exposant.

Sur#Ebits on peut coder 2#E nombres.

La première moitié va donc de 0 à 2#E11.

Elle correspond aux exposants réels deEminjusqu’à 0.

La deuxième de 2#E1à 2#E1.

Elle correspond aux exposants de 1 jusqu’àEmax.

Il suffit donc de translater les exposants réels de 2#E11...

estocké=Eréel+2#E11

(IREM de Nantes) 25 / 140

(57)

On peut également gagner de la place en ne stockant pas le signe de l’exposant.

Sur#Ebits on peut coder 2#E nombres.

La première moitié va donc de 0 à 2#E11.

Elle correspond aux exposants réels deEminjusqu’à 0.

La deuxième de 2#E1à 2#E1.

Elle correspond aux exposants de 1 jusqu’àEmax.

Il suffit donc de translater les exposants réels de 2#E11...

estocké=Eréel+2#E11

(IREM de Nantes) 25 / 140

(58)

On peut également gagner de la place en ne stockant pas le signe de l’exposant.

Sur#Ebits on peut coder 2#E nombres.

La première moitié va donc de 0 à 2#E11.

Elle correspond aux exposants réels deEminjusqu’à 0.

La deuxième de 2#E1à 2#E1.

Elle correspond aux exposants de 1 jusqu’àEmax.

Il suffit donc de translater les exposants réels de 2#E11...

estocké=Eréel+2#E11

(IREM de Nantes) 25 / 140

(59)

On peut également gagner de la place en ne stockant pas le signe de l’exposant.

Sur#Ebits on peut coder 2#E nombres.

La première moitié va donc de 0 à 2#E11.

Elle correspond aux exposants réels deEminjusqu’à 0.

La deuxième de 2#E1à 2#E1.

Elle correspond aux exposants de 1 jusqu’àEmax.

Il suffit donc de translater les exposants réels de 2#E11...

estocké=Eréel+2#E11

(IREM de Nantes) 25 / 140

(60)

0,7510entoy7.

0,7510=310

2210=112×22=1,1002×21

e³

2311´=E= −1e= −1+3=2=102

s(1 bit) e(3 bits) f (3 bits)

0 0 1 0 1 0 0

(IREM de Nantes) 26 / 140

(61)

0,7510entoy7.

0,7510=310

2210=112×22=1,1002×21

e³

2311´=E= −1e= −1+3=2=102

s(1 bit) e(3 bits) f (3 bits)

0 0 1 0 1 0 0

(IREM de Nantes) 26 / 140

(62)

0,7510entoy7.

0,7510=310

2210=112×22=1,1002×21

e³

2311´=E= −1e= −1+3=2=102

s(1 bit) e(3 bits) f (3 bits)

0 0 1 0 1 0 0

(IREM de Nantes) 26 / 140

(63)

0,7510entoy7.

0,7510=310

2210=112×22=1,1002×21

e³

2311´=E= −1e= −1+3=2=102

s(1 bit) e(3 bits) f (3 bits)

0 0 1 0 1 0 0

(IREM de Nantes) 26 / 140

(64)

0,7510entoy7.

0,7510=310

2210=112×22=1,1002×21

e³

2311´=E= −1e= −1+3=2=102

s(1 bit) e(3 bits) f (3 bits)

0 0 1 0 1 0 0

(IREM de Nantes) 26 / 140

(65)

0,7510entoy7.

0,7510=310

2210=112×22=1,1002×21

e³

2311´=E= −1e= −1+3=2=102

s(1 bit) e(3 bits) f (3 bits)

0 0 1 0 1 0 0

(IREM de Nantes) 26 / 140

(66)

0,7510entoy7.

0,7510=310

2210=112×22=1,1002×21

e³

2311´=E= −1e= −1+3=2=102

s(1 bit) e(3 bits) f (3 bits)

0 0 1 0 1 0 0

(IREM de Nantes) 27 / 140

(67)

0,7510entoy7.

0,7510=310

2210=112×22=1,1002×21

e³

2311´=E= −1e= −1+3=2=102

s(1 bit) e(3 bits) f (3 bits)

0 0 1 0 1 0 0

(IREM de Nantes) 28 / 140

(68)

Comment écrire en base 2 la partie fractionnaire d’un nombre en base 10 ? 0,75=b1×21+b2×22+ · · ·

2×0,75=b1+b2×21+ · · · On voit poindre un bel algo...

(IREM de Nantes) 29 / 140

(69)

Comment écrire en base 2 la partie fractionnaire d’un nombre en base 10 ? 0,75=b1×21+b2×22+ · · ·

2×0,75=b1+b2×21+ · · · On voit poindre un bel algo...

(IREM de Nantes) 29 / 140

(70)

Comment écrire en base 2 la partie fractionnaire d’un nombre en base 10 ? 0,75=b1×21+b2×22+ · · ·

2×0,75=b1+b2×21+ · · · On voit poindre un bel algo...

(IREM de Nantes) 29 / 140

(71)

Comment écrire en base 2 la partie fractionnaire d’un nombre en base 10 ? 0,75=b1×21+b2×22+ · · ·

2×0,75=b1+b2×21+ · · · On voit poindre un bel algo...

(IREM de Nantes) 29 / 140

(72)

Exercice 1

Pourquoi le Patriot a raté son Scud de 600m ?

Représentez 1/10 avec une mantisse de 24 bits et tronquez le résultat.

Calculez l’erreur en seconde puis après 100 heures d’utilisation. Sachant qu’un Scud vole à 1676 m s1, quelle est environ l’erreur commise en mètres ?

Et si on avait arrondi au plus proche ?

(IREM de Nantes) 30 / 140

(73)

1 Préambule

2 La norme IEEE 754 Différents formats

Les normaux, les sous-normaux et les paranormaux

3 Algèbre des nombres VF

4 Réels, arrondis et flottants

5 Que la force de l’erreur soit avec vous Atelier Padawan # 1 : majorer l’erreur Atelier Padawan # 2 : somme de flottants Atelier Padawan # 3 : somme compensée de flottants quelconques

6 Des sujets de Bac maladroits...

7 Lectures recommandées pour aller plus loin

(IREM de Nantes) 31 / 140

(74)

(IREM de Nantes) 32 / 140

(75)

emin=0

emax=2#E1

e=E+2(#E)11

toy7,#E=3,emin=000,emax=111=10001

Les valeurs extrêmes deEsont réservées pour des cas spéciaux Emin=³

emin2(#E)1+1´+1=0231+1+1= −2

Emax=³

emax2(#E)1+1´1=(231)231+11=74+11=3

(IREM de Nantes) 33 / 140

(76)

emin=0

emax=2#E1

e=E+2(#E)11

toy7,#E=3,emin=000,emax=111=10001

Les valeurs extrêmes deEsont réservées pour des cas spéciaux Emin=³

emin2(#E)1+1´+1=0231+1+1= −2

Emax=³

emax2(#E)1+1´1=(231)231+11=74+11=3

(IREM de Nantes) 33 / 140

(77)

emin=0

emax=2#E1

e=E+2(#E)11

toy7,#E=3,emin=000,emax=111=10001

Les valeurs extrêmes deEsont réservées pour des cas spéciaux Emin=³

emin2(#E)1+1´+1=0231+1+1= −2

Emax=³

emax2(#E)1+1´1=(231)231+11=74+11=3

(IREM de Nantes) 33 / 140

(78)

emin=0

emax=2#E1

e=E+2(#E)11

toy7,#E=3,emin=000,emax=111=10001

Les valeurs extrêmes deEsont réservées pour des cas spéciaux Emin=³

emin2(#E)1+1´+1=0231+1+1= −2

Emax=³

emax2(#E)1+1´1=(231)231+11=74+11=3

(IREM de Nantes) 33 / 140

(79)

emin=0

emax=2#E1

e=E+2(#E)11

toy7,#E=3,emin=000,emax=111=10001 Les valeurs extrêmes deEsont réservées pour des cas spéciaux

Emin=³

emin2(#E)1+1´+1=0231+1+1= −2

Emax=³

emax2(#E)1+1´1=(231)231+11=74+11=3

(IREM de Nantes) 33 / 140

(80)

emin=0

emax=2#E1

e=E+2(#E)11

toy7,#E=3,emin=000,emax=111=10001 Les valeurs extrêmes deEsont réservées pour des cas spéciaux

Emin=³

emin2(#E)1+1´+1=0231+1+1= −2

Emax=³

emax2(#E)1+1´1=(231)231+11=74+11=3

(IREM de Nantes) 33 / 140

(81)

emin=0

emax=2#E1

e=E+2(#E)11

toy7,#E=3,emin=000,emax=111=10001 Les valeurs extrêmes deEsont réservées pour des cas spéciaux

Emin=³

emin2(#E)1+1´+1=0231+1+1= −2

Emax=³

emax2(#E)1+1´1=(231)231+11=74+11=3

(IREM de Nantes) 33 / 140

Références

Documents relatifs

inéquation par un nombre négatif on

Les formules utilisées dans l'évaluation des intérêts composés sont des applications de la croissance exponentielle. Si les intérêts sont composés k fois par année, et si le

Dans la même veine, prendre l’exposant d’un nombre revient à compter en terme de fois

Lorsqu’on a plusieurs opérations, on peut mettre des parenthèses pour savoir quelle opération faire en premier1. Par contre pour éviter d’avoir des parenthèses un peu partout il y

En outre, Joël et Line ont choisi leurs neuf nombres de manière à ce que le plus grand d’entre eux soit le plus petit possible. Line est satisfaite car son plus grand nombre (16)

L’utilisation d’exposant fractionnaire pour les racines n-ième est cohérent avec les propriétés des exposants....

L’utilisation d’exposant fractionnaire pour les racines n-ième est cohérent avec les propriétés des exposants6. Naturellement, pour n pair, il

Propriété : Pour calculer une expression qui contient des parenthèses, on effectue d’abord les calculs situés entre