• Aucun résultat trouvé

gran-deur de l'unité d'arrondi u, quelque que soient les coecients de p et quel que soit x, l'algorithme de Horner est un algorithme inverse-stable [20, p. 16],[39, p. 95].

En utilisant le résultat inverse précédent, on obtient facilement une borne sur l'erreur directe entachant Horner(p, x). En eet, on a

|Horner(p, x) − p(x)| = n X i=0 (1 + δi)aixiXn i=0 aixi = n X i=0 δiaixi ,

avec |δi| ≤ γ2n. On obtient donc la borne suivante sur l'erreur directe absolue entachant Horner(p, x) : |Horner(p, x) − p(x)| ≤ γ2n n X i=0 |ai||xi|.

La précision du résultat de l'évaluation calculée par l'algorithme 2.6 est donc majorée en fonction du nombre de conditionnement cond(p, x) selon l'inégalité suivante,

|p(x) − Horner(p, x)|

|p(x)| ≤ γ2ncond(p, x). (2.10) En particulier, lorsque cond(p, x) > γ−1

2n, on ne peut garantir une erreur relative inférieure à un. C'est le cas en particulier au voisinage des racines de p.

2.5 Améliorer la précision du résultat

Supposons que l'on travaille sur une architecture dont l'arithmétique ottante est conforme à la norme IEEE-754. Que faire lorsque la double précision IEEE-754 n'est pas susante pour garantir la précision du résultat ? Citons à ce sujet Bailey [6] :

For most scientic applications, [IEEE 64-bit oating-point arithmetic] is more than sucient, and for some applications, such as routine processing of experi-mental data, even the 32-bit standard often provides sucient accuracy. However, for a rapidly expanding body of applications, 64-bit IEEE arithmetic is no longer sucient. These range from some interesting new mathematical computations to large-scale physical simulations performed on highly parallel supercomputers. In these applications, portions of the code typically involve nu-merically sensitive calculations, which produce results of questionable accuracy using conventional arithmetic.

Bailey insiste ensuite sur la demande croissante, notamment pour les simulations physiques, quant à la possibilité de disposer d'une précision supérieure à la double précision IEEE-754. Cette demande est également soulignée par De Dinechin et Villard dans [18].

La réponse classique pour améliorer la précision du résultat est donc d'augmenter la précision des calculs. Dans la suite de cette section, nous passons en revue diérentes solutions génériques permettant d'augmenter la précision de travail. Nous présenterons également le principe général des algorithmes compensés, en faisant le lien avec la méthode CENA développée par Langlois [49].

26 Chapitre 2. Analyse d'erreur et arithmétique ottante

2.5.1 Méthodes génériques pour augmenter la précision de calcul

Lorsque la double précision IEEE-754 n'est pas susante pour garantir une précision donnée, diverses solutions classiques existent pour augmenter la précision des calculs.

Tout d'abord, il est possible d'utiliser une arithmétique exacte, permettant de ne jamais perdre de précision, en utilisant par exemple une représentation rationnelle ou modulaire des nombres. Citons par exemple la bibliothèque GMP [1] qui permet d'eectuer des calculs sur des entiers arbitrairement longs, ou sur l'ensemble des rationnels. Cependant, l'utili-sation du calcul exact reste peu répandue dans le domaine du calcul scientique : ce type d'arithmétique reste en eet très coûteux en termes de temps de calcul face aux implanta-tions matérielles de l'arithmétique ottante. De plus, la réalisation de calculs exacts n'est pas toujours possible : le résultat d'un calcul n'est pas nécessairement un nombre rationnel, ni même un nombre algébrique.

Notons qu'il est possible, dans certains cas, d'utiliser la double précision étendue, dont l'implantation matérielle est encouragée par la norme IEEE-754. Il convient cependant de noter que cette double précision étendue n'est pas disponible sur tous les processeurs modernes  elle n'est pas implantée par exemple sur l'architecture PowerPC d'IBM. L'uti-lisation de la double précision étendue ne garantit donc pas la portabilité du logiciel.

Les arithmétiques multiprécisions permettent à l'utilisateur de choisir une précision de calcul arbitrairement élevée. L'un des exemples les plus connus de bibliothèque de calcul ottant multiprécision est la bibliothèque MP de Brent [13]. Un exemple plus récent est la bibliothèque ARPREC [7], faisant suite à MPFUN90 [5, 4] de Bailey. Citons également la bibliothèque MPFR [31] développée en France par l'INRIA. MPFR est en partie basée sur GMP, et propose les quatre modes d'arrondis pour les opérations élémentaires, ainsi que les principales fonctions élémentaires avec arrondi correct.

Les expansions de longueur xe, telles les double-doubles et les quad-doubles sont des solutions possibles pour simuler respectivement deux fois (u2) et quatre fois (u4) la double précision IEEE-754 (u). L'arithmétique ottante est alors redénie sur des quantités re-présentées par la somme non évaluée de deux ou quatre ottants en double précision. Le format double-double est utilisable de façon portable au travers des bibliothèques propo-sées par Bailey [4, 34] ou Briggs [14]. La bibliothèque QD [34] de Bailey donne à la fois accès aux formats double-double et quad-double.

