Contribution à l'analyse d'algorithmes en arithmétique à virgule flottante
Auteur / Autrice : | Antoine Plet |
Direction : | Jean-Michel Muller |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 07/07/2017 |
Etablissement(s) : | Lyon |
Ecole(s) doctorale(s) : | École doctorale InfoMaths (Lyon ; 2009-....) |
Partenaire(s) de recherche : | établissement opérateur d'inscription : École normale supérieure de Lyon (Lyon ; 2010-....) |
Laboratoire : Laboratoire de l'informatique du parallélisme (Lyon ; 1988-....) - Arithmetic and Computing | |
Jury : | Président / Présidente : Jocelyne Erhel |
Examinateurs / Examinatrices : Jean-Michel Muller, Jocelyne Erhel, Sylvie Boldo, Nicolas Louvet, Matthieu Martel | |
Rapporteurs / Rapporteuses : Sylvie Boldo, Ping Tak Peter Tang |
Mots clés
Résumé
L’arithmétique virgule flottante est une approximation de l’arithmétique réelle dans laquelle chaque opération peut introduire une erreur. La norme IEEE 754 requiert que les opérations élémentaires soient aussi précises que possible, mais au cours d’un calcul, les erreurs d’arrondi s’accumulent et peuvent conduire à des résultats totalement faussés. Cela arrive avec une expression aussi simple que ab + cd, pour laquelle l’algorithme naïf retourne parfois un résultat aberrant, avec une erreur relative largement supérieure à 1. Il est donc important d’analyser les algorithmes utilisés pour contrôler l’erreur commise. Je m’intéresse à l’analyse de briques élémentaires du calcul en cherchant des bornes fines sur l’erreur relative. Pour des algorithmes suffisamment précis, en arithmétique de base β et de précision p, on arrive en général à prouver une borne sur l'erreur de la forme α·u + o(u²) où α > 0 et u = 1/2·β1-p est l'unité d'arrondi. Comme indication de la finesse d'une telle borne, on peut fournir des exemples numériques pour les précisions standards qui approchent cette borne, ou bien un exemple paramétré par la précision qui génère une erreur de la forme α·u + o(u²), prouvant ainsi l'optimalité asymptotique de la borne. J’ai travaillé sur la formalisation d’une arithmétique à virgule flottante symbolique, sur des nombres paramétrés par la précision, et à son implantation dans le logiciel de calcul formel Maple. J’ai aussi obtenu une borne d'erreur très fine pour un algorithme d’inversion complexe en arithmétique flottante. Ce résultat suggère le calcul d'une division décrit par la formule x/y = (1/y)·x, par opposition à x/y = (x·y)/|y|². Quel que soit l'algorithme utilisé pour effectuer la multiplication, nous avons une borne d'erreur plus petite pour les algorithmes décrits par la première formule. Ces travaux sont réalisés avec mes directeurs de thèse, en collaboration avec Claude-Pierre Jeannerod (CR Inria dans AriC, au LIP).