Calculs ``exacts'' avec une arithmétique approchée

105
Calculs “exacts” avec une arithmétique approchée Jean-Michel Muller CNRS - Laboratoire LIP (CNRS-INRIA-Université de Lyon) septembre 2008 http://perso.ens-lyon.fr/jean-michel.muller/ -1-

Transcript of Calculs ``exacts'' avec une arithmétique approchée

Page 1: Calculs ``exacts'' avec une arithmétique approchée

Calculs “exacts” avec une arithmétique approchée

Jean-Michel MullerCNRS - Laboratoire LIP

(CNRS-INRIA-Université de Lyon)septembre 2008

http://perso.ens-lyon.fr/jean-michel.muller/

-1-

Page 2: Calculs ``exacts'' avec une arithmétique approchée

Arithmétique virgule flottante ?

utilisée partout en calcul scientifique ;x = mx × βex ;approche “floue” : valeur calculée de x + y = (x + y)(1 + ε).

Meilleure approche ?

-2-

Page 3: Calculs ``exacts'' avec une arithmétique approchée

Arithmétique virgule flottante ?

utilisée partout en calcul scientifique ;x = mx × βex ;approche “floue” : valeur calculée de x + y = (x + y)(1 + ε).

Meilleure approche ?

-2-

Page 4: Calculs ``exacts'' avec une arithmétique approchée

Besoins ? Quelques chiffres. . .

dynamique :

Diamètre estimé Univers observableLongueur de Planck

≈ 1062

précision : certaines prédictions de la mécanique quantique etde la relativité générale vérifiées avec erreur relative ≈ 10−14

calculs intermédiaires : “quad précision” (113 bits) etalgorithmes sophistiqués pour la stabilité à trèèèès long termedu système solaire(J. Laskar, Observatoire de Paris).record actuel : 1241 milliards de chiffres de base 10 de π(Kanada, 2002), en utilisant

π = 48 arctan 149 + 128 arctan 1

57 − 20 arctan 1239 + 48 arctan 1

110443

= 176 arctan 157 + 28 arctan 1

239 − 48 arctan 1682 + 96 arctan 1

12943

-3-

Page 5: Calculs ``exacts'' avec une arithmétique approchée

Besoins ? Quelques chiffres. . .

dynamique :

Diamètre estimé Univers observableLongueur de Planck

≈ 1062

précision : certaines prédictions de la mécanique quantique etde la relativité générale vérifiées avec erreur relative ≈ 10−14

calculs intermédiaires : “quad précision” (113 bits) etalgorithmes sophistiqués pour la stabilité à trèèèès long termedu système solaire(J. Laskar, Observatoire de Paris).record actuel : 1241 milliards de chiffres de base 10 de π(Kanada, 2002), en utilisant

π = 48 arctan 149 + 128 arctan 1

57 − 20 arctan 1239 + 48 arctan 1

110443

= 176 arctan 157 + 28 arctan 1

239 − 48 arctan 1682 + 96 arctan 1

12943

-3-

Page 6: Calculs ``exacts'' avec une arithmétique approchée

Besoins ? Quelques chiffres. . .

dynamique :

Diamètre estimé Univers observableLongueur de Planck

≈ 1062

précision : certaines prédictions de la mécanique quantique etde la relativité générale vérifiées avec erreur relative ≈ 10−14

calculs intermédiaires : “quad précision” (113 bits) etalgorithmes sophistiqués pour la stabilité à trèèèès long termedu système solaire(J. Laskar, Observatoire de Paris).

record actuel : 1241 milliards de chiffres de base 10 de π(Kanada, 2002), en utilisant

π = 48 arctan 149 + 128 arctan 1

57 − 20 arctan 1239 + 48 arctan 1

110443

= 176 arctan 157 + 28 arctan 1

239 − 48 arctan 1682 + 96 arctan 1

12943

-3-

Page 7: Calculs ``exacts'' avec une arithmétique approchée

Besoins ? Quelques chiffres. . .

dynamique :

Diamètre estimé Univers observableLongueur de Planck

≈ 1062

précision : certaines prédictions de la mécanique quantique etde la relativité générale vérifiées avec erreur relative ≈ 10−14

calculs intermédiaires : “quad précision” (113 bits) etalgorithmes sophistiqués pour la stabilité à trèèèès long termedu système solaire(J. Laskar, Observatoire de Paris).record actuel : 1241 milliards de chiffres de base 10 de π(Kanada, 2002), en utilisant

π = 48 arctan 149 + 128 arctan 1

57 − 20 arctan 1239 + 48 arctan 1

110443

= 176 arctan 157 + 28 arctan 1

239 − 48 arctan 1682 + 96 arctan 1

12943

-3-

Page 8: Calculs ``exacts'' avec une arithmétique approchée

On peut faire du très mauvais travail. . .

1994 : bug de la division du Pentium,8391667/12582905 donnait0.666869 · · · au lieu de 0.666910 · · · ;

Sur certains ordinateurs Cray on pouvait déclencher unoverflow en multipliant par 1 ;Maple, version 6.0. Entrez 214748364810, vous obtiendrez 10.

Noter que 2147483648 = 231.Maple, version 7.0, si l’on calcule 5001!

5000! on obtient 1 au lieu de5001 ;Excel’2007, calculez 65535− 2−37, vous obtiendrez 100000 ;

-4-

Page 9: Calculs ``exacts'' avec une arithmétique approchée

On peut faire du très mauvais travail. . .

1994 : bug de la division du Pentium,8391667/12582905 donnait0.666869 · · · au lieu de 0.666910 · · · ;

Sur certains ordinateurs Cray on pouvait déclencher unoverflow en multipliant par 1 ;

Maple, version 6.0. Entrez 214748364810, vous obtiendrez 10.Noter que 2147483648 = 231.Maple, version 7.0, si l’on calcule 5001!

5000! on obtient 1 au lieu de5001 ;Excel’2007, calculez 65535− 2−37, vous obtiendrez 100000 ;

-4-

Page 10: Calculs ``exacts'' avec une arithmétique approchée

On peut faire du très mauvais travail. . .

1994 : bug de la division du Pentium,8391667/12582905 donnait0.666869 · · · au lieu de 0.666910 · · · ;

Sur certains ordinateurs Cray on pouvait déclencher unoverflow en multipliant par 1 ;Maple, version 6.0. Entrez 214748364810, vous obtiendrez 10.Noter que 2147483648 = 231.

Maple, version 7.0, si l’on calcule 5001!5000! on obtient 1 au lieu de

5001 ;Excel’2007, calculez 65535− 2−37, vous obtiendrez 100000 ;

-4-

Page 11: Calculs ``exacts'' avec une arithmétique approchée

On peut faire du très mauvais travail. . .

1994 : bug de la division du Pentium,8391667/12582905 donnait0.666869 · · · au lieu de 0.666910 · · · ;

Sur certains ordinateurs Cray on pouvait déclencher unoverflow en multipliant par 1 ;Maple, version 6.0. Entrez 214748364810, vous obtiendrez 10.Noter que 2147483648 = 231.Maple, version 7.0, si l’on calcule 5001!

5000! on obtient 1 au lieu de5001 ;

Excel’2007, calculez 65535− 2−37, vous obtiendrez 100000 ;

-4-

Page 12: Calculs ``exacts'' avec une arithmétique approchée

On peut faire du très mauvais travail. . .

1994 : bug de la division du Pentium,8391667/12582905 donnait0.666869 · · · au lieu de 0.666910 · · · ;

Sur certains ordinateurs Cray on pouvait déclencher unoverflow en multipliant par 1 ;Maple, version 6.0. Entrez 214748364810, vous obtiendrez 10.Noter que 2147483648 = 231.Maple, version 7.0, si l’on calcule 5001!

5000! on obtient 1 au lieu de5001 ;Excel’2007, calculez 65535− 2−37, vous obtiendrez 100000 ;

-4-

Page 13: Calculs ``exacts'' avec une arithmétique approchée

Beaucoup de bizzareries

Machine Setun, université de Moscou, 1958. 50 exemplaires ;

