Un résultat faux tout de suite ou correct trop tard ?
Transcription
Un résultat faux tout de suite ou correct trop tard ?
Un résultat faux tout de suite ou correct trop tard ? !" ! ) 1 *+ ! " & / . 0 " ) ,) ! - ! ) () $# ' %& 2 ) : 1 3 ! * / 6 1 7 ! ! ;< # 4 489 54 3 ' 2 BA ?@ > = 8 8 VWX UTRS K Q PON M M L F 8 DC FL IJ H FG E souvent imprécis ; – arithmétiques « multi-précision », « exactes », calcul symbolique : le bon résultat. . . mais bien trop tard ! – arithmétiques « virgule flottante » : rapides, mais résultats Corollaire de la loi de Murphy VWX UTRS K Q PON M M L F FL IJ H FG E vers 100 semble converger très vite – sur n’importe quelle machine converge vers 6 – Quelques exemples VWX UTRS K Q PON M M L F FL IJ H FG E x := (3*x^4-20*x^3+35*x^2-24)/(4*x^3-30*x^2+70*x-50) od end a:=1.510005072136258: Digits:=10: diverge(a); 4.000000033 Digits:=12: diverge(a); 1.00000000000 Digits:=14: diverge(a); 3.0000000000000 Digits:=16: diverge(a); 4.000000000000033 Digits:=18: diverge(a); 1.00000000000000000 confiance totale en le résultat ! Essai sur 10, puis 16 chiffres x := a; for i to 100 do diverge := proc(a) VWX UTRS K Q PON M M L F FL IJ H FG E et . Sur un IBM 370 : simple précision : 1.172603 double précision : 1.1726039400531 précision étendue : bonne valeur : 1.172603940053178 avec Dans le même genre (S. Rump) VWX UTRS K Q PON M M L F FL IJ H FG E des réels ; de la mantisse, max et le mode d’arrondi actif plage des exposants min – principales caractéristiques : base , taille – Virgule flottante presque toujours utilisée pour représenter Autre chose que de la cuisine VWX UTRS K Q PON M M L F FL IJ H FG E utilisé ; – en général, la somme, le produit, le quotient de 2 nombres machines ne sont pas des nombres machine : il faut les arrondir. Modes d’arrondi usuels : si , et – au plus près : si vaut est le plus petit nombre machine est le plus grand nombre machine : – vers : – vers : – vers ; ; ; nombre machine le plus proche de . – nombre machine exactement représentable dans le système Modes d’arrondi VWX UTRS K Q PON M M L F FL IJ H FG E VWX UTRS K Q PON M M L F FL IJ H FG E dynamique 48 -8192 8191 2 96 -8192 8191 2 24 -127 127 2 56 -127 127 16 6 (24 bits) -64 63 16 14 (56 bits) -64 63 2 23+1 -126 +127 2 52+1 -1022 +1023 2 IEEE-754 IBM 370 DEC VAX Cray-1 base Exemples VWX UTRS K Q PON M M L F FL IJ H FG E – caractéristique la plus intéressante : « arrondi exact » et – – mode d’arrondi actif : : nombres machine ou , , ), le résultat obtenu , i.e. l’arrondi du résultat exact. doit toujours être ( étant Quand on calcule – caractéristiques les plus connues : formats des représentations norme IEEE-754 (1985) VWX UTRS K Q PON M M L F FL IJ H FG E différentes machines ; – des algorithmes & preuves peuvent être construits en utilisant cette propriété (arithmétique à précision arbitraire, somme de plusieurs nombres machine, prise de décisions en géométrie. . . ) ; – arithmétique d’intervalles, minorations & majoration de résultats, . . . structure mathématique recettes de cuisine hélas : rarement accessible dans un langage de haut niveau, et pas encore de spécification pour les fonctions élémentaires. mêmes résultats sur – compatibilité : même programme Conséquences VWX UTRS K Q PON M M L F FL IJ H FG E et où sont des nombres machine, donnera toujours un résultat et compris entre . Une telle propriété peut être cruciale, car le concepteur d’un logiciel peut utiliser ce résultat qui lui semble intuitif. Ce résultat est faux sur de nombreuses machines Cray. Sur toute machine compatible avec la norme IEEE le calcul de Exemple de propriété de la norme VWX UTRS K Q PON M M L F FL IJ H FG E déclarés comme nombres réels (Virgule Flottante). base du système de numération interne de votre machine (calculettes : 10, autres machines : 2 ou 16) et Algorithme de Gentleman VWX UTRS K Q PON M M L F FL IJ H FG E sur une arithmétique avec « arrondi exact » (marche sur une machine compatible IEEE, pas par exemple sur un Cray). dernier_bit , soit , et soit donnera proc sum_and_error(a,b) begin c := a+b; e := c-a; f := b-e; g := c-e; h := g-a; d := f-h; return (c,d) end; Somme et erreur (Priest) VWX UTRS K Q PON M M L F FL IJ H FG E exact « tombe juste » (par exemple si c’est un entier), on l’obtient sans erreur. – Sur une machine non conforme (ex. certains Cray), parfois faux. Sur certaines de ces machines, l’instruction I = 14.0/7.0 donnera comme résultat 1. Sur certains Cray, il y provoque un dépassement. tels que le calcul a des nombres représentables – Sur une machine conforme à la norme IEEE, quand le résultat Une dernière propriété VWX UTRS K Q PON M M L F FL IJ H FG E Et les fonctions élémentaires ? VWX UTRS K Q PON M M L F FL IJ H FG E 1 / " ! Error Casio fx-8100, fx180p, fx 6910 G ! Sharp EL5806 PC : Borland TurboC 2.0 IBM 3090/600S-VF AIX 370 IBM RS/6000 AIX 3005 SPARC Sun3, NeXt HP 375, 425t (4.3 BSD) " HP 700 ! - ) HP 28S, 48 SX Résultat exact VWX UTRS K Q PON M M L F FL IJ H FG E exp, log, arctan) – on a longtemps crû que c’était une tâche impossible – pas d’exigence d’« arrondi exact » pour ces fonctions (sin, cos, Pourquoi ? VWX UTRS K Q PON M M L F FL IJ H FG E de base 2, bits de mantisse ; ), on peut calculer une ? en arrondissant obtient on l’arrondi de est dont l’erreur sur la mantisse Problème approximation de ( et – en partant de – fonction (sin, cos, log, exp, arctg), système virgule flottante Pourquoi est-ce difficile ? VWX UTRS K Q PON M M L F FL IJ H FG E – En arrondi au plus près – avec les autres modes d’arrondi Dilemme du Constructeur de Tables (TMD) . Ce problème est appelé le bits bits bits bits ou bits bits ou bits bits est de la forme : Impossible si VWX UTRS K Q PON M M L F FL IJ H FG E chiffres de mantisse Exemple 1 : base 10, VWX UTRS K Q PON M M L F FL IJ H FG E chiffres de mantisse Exemple 2 : base 2, VWX UTRS K Q PON M M L F FL IJ H FG E failure success m = n+40 m = 2n rounded m=? result m = n+20 La stratégie “peau d’oignon” (Abraham Ziv) VWX UTRS K Q PON M M L F FL IJ H FG E – peut-on le résoudre en un temps raisonnable ? – peut-on résoudre ce problème ? oui Résoudre le TMD VWX UTRS K Q PON M M L F FL IJ H FG E – les nombres virgule flottante sont algébriques ; , pour , et pour , ne peuvent pas avoir une infinité de 0 ou 1 consécutifs dans leur écriture binaire. tel que le TMD ne peut pas se produire. Pour tout , il existe ,il existe Le nombre de nombres machine est fini tout tel que pour le TMD ne peut se produire. Problème : trouver cet . n’est pas algébrique ; – Lindemann, 1882 l’exponentielle d’un nombre algébrique VWX UTRS K Q PON M M L F FL IJ H FG E 51 24 bits de mantisse, nombres compris entre 1 et 2. 49 53 49 50 Il semble que 53 Quelques expériences VWX UTRS K Q PON M M L F FL IJ H FG E intuitivement d’où vient la relation . On suppose – arrondi au plus près ; est un nombre machine, les bits de – quand après la -ième position peuvent être vus comme des suites aléatoires de 0 et de 1 , le 0 et le 1 étant équiprobables ; – ces suites peuvent être considérées « indépendantes » pour deux nombres machine différents. Attention approche non rigoureuse. On cherche à comprendre Un peu de cuisine VWX UTRS K Q PON M M L F FL IJ H FG E . exposants possibles (i.e. est nombres machine) ? la “probabilité” d’avoir bits de mantisse, et . Plus grande valeur de Nos hypothèses avec ou la probabilité d’avoir au moins un nombre conduisant à une valeur est : . Résultat de la forme : de On calcule la mantisse VWX UTRS K Q PON M M L F FL IJ H FG E vaut : Si on ne considère qu’un petit nombre d’exposants possibles, la plus grande valeur de sera en moyenne légèrement supérieure à . doit être légèrement supérieur à En pratique, . ait une probabilité tel que Donc le nombre VWX UTRS K Q PON M M L F FL IJ H FG E 1 2 3 4 5 6 7 8 9 10 1 1 1 0 0 0 0 0 0 0 0 0 2 3 1 0 0 0 0 0 0 0 0 0 3 5 2 1 0 0 0 0 0 0 0 0 4 9 3 1 2 1 0 0 0 0 0 0 5 18 7 3 1 1 1 0 0 0 1 0 6 34 15 13 2 0 0 0 0 0 0 0 7 72 26 13 7 3 6 1 0 0 0 0 8 130 65 31 13 5 6 4 1 0 1 0 9 272 119 67 23 16 6 4 3 1 1 0 10 538 239 114 69 26 20 15 3 0 0 0 11 1037 527 215 121 71 50 14 6 2 4 0 12 2049 1030 521 255 127 49 27 21 7 6 3 13 4144 2017 1025 502 255 142 56 26 11 10 3 14 8247 4081 2044 1012 516 251 106 65 30 23 2 0 pour Nombre d’occurences de divers VWX UTRS K Q PON M M L F FL IJ H FG E , , M en « double précision » et ), faire les calculs intermédiaires sur ( Application pour calculer bits suffit ! ! ! – – (cas particulier) Passons à la théorie des nombres VWX UTRS K Q PON M M L F FL IJ H FG E alors : ses racines complexes sont , et Z est polynôme minimal de : le hauteur logarithmique absolue de Weil de – : nombre algébrique ; – Une avancée significative. . . 234 01./ -,+* $ ))( ' '& % $"# ! $% $% % $$ ( (% ' &%$ #"! " 4 5 23 1 /0 - . ,+ *)( 9 C D A F 8 ,+ ( 2= ;< E - , )( BA@ ?> 8 1= ;< 8 7 G : 4 6 J J H 9 I ) K 8 + J Q P K ,S ( 4= ;< O K -= ;< R K = 1= ;< ;< K M E 2= ;< @ P -P O ?L N C W Q Q Q , 4= ;< ( 4= ;< K O, K ( -= ;< E E VU@ - FU T K 4= ;< 4O K 1= ;< - @ X Y ?> P ( , . (% % ( K Q Q K C Théorème S 234 01./ -,+* $ ))( ' '& % $"# ! %$ $% % W P – Encore beaucoup. . . mais il y a 2 transparents, c’était $$ ( domaine pour l’exponentielle (% (% % ( Très cher – Impossible et Application au calcul de 234 01./ -,+* $ ))( ' '& % $"# ! P T bits ; – une “mauvaise configuration” tous les 170 ans. Le problème de mon arrière-arrière petit fils ? – résultat double précision ; %$ – 200 MHz, ne calculant que des sinus, en permanence ; , sur un Cyrix 83D87 : 121 cycles ; % – $% $$ ( (% (% % ( Une estimation pessimiste 234 01./ -,+* $ ))( ' '& % $"# ! %$ % $% $$ ( (% (% % ( Calculer sur un million de bits ? , ( = nombre d’opérations élémentaires pour multiplier 2 nombres de bits. O chiffres peut être calculé sur (, sont pré-calculés, = et ;< opérations élémentaires, où ;< , ( ( P ,, K ( = en Si W ;< ?L (, (, (, M ou PU = si < (, (, (, ou ! > !" > ou R U si 89: 7645 & , 3210 * / /. - $ $&+ & *() '& $%# – HP-9000/720, 50 MHz – multiplication de nombres de 1 million de bits : 4 secondes Conséquence avec une machine à 50 MHz, calculer une exponentielle sur un million de bits demande moins de 18 minutes multiplication – Dan Zuras, 1993, analyse de différents algorithmes de * + + & . & + . & .+ + . *+ * * Et la multiplication ? 89: 7645 & , 3210 * / /. - $ $&+ & *() '& $%# très loin le plus utilisé ; est certainement proche – on « sait » que la bonne valeur de de 110 ; P – meilleure borne : environ P P Or, faire des circuits de calcul avec serait très facilement réalisable. . . Seule solution : tester tous les cas possibles U ), de – But le format « IEEE double précision » (base 2, * + + & . & + . & .+ + . *+ * * Que tout cela est décevant ! 89: 7645 & , 3210 * / /. - $ $&+ & *() '& $%# – Filtre très vite éliminer la plupart des cas ; – découpage en très petits sous-domaines : dans chaque domaine, l’exponentielle est approchée par une fonction affine. O ans) ; P exponentielles ( R R P par seconde demanderait O O O – ne pas calculer * + + & . & + . & .+ + . *+ * * Tests exhaustifs pour 89: 7645 & , 3210 * / /. - $ $&+ & *() '& $%# sur le cercle ; ) – angle d’un angle . ) D est obtenu en faisant tourner le point donné. – – cercle unité ; * + + & . & + . & .+ + . *+ * * Le théorème des trois distances S 89: 7645 & , 3210 * / /. - $ $&+ & *() '& $%# * + + & F IG . 1: Construction des premiers points. x3 x0 . x2 & + . & .+ + . α *+ * * x1 89: 7645 & , 3210 * / /. $ $&+ & *() '& $%# * + + & *+ * * . F IG . 2: Construction des points suivants. & + . & x9 x0 x2 .+ + . x4 x7 x5 x6 x8 x3 1 x 10 x 89: 7645 & , 3210 * / /. $ $&+ & *() '& $%# construits), la distance angulaire entre 2 points qui sont voisins sur le cercle ne peut prendre qu’au plus 3 valeurs possibles . Ces valeurs dépendent de et . De plus, il y a une infinité de valeurs ) de pour lesquelles cette distance ne prend que 2 valeurs possibles sont W ,. . . , , D , donné, quand les points (i.e. pour un * + + & . & + . & .+ + . *+ * * Propriété À tout moment durant ce processus de construction 89: 7645 & , 3210 * / /. - $ $&+ & *() '& $%# chaque sous-domaine ; – changements de variable : on se ramène à des calculs sur des O entiers (en multipliant par des puissances de ) étant donnés une grille dont les coordonnées sont des entier, une droite et un (petit) réel positif , a-t-on des points de la grille à distance de la droite ? – translation : a-t-on des points de la grille au dessus de la O de celle-ci ? droite, et à distance par une fonction affine. Nombres de même exposant dans – Sous domaines dans lesquels l’exponentielle est approchée * + + & . & + . & .+ + . *+ * * Quel est le rapport avec le TMD ? 89: 7645 & , 3210 * / /. - $ $&+ & *() '& $%# O est P modulo J que dans le domaine considéré tel ; – on retrouve le théorème des 3 distances avec et J O ) , – on se contente de construire la suite des distances atteintes pour lesquelles il y a 2 distances. pour les valeurs de – on cherche s’il y a un entier ; J – Équation de la droite * + + & . & + . & .+ + . *+ * * Calcul modulo 1 89: 7645 & , 3210 * / /. - $ $&+ & *() '& $%# ces distances la ème fois qu’il y a 2 distances. et – . et J - , où P J . Résultat '& J Notation : Théorème (V. Lefèvre) L’algorithme suivant calcule . est un entier dans points sur le cercle peut prendre 2 valeurs ; pour lesquelles la distance entre 2 * + + & . & + . & .+ + . *+ * * – Infinité de valeurs de 89: 7645 & , 3210 * / /. $ $&+ & *() $%# * + + & *+ * . & + . S C S S C S C S C S S C S Returned value : exit * D else & Infinite loop : .+ + . exit exit > if C D while exit > if > if while > if if Initialization : 89: 7645 & , 3210 * / /. $ $&+ & *() '& $%# D ;< O M = C C W D D O O O O O < ! O ;< = W Pires cas : + C O ?L C O PK P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P F W O P P U P R P P P P P P P P P P P P P P P R RU P P P avec * + + . & . & *+ * * & .+ + . et , et . entre entre Fonctions testées, en double précision : entre et , entre et , Résultats complets pour et . Quelques résultats F F F F F F F F P P P P P P P P P P P P P P P P P P 89: 7645 & , 3210 * / /. $ $&+ & *() '& $%# * + + + . + .+ & . & . & *+ * * P P P P P P P P P P P P P P P P P P P P P P P P F W R P T U P T RU O O R R P P P P P P P P P P P P P P P P P P P P P P ! > F P P P P P P P P P P P P P P P F F F F F F F O P K TK T U P O O C P K K T U P P 89: 7645 & , 3210 * / /. $ $&+ *() & '& ! $%# > est pour et la valeur de est dans pour Donc la valeur de avec disponibles garantiront l’« arrondi exact » des fonctions en « double précision » ; P 8 – très grandes précisions ( bits) peu d’espoirs de résultats certains, mais estimations probabilistes + détection ; – Conséquence préservation de propriétés (p.ex. monotonie), système complètement spécifié axiomes sur lesquels on peut (et doit !) bâtir des preuves et des algorithmes d’ici environ 10 ans, les systèmes – calculs en cours * + + & . & + . & .+ + . *+ * * Conclusion 89: 7645 & , 3210 * / /. - $ $&+ & *() '& $%# R arctangente arrondies au + près. Le nombre machine le plus , O( > !" > proche de est T P PU O O F T T U P T U T F P 5 O T U . O On aura Sur notre système, on obtiendra donc un résultat + grand que O ). Tangente et + Format IEEE-754 simple précision ( * + & . & + . & .+ + . *+ * * La perfection n’est pas de ce monde. . . J Q P OF O > !" > > F E E @ O @ " 89: 7645 & , 3210 * / /. - $ $&+ & *() '& $%# , (, est un nombre machine, ?> (, – est un nombre machine, est calculé avec arrondi exact pour un nombre (, alors si . pas de problème avec sin, cos, th. . . , le résultat obtenu sera dans machine est défini (, – – Théorème élémentaire Si une fonction vérifie * + + & . & + . & .+ + . *+ * * Le pire n’est pas toujours certain ! 89: 7645 & , 3210 * / /. - $ $&+ & *() '& $%#