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

Post on 05-Jan-2017

234 views 8 download

Transcript of 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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

∣∣∣∣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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

Le dilemme du fabricant de tables

-52-

Le dilemme du fabricant de tables

-53-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-

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-