L'arithmétique double-double constitue aujourd'hui une référence dans le domaine du calcul scientique, pour simuler une précision de travail équivalente à deux fois la double précision IEEE-754 de façon ecace. Les double-doubles sont notamment utilisés au sein de la bibliothèque Extended and Mixed precision BLAS [56, 57].

Par la suite, nous utiliserons les bibliothèques QD [34], MPFR [31] et XBLAS [56] pour comparer leurs performances à celles des algorithmes compensés.

2.5.2 Algorithmes compensés

Dans le cadre de la norme IEEE-754 et dans le mode d'arrondi au plus proche, si a et b sont deux nombres ottants, il est bien connu que l'erreur d'arrondi commise en calculant l'addition fl(a + b) est elle-même un nombre ottant [19]. On peut alors écrire

x + δ = a + b, avec x = fl(a + b) et δ un ottant. (2.11) Le terme δ dans l'égalité précédente est l'erreur d'arrondi générée lors du calcul de l'addition ottante fl(a + b). Ce résultat se généralise au cas de la multiplication et, sous une forme

2.5. Améliorer la précision du résultat 27 diérente, au cas de la division, comme nous le verrons plus loin.

D'autre part, on connaît des algorithmes qui, en utilisant uniquement la précision de travail et des opérations arithmétiques élémentaires, permettent de calculer δ et y véri-ant (2.11) en fonction de a et de b. L'algorithme de Knuth [47], que nous appellerons par la suite TwoSum, permet notamment ce calcul.

L'addition a+b peut donc être transformée exactement à l'aide de TwoSum en la somme non évaluée x + δ. Une telle transformation est appelée  error-free transformation  par Ogita, Rump et Oishi dans [70], ce nous traduirons ici par  transformation exacte .

Le fait de calculer exactement l'erreur d'arrondi y générée par l'addition ottante a ⊕ b permet éventuellement, d'en corriger son eet sur les opérations arithmétiques suivantes. An d'expliquer plus précisément le principe général des algorithmes compensés, considé-rons une fonction f : Rn → R. Soit x = (x1, . . . , xn) ∈ Fn un jeu de données. Le réel f(x) est approché à l'aide d'un algorithme bf utilisant l'arithmétique ottante, et faisant intervenir les variables intermédiaires ottantes bxn+1, . . . , bxN. En outre, on suppose que

b

f(x) = bxN, et que chacun des bxk, pour k > n, est le résultat d'une opération élémentaire, +, −, ×, / eectuée en arithmétique ottante : on note δk l'erreur d'arrondi associée au calcul de bxk, et δ = (δn+1, . . . , δN). Comme nous l'avons déjà dit, les erreurs d'arrondi δk peuvent soit être calculées exactement, soit être approchées très précisément, à l'aide des transformations exactes.

Insistons sur le fait que, dans le cas général, bf(x) est entaché d'une erreur directe non nulle. Dénissons donc le terme correctif exact pour bf(x) par

c := f(x) − bf(x).

Supposons que c puisse être exprimé formellement en fonction de x = (x1, . . . , xn) ∈ Fn et des erreurs d'arrondi δ = (δn+1, . . . , δN). S'il était possible de calculer exactement c, alors nous pourrions calculer très précisément f(x), puisque par dénition de c, on a

f(x) = bxN + c.

Or en général, le terme correctif exact ne pourra pas être calculé exactement, mais seule-ment approché à l'aide d'un algorithme en arithmétique ottante : notons bc ce terme correctif approché. On dénit alors le résultat compensé r ∈ F par

xN = bxN ⊕ bc.

Puisque f(x) = bxN + c, et que bc est une valeur approchée c, on peut légitimement penser que le résultat compensé xN est une approximation plus précise de f(x) que bxN. Néan-moins, la véracité de cette armation dépend bien entendu de la manière dont est calculé le terme correctif approché bc. De plus, il convient de prouver au cas par cas le fait que le résultat compensé est eectivement plus précis que le résultat initial. Le principe du cal-cul d'un résultat compensé sera bien entendu largement illustré dans les chapitres suivants. Citons également la méthode CENA, développée par Langlois [49]. Le principe de la méthode CENA est d'utiliser un approximant d'ordre un pour le calcul du terme correctif approché. On a en eet

c = f(x) − bf(x) = XN

k=n+1

∂ bf

28 Chapitre 2. Analyse d'erreur et arithmétique ottante ou EL désigne l'erreur de linéarisation. Les dérivées partielles de bf en (X, δ) sont appro-chées par diérentiation automatique [29], et les erreurs d'arrondi δk sont calculées, ou approchées précisément, à l'aide des transformations arithmétiques exactes pour les opéra-tions élémentaires. Le terme correctif approché bc est calculé à la précision courante d'après la relation (2.12), en supposant que l'erreur de linéarisation est nulle.

Dans [49], Langlois isole une classe d'algorithmes numériques pour laquelle l'erreur de linéarisation EL est eectivement nulle, et appelle ces algorithmes algorithmes linéaires. Parmi ces algorithmes linéaires, on trouve l'algorithme de sommation récursive classique, le calcul de produits scalaires, le schéma de Horner, ainsi que la résolution de systèmes triangulaires. Dans le cas des systèmes triangulaires par exemple, Langlois observe expé-rimentalement dans [49] que la solution compensée calculée à l'aide de la méthode CENA est aussi précise que celle calculée par l'algorithme de substitution classique exécuté en précision doublée.