base 3 et chiffres −1, 0 et 1. Nombres sur 18 « trits » ;idée : base β, nombre de chiffres n, + grand nombrereprésenté M. Mesure du « coût » : β × n.minimiser β × n sachant que βn ≈ M. Si variables réelles,optimum β = e = 2.718 . . . ≈ 3.

-5-

Page 14: Calculs ``exacts'' avec une arithmétique approchée

Beaucoup de bizzareries

Machine Setun, université de Moscou, 1958. 50 exemplaires ;base 3 et chiffres −1, 0 et 1. Nombres sur 18 « trits » ;

idée : base β, nombre de chiffres n, + grand nombrereprésenté M. Mesure du « coût » : β × n.

minimiser β × n sachant que βn ≈ M. Si variables réelles,optimum β = e = 2.718 . . . ≈ 3.

-5-

Page 15: Calculs ``exacts'' avec une arithmétique approchée

Beaucoup de bizzareries

Machine Setun, université de Moscou, 1958. 50 exemplaires ;base 3 et chiffres −1, 0 et 1. Nombres sur 18 « trits » ;idée : base β, nombre de chiffres n, + grand nombrereprésenté M. Mesure du « coût » : β × n.minimiser β × n sachant que βn ≈ M. Si variables réelles,optimum β = e = 2.718 . . . ≈ 3.

-5-

Page 16: Calculs ``exacts'' avec une arithmétique approchée

Système virgule flottante

Paramètres : base β ≥ 2précision p ≥ 1exposants extrèmes Emin,Emax

Un nombre VF fini x est représenté par 2 entiers :mantisse entière : M, |M| ≤ βp − 1 ;exposant e, Emin ≤ e ≤ Emax.

tels quex = M × βe+1−p

On appelle mantisse réelle, ou mantisse de x le nombre

m = M × β1−p,

ce qui donne x = m × βe .-6-

Page 17: Calculs ``exacts'' avec une arithmétique approchée

Représentation normale

Buts :représentation unique ;a priori la plus précise (3.142× 100 vs. 0.003× 103).

La représentation normale de x , si elle existe, est celle pour laquelle1 ≤ m < β. C’est celle qui minimise l’exposant.En base 2 le premier chiffre de mantisse d’un nombre normal est un“1” → pas besoin de le mémoriser (convention du 1 implicite).Un nombre sous-normal est un nombre de la forme

M × βEmin+1−p.

avec |M| ≤ βp−1 − 1. Un tel nombre n’a pas de représentationnormale.Correspond à ±0.xxxxxxxx × βEmin.

-7-

Page 18: Calculs ``exacts'' avec une arithmétique approchée

0 βEminβEmin+1 βEmin+2

0 βEminβEmin+1 βEmin+2

aa − b b

aa − b b

Fig.: En haut : nombres VF normaux. Dans cet ensemble, a− b n’est pasreprésentable → le calcul a− b donnera 0 en arrondi au plus près. Enbas : on ajoute les sous-normaux.

-8-

Page 19: Calculs ``exacts'' avec une arithmétique approchée

Système β p Emin Emax + grand représ.DEC VAX 2 24 -128 126 1.7 · · · × 1038

( D format ) 2 56 -128 126 1.7 · · · × 1038

HP 28, 48G 10 12 -500 498 9.9 · · · × 10498

IBM 370 16 6 (24 bits) -65 62 7.2 · · · × 1075

et 3090 16 14 (56 bits) -65 62 7.2 · · · × 1075

IEEE-754 2 23+1 -126 127 3.4 · · · × 1038

2 52+1 -1022 1023 1.8 · · · × 10308

IEEE-754-R“binary 128” 2 112+1 -16382 16383 1.2 · · · × 104932

IEEE-754-R“decimal 64” 10 16 -383 384 9.999 · · · 9× 10384

-9-

Page 20: Calculs ``exacts'' avec une arithmétique approchée

Norme IEEE-754 pour l’arithmétique flottante (1985, et2008)

a mis fin à une pagaille (très mauvaise portabilité desalgorithmes numérique) ;leader : W. Kahan (père de l’arithmétique des HP35 et Intel8087) ;formats ;spécification des opérations, des conversions, etc. ;gestion des exceptions (max+1, 1/0,

√−2, 0/0, etc.) ;

nouvelle révision adoptée en juin 2008.

-10-

Page 21: Calculs ``exacts'' avec une arithmétique approchée

Arrondi correct

Definition 1 (Arrondi correct)

Mode d’arrondi actif parmi :au plus près (défaut) s’il y en a deux, celui dont la mantisseentière est paire ;vers +∞.vers −∞.vers zéro.

Une opération dont les entrées sont des nombres VF doit retournerce qu’on obtiendrait en arrondissant le résultat exact.

-11-

Page 22: Calculs ``exacts'' avec une arithmétique approchée

Arrondi correct

IEEE-754 (1985) : Arrondi correct pour +, −, ×, ÷, √ et certainesconversions. Avantages :

si le résultat d’une opération est exactement représentable, onl’obtient ;si on n’utilise que +, −, ×, ÷ et √, l’arithmétique estdéterministe : on peut élaborer des algorithmes et des preuvesqui utilisent ces spécifications ;précision et portabilité améliorées ;en jouant avec les arrondis vers +∞ et −∞→ bornescertaines sur le résultat d’un calcul.

L’arithmétique VF devient une structure mathématique en ellemême, que l’on peut étudier.

-12-

Page 23: Calculs ``exacts'' avec une arithmétique approchée

Gestion des exceptions

Nov. 1998, navire lance-missiles américain USS Yorktown, on apar erreur tapé un «zéro» sur un clavier → division par 0. Leprogrammeur n’avait pas songé que ce problème pourraitarriver → cascade d’erreurs → arrêt du système de propulsion.

premier envol. . . et premier plongeon d’Ariane 5 (500 M$)

Vitesse horizontale de la fusée calculée sur des flottants 64 bits.Dans le programme du calculateur de bord, conversion vers unentier 16 bits. Il n’avait pas été envisagé que cette conversion puissefaire un dépassement. Fonctionnait très bien sur Ariane 4.

-13-

Page 24: Calculs ``exacts'' avec une arithmétique approchée

Gestion des exceptions

Nov. 1998, navire lance-missiles américain USS Yorktown, on apar erreur tapé un «zéro» sur un clavier → division par 0. Leprogrammeur n’avait pas songé que ce problème pourraitarriver → cascade d’erreurs → arrêt du système de propulsion.premier envol. . . et premier plongeon d’Ariane 5 (500 M$)

Vitesse horizontale de la fusée calculée sur des flottants 64 bits.Dans le programme du calculateur de bord, conversion vers unentier 16 bits. Il n’avait pas été envisagé que cette conversion puissefaire un dépassement. Fonctionnait très bien sur Ariane 4. -13-

Page 25: Calculs ``exacts'' avec une arithmétique approchée

Erreur de l’addition VF (Møller, Knuth, Dekker)

Premier résultat : représentabilité. RN (x) = x arrondi au plus près.

Lemme 1

Soient a et b deux nombres VF. Soient

s = RN (a + b)

etr = (a + b)− s.

s’il n’y a pas de dépassement de capacité en calculant s, alors r estun nombre VF.

-14-

Page 26: Calculs ``exacts'' avec une arithmétique approchée

Erreur de l’addition VF (Møller, Knuth, Dekker)

Démonstration : Supposons |a| ≥ |b|,1 s est “le” nombre VF le plus proche de a + b → il est plus près

de a + b que a ne l’est. Donc |(a + b)− s| ≤ |(a + b)− a|, parconséquent

|r | ≤ |b|.

2 posons a = Ma × βea−p+1 et b = Mb × βeb−p+1, avec|Ma|, |Mb| ≤ βp − 1, et ea ≥ eb.a + b est multiple de βeb−p+1 ⇒ s et r sont multiples deβeb−p+1 également ⇒ ∃R ∈ Z t.q.

r = R × βeb−p+1

mais |r | ≤ |b| ⇒ |R| ≤ |Mb| ≤ βp − 1⇒ r est un nombre VF.

-15-

Page 27: Calculs ``exacts'' avec une arithmétique approchée

