Participants : Marc Daumas,
Claire Finot-Moreau.
Mots clés : virgule flottante, preuve
d'algorithmes, erreurs d'arrondi, arithmétique exacte,
précision multiple, expansion, division, géométrie
algorithmique .
Résumé :
Nous travaillons à la preuve formelle de propriétés et
d'algorithmes en arithmétique virgule flottante. Ceci est
rendu possible grâce aux spécifications fournies par la
norme IEEE 754. Une expansion de nombres
flottants est un nombre en précision multiple représenté
par la somme d'un petit nombre de flottants. Manipuler des
expansions permet parfois de rendre plus précise une
portion critique d'un programme.
Grâce à notre collaboration dans le cadre de l'action de
recherches coopératives INRIA AOC, et en particulier au
travail de Laurent Thery (INRIA Sophia), nous avons commencé
à transférer certaines de nos preuves et spécifications sous
l'outil Coq. Cette approche est particulièrement utile de
plusieurs points de vue :
- Coq est un formalisme moins permissif que les
formalismes utilisés par le passé pour des preuves de ce
type.
- Cette preuve part d'une spécification naturelle et suit
un chemin de preuve passant par des résultats
intermédiaires connus et documentés dans la littérature.
Cette approche nous garantit qu'un lecteur extérieur à
notre développement pourra en extraire du savoir sans
devoir d'abord ingurgiter tout notre formalisme.
- Notre travail sur les expansions nous a permis d'isoler
des résultats intéressants et de difficulté
« raisonnable ». Nous avons déjà un ensemble
significatif de résultats. Un exemple simple est le
suivant: soient deux nombres flottants
x et y
tels que

x
2y, le rationnel x - y est exactement
représentable (il est donc calculé exactement sur toute
arithmétique avec arrondi correct). Ce fait est vrai
indépendamment de la base. Par contraposée, si
x + y
o(x + y), alors
|o(x +
y)|
max(|
x|,| y|)/2. La fonction o est l'arrondi au plus près.
L'état actuel de nos preuves peut être consulté à
l'adresse
Une prochaine extension de ces travaux est l'écriture
d'une preuve validée des limites de la correction
flottante pour la méthode CENA [25].
Parallèlement à ce travail sur les preuves formelles,
nous continuons à améliorer les algorithmes sur les
« expansions » de nombres flottants. Une
expansion de nombres flottants est un nombre en précision
multiple représenté par la somme d'un petit nombre de
flottants. Pour manipuler ces expansions, on utilise
l'unité de calcul en virgule flottante du processeur pour
les calculs internes à la place de l'unité de calcul
entier.
Nos résultats algorithmiques ne sont pas encore
publiés, mais certains programmes commencent à être
diffusés. La bibliothèque actuelle a été modifiée pour
qu'elle ne travaille plus en précision arbitraire
(calculs exacts aussi longs que nécessaires) mais en
précision fixée (l'utilisateur indique a priori
la précision de chaque opération). Sylvie Boldo, élève de
l'ENS Lyon, a effectué un stage à Berkeley dans l'équipe
de Schewchuck, dans le cadre du fonds France-Berkeley.
Elle a développé des algorithmes d'addition en octuple
précision. Ces algorithmes ont été intégrés dans la
bibliothèque octuple précision développée et distribuée
sous la direction de David Bailey.