Analyse des erreurs d’arrondi sur les nombres à virgule flottante par programmation par contraintes
Auteur / Autrice : | Rémy Garcia |
Direction : | Claude Michel |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 08/09/2021 |
Etablissement(s) : | Université Côte d'Azur |
Ecole(s) doctorale(s) : | École doctorale Sciences et technologies de l'information et de la communication (Nice ; 1992-....) |
Partenaire(s) de recherche : | Laboratoire : Laboratoire Informatique, signaux et systèmes (Sophia Antipolis, Alpes-Maritimes) |
Jury : | Président / Présidente : Jean-Paul Comet |
Examinateurs / Examinatrices : Claude Michel, Jean-Paul Comet, Sylvie Putot, Andreas Podelski, Michel Rueher, Matthieu Martel | |
Rapporteurs / Rapporteuses : Sylvie Putot, Andreas Podelski |
Résumé
Les nombres à virgule flottante sont utilisés dans de nombreuses applications pour effectuer des calculs, souvent à l'insu de l'utilisateur. Les modèles mathématiques de ces applications utilisent des nombres réels qui ne sont souvent pas représentables sur un ordinateur. En effet, une représentation binaire finie n'est pas suffisante pour représenter l'ensemble continu et infini des nombres réels. Le problème est que le calcul avec des nombres à virgule flottante introduit souvent une erreur d'arrondi par rapport à son équivalent sur les nombres réels. Connaître l'ordre de grandeur de cette erreur est essentiel afin de comprendre correctement le comportement d'un programme. De nombreux outils en analyse d'erreurs calculent une sur-approximation des erreurs. Ces sur-approximations sont souvent trop grossières pour évaluer efficacement l'impact de l'erreur sur le comportement du programme. D'autres outils calculent une sous-approximation de l'erreur maximale, i.e., la plus grande erreur possible en valeur absolue. Ces sous-approximations sont soit incorrectes, soit inatteignables. Dans cette thèse, nous proposons un système de contraintes capable de capturer et de raisonner sur l'erreur produite par un programme qui effectue des calculs avec des nombres à virgule flottante. Nous proposons également un algorithme afin de chercher l'erreur maximale. Pour cela, notre algorithme calcule à la fois une sur-approximation et une sous-approximation rigoureuses de l'erreur maximale. Une sur-approximation est obtenue à partir du système de contraintes pour les erreurs, tandis qu'une sous-approximation atteignable est produite à l'aide d'une procédure générer-et-tester et d'une recherche locale. Notre algorithme est le premier à combiner à la fois une sur-approximation et une sous-approximation de l'erreur. Nos méthodes sont implémentées dans un solveur, appelé FErA. Les performances sur un ensemble de problèmes communs sont compétitives : l'encadrement rigoureux produit est précis et se compare bien par rapport aux autres outils de l'état de l'art.