Erreur de l’addition VF (Møller, Knuth, Dekker)

Démonstration : Supposons |a| ≥ |b|,1 s est “le” nombre VF le plus proche de a + b → il est plus près

de a + b que a ne l’est. Donc |(a + b)− s| ≤ |(a + b)− a|, parconséquent

|r | ≤ |b|.

2 posons a = Ma × βea−p+1 et b = Mb × βeb−p+1, avec|Ma|, |Mb| ≤ βp − 1, et ea ≥ eb.a + b est multiple de βeb−p+1 ⇒ s et r sont multiples deβeb−p+1 également ⇒ ∃R ∈ Z t.q.

r = R × βeb−p+1

mais |r | ≤ |b| ⇒ |R| ≤ |Mb| ≤ βp − 1⇒ r est un nombre VF.

-15-

Page 28: Calculs ``exacts'' avec une arithmétique approchée

Obtenir r : l’algorithme fast2sum (Dekker)

Théorème 1 (Fast2Sum (Dekker))

β ≤ 3. Soient a et b des nombres VF dont les exposants vérifientea ≥ eb (si |a| ≥ |b|,OK). Algorithme suivant : s et r t.q.

s + r = a + b exactement ;s est “le” nombre VF le plus proche de a + b.

Algorithme 1 (FastTwoSum)

s ← RN (a + b)z ← RN (s − a)r ← RN (b − z)

Programme C 1s = a+b;z = s-a;r = b-z;

Démonstration : Montrer que s − a et b − z sont exactementreprésentables.

-16-

Page 29: Calculs ``exacts'' avec une arithmétique approchée

Algorithme TwoSum (Møller-Knuth)

pas besoin de comparer a et b ;

6 opérations au lieu de 3→ moins cher qu’une mauvaiseprédiction de branchement en comparant a et b.

Algorithme 2 (TwoSum)

s ← RN (a + b)a′ ← RN (s − b)b′ ← RN (s − a′)δa ← RN (a − a′)δb ← RN (b − b′)r ← RN (δa + δb)

Knuth : ∀β, en absence d’underflow etd’overflow a + b = s + r , et s est lenombre VF le plus proche de a + b.

Boldo et al : (preuve formelle) en base2, marche même si underflow.

Preuves formelles (en Coq) d’algorithmes similaires très pratiques :http://lipforge.ens-lyon.fr/www/pff/Fast2Sum.html.

-17-

Page 30: Calculs ``exacts'' avec une arithmétique approchée

Algorithme TwoSum (Møller-Knuth)

pas besoin de comparer a et b ;6 opérations au lieu de 3→ moins cher qu’une mauvaiseprédiction de branchement en comparant a et b.

Algorithme 2 (TwoSum)

s ← RN (a + b)a′ ← RN (s − b)b′ ← RN (s − a′)δa ← RN (a − a′)δb ← RN (b − b′)r ← RN (δa + δb)

Knuth : ∀β, en absence d’underflow etd’overflow a + b = s + r , et s est lenombre VF le plus proche de a + b.

Boldo et al : (preuve formelle) en base2, marche même si underflow.

Preuves formelles (en Coq) d’algorithmes similaires très pratiques :http://lipforge.ens-lyon.fr/www/pff/Fast2Sum.html.

-17-

Page 31: Calculs ``exacts'' avec une arithmétique approchée

Algorithme TwoSum (Møller-Knuth)

pas besoin de comparer a et b ;6 opérations au lieu de 3→ moins cher qu’une mauvaiseprédiction de branchement en comparant a et b.

Algorithme 2 (TwoSum)

s ← RN (a + b)a′ ← RN (s − b)b′ ← RN (s − a′)δa ← RN (a − a′)δb ← RN (b − b′)r ← RN (δa + δb)

Knuth : ∀β, en absence d’underflow etd’overflow a + b = s + r , et s est lenombre VF le plus proche de a + b.

Boldo et al : (preuve formelle) en base2, marche même si underflow.

Preuves formelles (en Coq) d’algorithmes similaires très pratiques :http://lipforge.ens-lyon.fr/www/pff/Fast2Sum.html.

-17-

Page 32: Calculs ``exacts'' avec une arithmétique approchée

Algorithme TwoSum (Møller-Knuth)

pas besoin de comparer a et b ;6 opérations au lieu de 3→ moins cher qu’une mauvaiseprédiction de branchement en comparant a et b.

Algorithme 2 (TwoSum)

s ← RN (a + b)a′ ← RN (s − b)b′ ← RN (s − a′)δa ← RN (a − a′)δb ← RN (b − b′)r ← RN (δa + δb)

Knuth : ∀β, en absence d’underflow etd’overflow a + b = s + r , et s est lenombre VF le plus proche de a + b.

Boldo et al : (preuve formelle) en base2, marche même si underflow.

Preuves formelles (en Coq) d’algorithmes similaires très pratiques :http://lipforge.ens-lyon.fr/www/pff/Fast2Sum.html.

-17-

Page 33: Calculs ``exacts'' avec une arithmétique approchée

Méthodes de sommation compensée (Kahan, Priest,Rump. . . )

2sum 2sum 2sum 2sum...

an

rn−1

S

a3a2 a4

a1

r1 r2 r3

S + (r1 + r2 + · · · + rn−1) = a1 + a2 + · · · + an−1 exactement ;1ère solution : calculer S + (r1 + r2 + · · · + rn−1) commed’habitude. Si les ai ont le même signe, en double précision(β = 2, p = 53) et arrondi au plus près, on peut ajouter√2× 226 valeurs et avoir une erreur ≤ poids du dernier bit ;

2ème solution : utiliser à nouveau le même truc pour ajouterles ri ’s

-18-

Page 34: Calculs ``exacts'' avec une arithmétique approchée

Et les produits ?

FMA : fused multiply-add (fma), calcule RN (ab + c).RS6000, Itanium et PowerPC. Est dans le nouveau standard ;si a et b sont des nombres VF, alors r = ab − RN (ab) est unnombre VF ;

obtenu par l’algorithme TwoMultFMA{

p = RN (ab)r = RN (ab − p)

→ 2 opérations seulement. p + r = ab.sans fma, algorithme de Dekker : 17 opérations (7 ×, 10 ±).

Itanium 2 PowerPC 5

-19-

Page 35: Calculs ``exacts'' avec une arithmétique approchée

Une autre propriété (Kahan)

z =x√

x2 + y2

arrondi correct, arrondi au plus près, base 2 ;x et y sont des nombres VF ;pas d’overflow/underflow.

La valeur calculée de z est comprise au sens large entre −1 et +1.Propriété très importante car jugée (naïvement !) évidente par laplupart des programmeurs, qui pourront par exemple calculer unefonction de z définie seulement entre −1 et +1.

-20-

Page 36: Calculs ``exacts'' avec une arithmétique approchée

Une autre propriété (Kahan)

z =x√

x2 + y2

arrondi correct, arrondi au plus près, base 2 ;x et y sont des nombres VF ;pas d’overflow/underflow.

La valeur calculée de z est comprise au sens large entre −1 et +1.

Propriété très importante car jugée (naïvement !) évidente par laplupart des programmeurs, qui pourront par exemple calculer unefonction de z définie seulement entre −1 et +1.

-20-

Page 37: Calculs ``exacts'' avec une arithmétique approchée

Une autre propriété (Kahan)

z =x√

x2 + y2

arrondi correct, arrondi au plus près, base 2 ;x et y sont des nombres VF ;pas d’overflow/underflow.

La valeur calculée de z est comprise au sens large entre −1 et +1.Propriété très importante car jugée (naïvement !) évidente par laplupart des programmeurs, qui pourront par exemple calculer unefonction de z définie seulement entre −1 et +1.

-20-

Page 38: Calculs ``exacts'' avec une arithmétique approchée

L’algorithme de Malcolm-Gentleman

Hypothèses : arithmétique VF, base β, arrondi correct, pas dedépassement.

A := 1.0;B := 1.0;while ((A+1.0)-A)-1.0 = 0.0 do A := 2*A;while ((A+B)-A)-B <> 0.0 do B := B+1.0;return(B)

Que fait ce petit programme ?

-21-

Page 39: Calculs ``exacts'' avec une arithmétique approchée

Erreur d’un FMA

En collaboration avec Sylvie Boldo (2005) ;β = 2, p ≥ 3, fma, ni underflow ni overflow ;a, x , y : nombres VF ;un fma calcule r1 = RN (ax + y) ;Deux questions :

combien faut-il de nombres VF pour représenter r1 − (ax + y) ?peut-on les calculer facilement ?

Réponses :

deux nombres ;il faut 19 opérations (1 TwoMultFMA, 2 TwoSum, 2 additions,1 FastTwoSum) ;Je n’avais aucune confiance en notre preuve avant que SylvieBoldo la transcrive en Coq.

-22-

Page 40: Calculs ``exacts'' avec une arithmétique approchée

Erreur d’un FMA

En collaboration avec Sylvie Boldo (2005) ;β = 2, p ≥ 3, fma, ni underflow ni overflow ;a, x , y : nombres VF ;un fma calcule r1 = RN (ax + y) ;Deux questions :

combien faut-il de nombres VF pour représenter r1 − (ax + y) ?peut-on les calculer facilement ?

Réponses :

deux nombres ;il faut 19 opérations (1 TwoMultFMA, 2 TwoSum, 2 additions,1 FastTwoSum) ;Je n’avais aucune confiance en notre preuve avant que SylvieBoldo la transcrive en Coq.

-22-

Page 41: Calculs ``exacts'' avec une arithmétique approchée

Erreur d’un FMA

En collaboration avec Sylvie Boldo (2005) ;β = 2, p ≥ 3, fma, ni underflow ni overflow ;a, x , y : nombres VF ;un fma calcule r1 = RN (ax + y) ;Deux questions :

combien faut-il de nombres VF pour représenter r1 − (ax + y) ?peut-on les calculer facilement ?

Réponses :deux nombres ;

il faut 19 opérations (1 TwoMultFMA, 2 TwoSum, 2 additions,1 FastTwoSum) ;Je n’avais aucune confiance en notre preuve avant que SylvieBoldo la transcrive en Coq.

-22-

Page 42: Calculs ``exacts'' avec une arithmétique approchée

Erreur d’un FMA

En collaboration avec Sylvie Boldo (2005) ;β = 2, p ≥ 3, fma, ni underflow ni overflow ;a, x , y : nombres VF ;un fma calcule r1 = RN (ax + y) ;Deux questions :

combien faut-il de nombres VF pour représenter r1 − (ax + y) ?peut-on les calculer facilement ?

Réponses :deux nombres ;il faut 19 opérations (1 TwoMultFMA, 2 TwoSum, 2 additions,1 FastTwoSum) ;

Je n’avais aucune confiance en notre preuve avant que SylvieBoldo la transcrive en Coq.

-22-

Page 43: Calculs ``exacts'' avec une arithmétique approchée

Erreur d’un FMA

En collaboration avec Sylvie Boldo (2005) ;β = 2, p ≥ 3, fma, ni underflow ni overflow ;a, x , y : nombres VF ;un fma calcule r1 = RN (ax + y) ;Deux questions :

combien faut-il de nombres VF pour représenter r1 − (ax + y) ?peut-on les calculer facilement ?

Réponses :deux nombres ;il faut 19 opérations (1 TwoMultFMA, 2 TwoSum, 2 additions,1 FastTwoSum) ;Je n’avais aucune confiance en notre preuve avant que SylvieBoldo la transcrive en Coq.

-22-

Page 44: Calculs ``exacts'' avec une arithmétique approchée

On n’a pas besoin d’ordinateurs pour commettre des sottises

la sonde Mars Climate Orbiters’est écrasée sur Mars en 1999 ;

une partie des développeurs deslogiciels supposait que l’unité demesure était le mètre ;l’autre partie croyait que c’étaitle pied.

-23-

Page 45: Calculs ``exacts'' avec une arithmétique approchée

On n’a pas besoin d’ordinateurs pour commettre des sottises

la sonde Mars Climate Orbiters’est écrasée sur Mars en 1999 ;une partie des développeurs deslogiciels supposait que l’unité demesure était le mètre ;

l’autre partie croyait que c’étaitle pied.

-23-

Page 46: Calculs ``exacts'' avec une arithmétique approchée

On n’a pas besoin d’ordinateurs pour commettre des sottises

la sonde Mars Climate Orbiters’est écrasée sur Mars en 1999 ;une partie des développeurs deslogiciels supposait que l’unité demesure était le mètre ;l’autre partie croyait que c’étaitle pied.

-23-

Page 47: Calculs ``exacts'' avec une arithmétique approchée

Division utilisant la méthode de Newton-Raphson et un fma

Ici : version simplifiée d’une méthode utilisée sur Itanium. Précisionp, base 2. On veut calculer a/b. On suppose 1 ≤ a < 2 et1 ≤ b < 2 (mantisses de nombres VF normaux). Calculons déjà1/b.

Itération de Newton-Raphson pour calculer 1/b :

yn+1 = yn(2− byn)

On va chercher y0 ≈ 1/b dans une table adressée par lespremiers (typiquement 6 à 10) bits de b ;on décompose l’itération en deux fmas :{

en = RN (1− byn)yn+1 = RN (yn + enyn)

où RN (x) est l’arrondi au plus près de x .-24-

Page 48: Calculs ``exacts'' avec une arithmétique approchée

Propriété 1

Si ∣∣∣∣1b − yn

∣∣∣∣ < α2−k ,

où 1/2 < α ≤ 1 et k ≥ 1, alors∣∣∣∣1b − yn+1

∣∣∣∣ < b(1b− yn

)2

+ 2−k−p + 2−p−1

< 2−2k+1α2 + 2−k−p + 2−p−1

⇒ il semble qu’on peut s’approcher arbitrairement près de 2−p−1

(i.e., 1/2 ulp (1/b)), sans jamais toutefois l’atteindre.

-25-

Page 49: Calculs ``exacts'' avec une arithmétique approchée

Exemple : double précision de la norme IEEE-754

Supposons p = 53 et |y0 − 1b | < 2−8 (petite table), on trouve

|y1 − 1/b| < 0.501× 2−14

|y2 − 1/b| < 0.51× 2−28

|y3 − 1/b| < 0.57× 2−53 = 0.57 ulp (1/b)Comment aller plus loin ?

Propriété 2

Lorsque yn approche 1/b avec une erreur < 1 ulp (1/b) = 2−p,alors, comme b est multiple de 2−p+1 et yn est multiple de 2−p,1− byn est multiple de 2−2p+1.Or |1− byn| < 2−p+1 → 1− byn est exactement représentable envirgule flottante avec une précision de p bits → il est calculéexactement.

⇒∣∣∣∣1b − yn+1

∣∣∣∣ < b(1b− yn

)2

+ 2−p−1.-26-

Page 50: Calculs ``exacts'' avec une arithmétique approchée

∣∣∣∣yn −1b

∣∣∣∣ < α2−p ⇒∣∣∣∣yn+1 −

1b

∣∣∣∣ < bα22−2p + 2−p−1

(en supposant α < 1)

yn+1

1/b peut être dans cette zone

1/b doit être là pour êtreà plus d’1/2 ulp de yn+1

1 ulp = 2−p

-27-

Page 51: Calculs ``exacts'' avec une arithmétique approchée

Qu’en déduit-on ?

pour être à plus d’1/2 ulp de yn+1, 1/b doit être à moins debα22−2p < b2−2p du milieu de deux nombres VF consécutifs ;implique que la distance entre yn et 1/b est de la forme2−p−1 + ε, avec |ε| < b2−2p ;implique α < 1

2 + b2−p et donc en supposant p ≥ 4,∣∣∣∣yn+1 −1b

∣∣∣∣ < 2564

b2−2p + 2−p−1

donc pour être à plus d’1/2 ulp de yn+1, 1/b doit être à moinsde 25

64b2−2p du milieu de deux nombres VF consécutifs.

-28-

Page 52: Calculs ``exacts'' avec une arithmétique approchée

b est un nombre VF entre 1 et 2 (strictement) ⇒ il est de laforme B/2p−1 où B est un entier, 2p−1 < B ≤ 2p − 1 ;le milieu de de nombres VF au voisinage de 1/b est de la formeg = (2G + 1)/2p+1 où G est un entier, 2p−1 ≤ G < 2p − 1 ;on en déduit ∣∣∣∣g − 1

b

∣∣∣∣ = ∣∣∣∣2BG + B − 22p

B.2p+1

∣∣∣∣la distance entre 1/b et le milieu de 2 nombres machines estun multiple de 1/(B.2p+1) = 2−2p/b. Elle n’est pas nulle (saufdans le cas trivial où b = 1). Si 1/b est à moins de 25

64b2−2p

de g , alors nécessairement

2BG + B − 22p = ±1.

-29-

Page 53: Calculs ``exacts'' avec une arithmétique approchée

Comment procède-t-on ?

décomposition en facteurs premiers de 22p + 1 et 22p − 1on construit tous les couples (B,G ) possibles tels que

2p−1 < B ≤ 2p − 12p−1 ≤ G ≤ 2p − 1B(2G + 1) = 22p ± 1

En pratique il y en a très peu. Il y en a au moins un :B = 2p − 1 et G = 2p−1 : vient de 22p − 1 = (2p − 1)(2p + 1) ;pour tous les B (et donc les b = B/2p−1) qui ne sont pas dansla liste, on est certain que yn+1 = RN (1/b) ;autres valeurs : on essaie l’algorithme avec les 2 valeurspossibles de yn à moins d’un ulp de 1/b (i.e. les 2 nombres VFqui encadrent 1/b). La plupart du temps, ça marche (si uneseule marche, essayer de “bricoler” la table qui donne y0).

-30-

Page 54: Calculs ``exacts'' avec une arithmétique approchée

Application : double précision (p = 53)

On part de y0 tel que |y0 − 1b | < 2−8. On calcule :

e0 = RN (1− by0)y1 = RN (y0 + e0y0)e1 = RN (1− by1)y2 = RN (y1 + e1y1)e2 = RN (1− by1)y3 = RN (y2 + e2y2) erreur ≤ 0.57 ulpse3 = RN (1− by2)y4 = RN (y3 + e3y3) 1/b arrondi au plus près

. . . mais on n’a fait que la moitié du travail !

-31-

Page 55: Calculs ``exacts'' avec une arithmétique approchée

On a 1/b, il reste à calculer a/b

on part de yn+1 = RN (1/b) que l’on vient d’obtenir, et oncalcule q0 = RN (ayn+1) ;dans le cas a > b, donnera |q0 − a/b| < 1 ulp (a/b) ;sinon, en effectuant{

r0 = RN (a − bq0)q1 = RN (q0 + r0y)

on obtient |q1 − a/b| < 1 ulp (a/b) ;

Théorème 2 (Markstein)

Soit ◦ un des 4 modes d’arrondi. Si y est égal à 1/b arrondi au plusprès, et si q est à au plus un ulp de a/b, alors en effectuant{

r = RN (a − bq)q′ = ◦(q + ry)

On obtient q′ = ◦(a/b). -32-

Page 56: Calculs ``exacts'' avec une arithmétique approchée

Multiplication par des constantes de précision arbitraire

Travail avec Nicolas Brisebarre ;On veut RN (Cx), où x est un nombre VF, et C une constanteréelle (i.e., connue à la compilation).Valeurs typiques de C : π, 1/π, ln(2), ln(10), e, 1/k!, Bk/k!,1/10k , cos(kπ/N) et sin(kπ/N), . . .autre cas fréquent : C = 1

FP number (division par uneconstante) ;

-33-

Page 57: Calculs ``exacts'' avec une arithmétique approchée

Méthode naïve

remplacer C par Ch = RN (C ) ;calculer RN (Chx) (instruction y = Ch * x).

p Prop. de résultats-correctement arrondis

5 0.937506 0.781257 0.59375· · · · · ·16 0.8676517 0.73558· · · · · ·24 0.66805

Proportion de nombres VF x pour lesquels RN (Chx) = RN (Cx) pourC = π et diverses précisions p.

-34-

Page 58: Calculs ``exacts'' avec une arithmétique approchée

L’algorithme

Cx avec arrondi correct (au plus près) ;C n’est pas un nombre VF ;Une instruction fma correctement arrondie est disponible.Opérandes dans un format de base 2 et précision p ;On suppose que les nombres VF suivants sont précalculés :{

Ch = RN (C ),C` = RN (C − Ch),

-35-

Page 59: Calculs ``exacts'' avec une arithmétique approchée

L’algorithme

Algorithme 3 (Multiplication par C avec un produit et un fma)

A partir de x, calculer{u1 = RN (C`x),u2 = RN (Chx + u1).

Résultat final : u2.

Attention ! Il existe des C et x t.q. u2 6= RN (Cx) – facile àconstruire ;Sans perte de généralité, on suppose 1 < x < 2 et 1 < C < 2,que C n’est pas un nombre VF,et que C − Ch n’est pas unepuissance de 2 ;

-36-

Page 60: Calculs ``exacts'' avec une arithmétique approchée

L’algorithme

Algorithme 3 (Multiplication par C avec un produit et un fma)

A partir de x, calculer{u1 = RN (C`x),u2 = RN (Chx + u1).

Résultat final : u2.

Attention ! Il existe des C et x t.q. u2 6= RN (Cx) – facile àconstruire ;

Sans perte de généralité, on suppose 1 < x < 2 et 1 < C < 2,que C n’est pas un nombre VF,et que C − Ch n’est pas unepuissance de 2 ;

-36-

Page 61: Calculs ``exacts'' avec une arithmétique approchée

L’algorithme

Algorithme 3 (Multiplication par C avec un produit et un fma)

A partir de x, calculer{u1 = RN (C`x),u2 = RN (Chx + u1).

Résultat final : u2.

Attention ! Il existe des C et x t.q. u2 6= RN (Cx) – facile àconstruire ;Sans perte de généralité, on suppose 1 < x < 2 et 1 < C < 2,que C n’est pas un nombre VF,et que C − Ch n’est pas unepuissance de 2 ;

-36-

Page 62: Calculs ``exacts'' avec une arithmétique approchée

L’algorithme

Algorithme 3

A partir de x, calculer{u1 = RN (C`x),u2 = RN (Chx + u1).

résultat : u2.

Deux méthodes pour tester si ∀x , u2 = RN (Cx).

Méthode 1 : simple mais ne donne pas tjs une réponsecomplète ;Méthode 2 : donne tous les “mauvais cas”, ou certifie qu’il n’yen a pas.

-37-

Page 63: Calculs ``exacts'' avec une arithmétique approchée

Analysons l’algorithme

Majorant de la distance entre u2 et Cx :

Propriété 3

Pour tout nombre VF x, on a

|u2 − Cx | < 12ulp (u2) + 2 ulp (C`).

ulp(t) (unit in the last place) = distance entre nombres VF auvoisinage de t. Arrondi correct ↔ erreur ≤ 1

2 ulp.

ulp (t0.t1t2 · · · tp−1 × 2et ) = 2et−p

-38-

Page 64: Calculs ``exacts'' avec une arithmétique approchée

Analysons l’algorithme

Rappel : |u2 − Cx | < 12 ulp (u2) + η avec η = 2 ulp (C`).

u2

nombres VF

trouver

Si Cx est ici, alors RN (Cx) = u2

Cx peut-il être là ?

2ηDomaine oùCx peut se

2η12 ulp (u2)

-39-

Page 65: Calculs ``exacts'' avec une arithmétique approchée

Analysons l’algorithme

on sait que Cx est à moins de 1/2 ulp (u2) + 2 ulp (C`) dunombre VF u2.

Si on montre que Cx ne peut être à une distance≤ η = 2 ulp (C`) du milieu de 2 nombres VF consécutifs, alorsu2 sera le nombre VF le plus proche de Cx .

-40-

Page 66: Calculs ``exacts'' avec une arithmétique approchée

Analysons l’algorithme

on sait que Cx est à moins de 1/2 ulp (u2) + 2 ulp (C`) dunombre VF u2.Si on montre que Cx ne peut être à une distance≤ η = 2 ulp (C`) du milieu de 2 nombres VF consécutifs, alorsu2 sera le nombre VF le plus proche de Cx .

-40-

Page 67: Calculs ``exacts'' avec une arithmétique approchée

Rappel : fractions continues

Soit β ∈ R. On construit deux suites (ai ) et (ri ) définies par :r0 = β,ai = bric ,ri+1 = 1/(ri − ai ).

Si β /∈ Q, ces suites sont définies ∀i , et le nombre rationnel

pi

qi= a0 +

1

a1 +1

a2 +1

a3 +1

. . . +1ai

est la ième réduite de β. Si β ∈ Q, ces suites s’arrêtent pour uncertain i , et pi/qi = β exactement.

-41-

Page 68: Calculs ``exacts'' avec une arithmétique approchée

Rappel : fractions continues

On va avoir besoin de 2 résultats classiques :

Théorème 3

Soient (pj/qj)j≥1 les réduites de β. Pour tout (p, q) tel que0 ≤ q < qn+1, on a

|p − βq| ≥ |pn − βqn|.

Théorème 4

Soient p, q deux entiers non nuls, et premiers entre eux. Si∣∣∣∣pq − β∣∣∣∣ < 1

2q2

alors p/q est une réduite de β.-42-

Page 69: Calculs ``exacts'' avec une arithmétique approchée

Méthode 1 : utilisation du théorème 3

Remarque : Cx peut être dans [1, 2) ou [2, 4)→ deux casdistincts (très semblables) ;soit xcut = 2/C . Soient X = 2p−1x et Xcut =

⌊2p−1xcut

⌋.

on ne détaille que le cas x < xcut.

Milieu de deux nombres VF consécutifs au voisinage de Cx : 2A+12p

où A ∈ Z, 2p−1 ≤ A ≤ 2p − 1→ on cherche à savoir s’il peutexister un tel A satisfaisant∣∣∣∣Cx − 2A + 1

2p

∣∣∣∣ < η.

Ceci serait équivalent à

|2CX − (2A + 1)| < 2pη.

-43-

Page 70: Calculs ``exacts'' avec une arithmétique approchée

Méthode 1 : utilisation du théorème 3 (suite)

On veut savoir s’il existe X entre 2p−1 et Xcut, et A entre 2p−1 et2p − 1 t.q.

|2CX − (2A + 1)| < 2pη.

(pi/qi )i≥1 : réduites de 2C ;k : plus petit entier t.q. qk+1 > Xcut,soit δ = |pk − 2Cqk | .

Théorème 3 ⇒ ∀B,X ∈ Z, avec 0 < X ≤ Xcut < qk+1,|2CX − B| ≥ δ.

-44-

Page 71: Calculs ``exacts'' avec une arithmétique approchée

Méthode 1 : utilisation du théorème 3 (suite)

Par conséquent1 Si δ ≥ 2pη alors |Cx − A/2p| < η est impossible ⇒

l’algorithme renvoie RN (Cx) pour tout x < xcut ;2 si δ < 2pη, on essaie l’algorithme avec x = qk2−p+1 → soit on

obtient un contre-exemple, soit on ne peut conclure

Cas x > xcut : similaire (réduites de C au lieu de celles de 2C )

-45-

Page 72: Calculs ``exacts'' avec une arithmétique approchée

Exemple : C = π, “double précision” (p = 53)

> method1(Pi/2,53);Ch = 884279719003555/562949953421312Cl = 4967757600021511/81129638414606681695789005144064xcut = 1.2732395447351626862, Xcut = 5734161139222658eta = .8069505497e-32pk/qk = 6134899525417045/1952799169684491delta = .9495905771e-16OK for X < 5734161139222658etaprime = .1532072145e-31pkprime/qkprime = 12055686754159438/7674888557167847deltaprime = .6943873667e-16OK for 5734161139222658 <= X < 9007199254740992

⇒ On obtient toujours un arrondi correct pour C = 2kπ et p = 53, avecCh = 2k−48 × 884279719003555 et C` = 2k−105 × 4967757600021511.

Conséquence 1

Multiplication correctement arrondie par π en double précision : unemultiplication et un fma.

-46-

Page 73: Calculs ``exacts'' avec une arithmétique approchée

Méthode 2

À nouveau, deux cas. Ici : x > xcut (cas x < xcut = 2/Csimilaire) ;On cherche x = X/2p−1, Xcut ≤ X ≤ 2p − 1 t.q. ∃Asatisfaisant ∣∣∣∣C X

2p−1 −2A + 12p−1

∣∣∣∣ ≤ 2 ulp (C`). (1)

On sait que ulp (C`) ≤ 2−2p ;Deux cas : ulp (C`) ≤ 2−2p−1 et ulp (C`) = 2−2p.

-47-

Page 74: Calculs ``exacts'' avec une arithmétique approchée

Méthode 2

À nouveau, deux cas. Ici : x > xcut (cas x < xcut = 2/Csimilaire) ;On cherche x = X/2p−1, Xcut ≤ X ≤ 2p − 1 t.q. ∃Asatisfaisant ∣∣∣∣C X

2p−1 −2A + 12p−1

∣∣∣∣ ≤ 2 ulp (C`). (1)

On sait que ulp (C`) ≤ 2−2p ;

Deux cas : ulp (C`) ≤ 2−2p−1 et ulp (C`) = 2−2p.

-47-

Page 75: Calculs ``exacts'' avec une arithmétique approchée

Méthode 2

À nouveau, deux cas. Ici : x > xcut (cas x < xcut = 2/Csimilaire) ;On cherche x = X/2p−1, Xcut ≤ X ≤ 2p − 1 t.q. ∃Asatisfaisant ∣∣∣∣C X

2p−1 −2A + 12p−1

∣∣∣∣ ≤ 2 ulp (C`). (1)

On sait que ulp (C`) ≤ 2−2p ;Deux cas : ulp (C`) ≤ 2−2p−1 et ulp (C`) = 2−2p.

-47-

Page 76: Calculs ``exacts'' avec une arithmétique approchée

Méthode 2

Tout d’abord, on suppose ulp (C`) ≤ 2−2p−1.Dans ce cas, les entiers X satisfaisant (1) vérifient∣∣∣∣2C − 2A + 1

X

∣∣∣∣ < 12X 2 :

(2A + 1)/X est une réduite de 2C d’après le Théorème 4.

Il suffit de tester toutes les réduites de 2C de dénominateur≤ 2p − 1.

-48-

Page 77: Calculs ``exacts'' avec une arithmétique approchée

Méthode 2

Tout d’abord, on suppose ulp (C`) ≤ 2−2p−1.Dans ce cas, les entiers X satisfaisant (1) vérifient∣∣∣∣2C − 2A + 1

X

∣∣∣∣ < 12X 2 :

(2A + 1)/X est une réduite de 2C d’après le Théorème 4.Il suffit de tester toutes les réduites de 2C de dénominateur≤ 2p − 1.

-48-

Page 78: Calculs ``exacts'' avec une arithmétique approchée

Méthode 2

Maintenant, supposons ulp (C`) = 2−2p.

On est ramené au problème suivant : déterminer lesX , Xcut ≤ X ≤ 2p − 1 t.q.{

X (Ch + C`) +1

2p+1

}≤ 1

2p ,

où {y} est la partie fractionnaire de y : {y} = y − byc.Algorithme (voir plus loin) pour trouver les entiersX ,Xcut ≤ X ≤ 2p − 1 solution de cette inégalité ;tester l’algorithme (i.e., calculer u2 et le comparer à RN (Cx))pour ces valeurs de X .

-49-

Page 79: Calculs ``exacts'' avec une arithmétique approchée

Quelques résultats

C p Méthode 1 Méthode 21/π 24 pas de réponse marche toujours

1/π 53Ne marche pas

pour6081371451248382

marche toujourssauf siX =

6081371451248382

1/π 64 marche toujours marche toujours1/π 113 pas de réponse marche toujoursln 2 24 marche toujours marche toujoursln 2 53 marche toujours marche toujoursln 2 64 marche toujours marche toujoursln 2 113 marche toujours marche toujours

Tab.: Les résultats donnés pour la constante C sont valables pour toutesles constantes 2±jC.

-50-

Page 80: Calculs ``exacts'' avec une arithmétique approchée

Conclusion sur la multiplication par une constante

Deux méthodes pour tester si la multiplication correctementarrondie par une constante “infiniment précise” peut se faire à coûtréduit (une multiplication et un fma).

méthode 1 : ne permet pas toujours de conclure, mais estsimple et rapide → compilation ?méthode 1 : donne tous les contre-exemples ou certifie quel’algorithme fournira toujours le bon résultat.Programmes Maple et explications à :

http://perso.ens-lyon.fr/jean-michel.muller/MultConstant.html

-51-

Page 81: Calculs ``exacts'' avec une arithmétique approchée

Le dilemme du fabricant de tables

-52-

Page 82: Calculs ``exacts'' avec une arithmétique approchée

Le dilemme du fabricant de tables

-53-

Page 83: Calculs ``exacts'' avec une arithmétique approchée

Le dilemme du fabricant de tables

Considérons le nombre “double précision” (β = 2, p = 53)

x =8520761231538509

262

On a

253+x = 9018742077413030.999999999999999998805240837303 · · ·

Et alors ?Pire cas pour l’arrondi de la fonction 2x et des nombres doubleprécision.Collaboration avec Vincent Lefèvre.

-54-

Page 84: Calculs ``exacts'' avec une arithmétique approchée

Le dilemme du fabricant de tables

Considérons le nombre “double précision” (β = 2, p = 53)

x =8520761231538509

262

On a

253+x = 9018742077413030.999999999999999998805240837303 · · ·

Et alors ?

Pire cas pour l’arrondi de la fonction 2x et des nombres doubleprécision.Collaboration avec Vincent Lefèvre.

-54-

Page 85: Calculs ``exacts'' avec une arithmétique approchée

Le dilemme du fabricant de tables

Considérons le nombre “double précision” (β = 2, p = 53)

x =8520761231538509

262

On a

253+x = 9018742077413030.999999999999999998805240837303 · · ·

Et alors ?Pire cas pour l’arrondi de la fonction 2x et des nombres doubleprécision.Collaboration avec Vincent Lefèvre.

-54-

Page 86: Calculs ``exacts'' avec une arithmétique approchée

Le tableau de la honte

Système sin(1022)

résultat exact −0.8522008497671888017727 · · ·HP 48 GX −0.852200849762HP 700 0.0HP 375, 425t (4.3 BSD) −0.65365288 · · ·matlab V.4.2 c.1 pour Macintosh 0.8740matlab V.4.2 c.1 pour SPARC −0.8522SPARC −0.85220084976718879IBM RS/6000 AIX 3005 −0.852200849 · · ·DECstation 3100 NaNCasio fx-8100, fx180p, fx 6910 G ErrorTI 89 Trig. arg. too large

Jusqu’à juin 2008, pas de standard pour les fonctions“élémentaires”.

-55-

Page 87: Calculs ``exacts'' avec une arithmétique approchée

Arrondi correct des fonctions élémentaires

base 2, précision p ;nombre VF x et entier m (avec m > p) → approximation y def (x) dont l’erreur sur la mantisse est ≤ 2−m.peut être fait avec format intermédiaire plus grand, avecTwoSum, TwoMultFMA, etc.obtenir un arrondi correct de f (x) à partir de y : impossible sif (x) est trop proche d’un point où l’arrondi change (en arrondiau plus près : milieu de 2 nombres VF consécutifs).

-56-

Page 88: Calculs ``exacts'' avec une arithmétique approchée

Arrondi correct des fonctions élémentaires

Arrondi au + près,

m bitsz }| {1.xxxxx · · · xxx| {z }

p bits

1000000 · · · 000000 xxx · · ·

oum bitsz }| {

1.xxxxx · · · xxx| {z }p bits

0111111 · · · 111111 xxx · · · ;

autres modes,m bitsz }| {

1.xxxxx · · · xxx| {z }p bits

0000000 · · · 000000 xxx · · ·

oum bitsz }| {

1.xxxxx · · · xxx| {z }p bits

1111111 · · · 111111 xxx · · · .

-57-

Page 89: Calculs ``exacts'' avec une arithmétique approchée

Trouver m au delà duquel il ny a plus de problème ?

fonction f : sin, cos, arcsin, arccos, tan, arctan, exp, log, sinh,cosh,

Théorème de Lindemann (z 6= 0 algébrique ⇒ ez

transcendant) → à l’exception de quelques cas triviaux (e0,ln(1), sin(0), . . . ), si x est un nombre VF, il existe mx , t.q.arrondir une approximation sur mx bits ⇔ arrondir f (x) ;nombre fini de nombres VF → ∃mmax = maxx(mx) t.q. ∀x ,arrondir une approximation sur mmax bits de f (x)est équivalentà arrondir f (x) ;ce raisonnement ne donne aucune idée de l’ordre de grandeurde mmax. Pourrait être trop grand pour être d’un quelconqueintérêt pratique.

-58-

Page 90: Calculs ``exacts'' avec une arithmétique approchée

Trouver m au delà duquel il ny a plus de problème ?

fonction f : sin, cos, arcsin, arccos, tan, arctan, exp, log, sinh,cosh,Théorème de Lindemann (z 6= 0 algébrique ⇒ ez

transcendant) → à l’exception de quelques cas triviaux (e0,ln(1), sin(0), . . . ), si x est un nombre VF, il existe mx , t.q.arrondir une approximation sur mx bits ⇔ arrondir f (x) ;

nombre fini de nombres VF → ∃mmax = maxx(mx) t.q. ∀x ,arrondir une approximation sur mmax bits de f (x)est équivalentà arrondir f (x) ;ce raisonnement ne donne aucune idée de l’ordre de grandeurde mmax. Pourrait être trop grand pour être d’un quelconqueintérêt pratique.

-58-

Page 91: Calculs ``exacts'' avec une arithmétique approchée

Trouver m au delà duquel il ny a plus de problème ?

fonction f : sin, cos, arcsin, arccos, tan, arctan, exp, log, sinh,cosh,Théorème de Lindemann (z 6= 0 algébrique ⇒ ez

transcendant) → à l’exception de quelques cas triviaux (e0,ln(1), sin(0), . . . ), si x est un nombre VF, il existe mx , t.q.arrondir une approximation sur mx bits ⇔ arrondir f (x) ;nombre fini de nombres VF → ∃mmax = maxx(mx) t.q. ∀x ,arrondir une approximation sur mmax bits de f (x)est équivalentà arrondir f (x) ;

ce raisonnement ne donne aucune idée de l’ordre de grandeurde mmax. Pourrait être trop grand pour être d’un quelconqueintérêt pratique.

-58-

Page 92: Calculs ``exacts'' avec une arithmétique approchée

Trouver m au delà duquel il ny a plus de problème ?

fonction f : sin, cos, arcsin, arccos, tan, arctan, exp, log, sinh,cosh,Théorème de Lindemann (z 6= 0 algébrique ⇒ ez

transcendant) → à l’exception de quelques cas triviaux (e0,ln(1), sin(0), . . . ), si x est un nombre VF, il existe mx , t.q.arrondir une approximation sur mx bits ⇔ arrondir f (x) ;nombre fini de nombres VF → ∃mmax = maxx(mx) t.q. ∀x ,arrondir une approximation sur mmax bits de f (x)est équivalentà arrondir f (x) ;ce raisonnement ne donne aucune idée de l’ordre de grandeurde mmax. Pourrait être trop grand pour être d’un quelconqueintérêt pratique.

-58-

Page 93: Calculs ``exacts'' avec une arithmétique approchée

Un résultat de Baker (1975)

α = i/j , β = r/s, with i , j , r , s < 2p ;C = 16200 ;

|α− log(β)| > (p2p)−Cp log p

Application : Pour évaluer ln et exp en double precision (p = 53)avec arrondi correct, il suffit de calculer une approximation précisesur environ

10244 bitsHeureusement, en pratique, on constate que c’est beaucoup moins(≈ 100).

-59-

Page 94: Calculs ``exacts'' avec une arithmétique approchée

Un résultat de Baker (1975)

α = i/j , β = r/s, with i , j , r , s < 2p ;C = 16200 ;

|α− log(β)| > (p2p)−Cp log p

Application : Pour évaluer ln et exp en double precision (p = 53)avec arrondi correct, il suffit de calculer une approximation précisesur environ

10244 bits

Heureusement, en pratique, on constate que c’est beaucoup moins(≈ 100).

-59-

Page 95: Calculs ``exacts'' avec une arithmétique approchée

Un résultat de Baker (1975)

α = i/j , β = r/s, with i , j , r , s < 2p ;C = 16200 ;

|α− log(β)| > (p2p)−Cp log p

Application : Pour évaluer ln et exp en double precision (p = 53)avec arrondi correct, il suffit de calculer une approximation précisesur environ

10244 bitsHeureusement, en pratique, on constate que c’est beaucoup moins(≈ 100).

-59-

Page 96: Calculs ``exacts'' avec une arithmétique approchée

Un peu moins pessimiste...

Soit i/j ∈ Q avec pgcd(i , j) = 1. On définit H(i/j) = max{|i |, |j |}.

Théorème 5 (Y. Nesterenko et M. Waldschmidt (1995))

Soit (α, β) ∈ Q2. Soient A, B, et E des réels positifs, avec E ≥ e,satisfaisant A ≥ max (H(α), e) , B ≥ H(β). On a

|eβ − α| ≥exp(−211× (lnB + ln lnA + 2 ln(E |β|+) + 10)

× (lnA + 2E |β|+ 6 lnE )× (3.3 ln(2) + lnE )× (lnE )−2),

où |β|+ = max(1, |β|).

Application : Pour calculer ln et exp en double précision (p = 53), ilfaut faire les calculs intermédiaires sur environ 106 bits.

impossible → très cher

-60-

Page 97: Calculs ``exacts'' avec une arithmétique approchée

Un peu moins pessimiste...

Soit i/j ∈ Q avec pgcd(i , j) = 1. On définit H(i/j) = max{|i |, |j |}.

Théorème 5 (Y. Nesterenko et M. Waldschmidt (1995))

Soit (α, β) ∈ Q2. Soient A, B, et E des réels positifs, avec E ≥ e,satisfaisant A ≥ max (H(α), e) , B ≥ H(β). On a

|eβ − α| ≥exp(−211× (lnB + ln lnA + 2 ln(E |β|+) + 10)

× (lnA + 2E |β|+ 6 lnE )× (3.3 ln(2) + lnE )× (lnE )−2),

où |β|+ = max(1, |β|).

Application : Pour calculer ln et exp en double précision (p = 53), ilfaut faire les calculs intermédiaires sur environ 106 bits.

impossible → très cher

-60-

Page 98: Calculs ``exacts'' avec une arithmétique approchée

Une explication qui n’est pas une preuve. . .

la “mantisse infinie” y de f (x) est de la forme :

y = y0.y1y2 · · · yp−1

kbitsz }| {01111111 · · · 11 xxxxx · · ·

ou

y = y0.y1y2 · · · yp−1

kbitsz }| {10000000 · · · 00 xxxxx · · ·

avec k ≥ 1.

En supposant qu’après le rang p les chiffres “1” et “0” ont lamême probabilité d’apparaître, la “probabilité” d’avoir k ≥ k0est 21−k0 ;si on considère N nombres VF en entrée, on aura N × 21−k0

valeurs pour lesquelles k ≥ k0 ;

→ ne se produira plus dès que k0 est significativement supérieur àlog2(N) (pour une valeur donnée de l’exposant, dès que k0 � p).

-61-

Page 99: Calculs ``exacts'' avec une arithmétique approchée

Pires cas en double précision

couper le domaine → approximations linéaires des fonctionspour un pré-filtrage, pour qu’il ne reste que quelques cas àtraiter en très grande précision ;pré-filtrage : variante de l’algorithme du PGCD d’Euclide ;double precision : pourquoi ?

de très loin la plus utilisée ;calculer tous les sinus des 232 nombres simple précision :quelques heures seulement ;plus hautes précisions : semblent hors d’atteinte ;

-62-

Page 100: Calculs ``exacts'' avec une arithmétique approchée

Pires cas en double précision

grille : nombres VFet “milieux” ;

mise à l’échelle →entiers ;

est ce que la droiteest très proched’un point de lagrille ?

il est très probableque la réponse est“non”.

très petit an − bmod 1

-63-

Page 101: Calculs ``exacts'' avec une arithmétique approchée

an mod 1

0 1

0 1

0 1

0 1

d1 = h1 d2 = `1

d1 d2d3

d3 = `2 d2 = h2

d3 d2 d4

une infinité de fois : deux longueurs ;hi+1 = max(hi − `i , `i ), `i+1 = min(hi − `i , `i )→ PGCD.

-64-

Page 102: Calculs ``exacts'' avec une arithmétique approchée

Plus petite distance entre an mod 1 et b, n < T ?

0 1

0 1

0 1

0 1

d1 = h1 d2 = `1

d1 d2d3

d3 = `2 d2 = h2

d3 d2 d4

b

b

b

b

on ne construit pas tous les points : on les compte (pours’arrêter dès qu’il y en a plus de T ) ;on ne met à jour que les 2 points qui encadrent b, et onmémorise la distance à celui de gauche ;

-65-

Page 103: Calculs ``exacts'' avec une arithmétique approchée

Résultats

Tab.: Pires cas pour l’exponentielle de nombres double précision.

Interval worst case (binary)

[−∞,−2−30]exp(−1.1110110100110001100011101111101101100010011111101010× 2−27)

= 1.111111111111111111111111100 · · · 0111000100 1 1590001...× 2−1

[−2−30, 0)exp(−1.0000000000000000000000000000000000000000000000000001× 2−51)

= 1.111111111111111 · · · 11111111111111100 0 01001010...× 2−1

(0, +2−30]exp(1.1111111111111111111111111111111111111111111111111111× 2−53)

= 1.0000000000000000000000000000000000000000000000000000 1 11040101...

[2−30, +∞]

exp(1.0111111111111110011111111111111011100000000000100100× 2−32)

= 1.0000000000000000000000000000000101111111111111101000 0 0571101...

exp(1.1000000000000001011111111111111011011111111111011100× 2−32)

= 1.0000000000000000000000000000000110000000000000010111 1 1570010...

exp(1.1001111010011100101110111111110101100000100000001011× 2−31)

= 1.0000000000000000000000000000001100111101001110010111 1 0571010...exp(110.00001111010100101111001101111010111011001111110100)

= 110101100.01010000101101000000100111001000101011101110 0 0571000...

-66-

Page 104: Calculs ``exacts'' avec une arithmétique approchée

Résultats

Tab.: Pires cas pour les logarithmes de nombres double précision.

Interval worst case (binary)

[2−1074, 1)log(1.1110101001110001110110000101110011101110000000100000× 2−509)

= −101100000.00101001011010100110011010110100001011111111 1 1600000...

log(1.1001010001110110111000110000010011001101011111000111× 2−384)

= −100001001.10110110000011001010111101000111101100110101 1 0601010...

log(1.0010011011101001110001001101001100100111100101100000× 2−232)

= −10100000.101010110010110000100101111001101000010000100 0 0601001...

log(1.0110000100111001010101011101110010000000001011111000× 2−35)

= −10111.111100000010111110011011101011110110000000110101 0 1600011...

(1, 21024]log(1.0110001010101000100001100001001101100010100110110110× 2678)

= 111010110.01000111100111101011101001111100100101110001 0 0641110...

-67-

Page 105: Calculs ``exacts'' avec une arithmétique approchée

Conclusion

N = 2p nombres VF → O(N2/3) sous-intervalles ;l’arrondi correct des fonctions les plus communes est faisable àcoût raisonnable ;recommandé dans la norme IEEE 754-2008 (juin 2008) ;bibliothèque CRLIBM disponible àhttps://lipforge.ens-lyon.fr/projects/crlibm/

-68-