OFP-Repair: Repairing Floating-point Errors via Original-Precision Arithmetic
Tan, Ding, Chen et al.
Errors in floating-point programs can lead to severe consequences, particularly in critical domains such as military, aerospace, and financial systems, making their repair a crucial research problem. In practice, some errors can be fixed using original-precision arithmetic, while others require high-precision computation. Developers often avoid addressing the latter due to excessive computational resources required. However, they sometimes struggle to distinguish between these two types of errors, and existing repair tools fail to assist in this differentiation. Most current repair tools rely on high-precision implementations, which are time-consuming to develop and demand specialized expertise. Although a few tools do not require high-precision programs, they can only fix a limited subset of errors or produce suboptimal results.
To address these challenges, we propose a novel method, named OFP-Repair.On ACESO's dataset, our patches achieve improvements of three, seven, three, and eight orders of magnitude across four accuracy metrics. In real-world cases, our method successfully detects all five original-precision-repairable errors and fixes three, whereas ACESO only repairs one. Notably, these results are based on verified data and do not fully capture the potential of OFP-Repair. To further validate our method, we deploy it on a decade-old open bug report from GNU Scientific Library (GSL), successfully repairing five out of 15 bugs. The developers have expressed interest in our method and are considering integrating our tool into their development workflow. We are currently working on applying our patches to GSL. The results are highly encouraging, demonstrating the practical applicability of our technique.
academic
OFP-Repair : Réparation des Erreurs de Virgule Flottante via l'Arithmétique de Précision Originale
Les erreurs dans les programmes de virgule flottante peuvent avoir des conséquences graves, particulièrement dans les domaines critiques tels que les systèmes militaires, aérospatiaux et financiers. En pratique, certaines erreurs peuvent être réparées par l'arithmétique de précision originale, tandis que d'autres nécessitent des calculs de haute précision. Les développeurs évitent généralement d'utiliser des méthodes de haute précision en raison de leurs besoins importants en ressources de calcul. Cependant, les développeurs ont souvent du mal à distinguer ces deux catégories d'erreurs, et les outils de réparation existants ne peuvent pas aider à cette distinction. Pour résoudre ces défis, cet article propose la méthode OFP-Repair, qui identifie les erreurs réparables en précision originale en calculant le nombre de condition du programme par rapport à l'entrée, et utilise l'expansion en série pour construire un cadre de réparation unifié. Les résultats expérimentaux montrent que la méthode réalise des améliorations de 3, 7, 3 et 8 ordres de grandeur respectivement sur quatre métriques de précision.
Les erreurs de virgule flottante dans les systèmes critiques peuvent entraîner des conséquences catastrophiques, comme la défaillance du système de missiles Patriot ou l'explosion de la fusée Ariane 5. Les recherches existantes indiquent que les erreurs de virgule flottante se divisent principalement en deux catégories :
Erreurs réparables en précision originale : peuvent être réparées par restructuration d'expressions numériques en précision originale
Erreurs dépendantes de la haute précision : nécessitent l'utilisation de l'arithmétique de virgule flottante de haute précision pour être réparées
L'article identifie trois limitations principales :
Limitation 1 : Les processus de détection et de réparation nécessitent tous deux un programme de haute précision, tandis que la conversion du programme original en version haute précision nécessite des connaissances approfondies en mathématiques et analyse numérique
Limitation 2 : Absence de paradigme de réparation unifié pour les erreurs réparables en précision originale ; les outils existants ne peuvent traiter que certaines de ces erreurs
Limitation 3 : Absence de capacité diagnostique pour ces erreurs ; les développeurs ne peuvent pas déterminer si une erreur peut être réparée par l'arithmétique de précision originale
Les recherches de Franco et al. montrent que les développeurs préfèrent utiliser des solutions de réparation en précision originale, car les solutions haute précision ont des coûts de calcul élevés. Par exemple, NumPy issue #1063 a été fermée en raison du coût excessif de la haute précision. Cependant, les outils existants ne peuvent pas aider les développeurs à distinguer ces deux types d'erreurs.
Proposition de la méthode OFP-Repair : premier cadre unifié capable de détecter et réparer efficacement les erreurs réparables en précision originale
Établissement des fondations théoriques : mécanismes de détection et de réparation des erreurs en précision originale basés sur la théorie du nombre de condition et l'expansion en série de Taylor
Vérification expérimentale étendue : validation de l'efficacité de la méthode sur l'ensemble de données ACESO, les erreurs du monde réel et les rapports de bugs GSL non résolus depuis dix ans
Valeur d'application pratique : réparation réussie de 5 bugs de longue date dans GSL, avec reconnaissance des développeurs
L'article prouve que les erreurs de virgule flottante significatives proviennent principalement de l'effet d'annulation. Lorsque deux nombres de virgule flottante approximativement égaux sont soustraits, le nombre de chiffres de précision effective diminue considérablement. Par exemple :
x = 3.14159265358973, y = 3.14159265358972
Différence théorique : 1×10^-14
Résultat du calcul en virgule flottante : 1.021405182655144×10^-14
Utilisation de la théorie du nombre de condition pour évaluer l'impact des perturbations d'entrée sur la sortie :
f(x)f(x+Δx)−f(x)≈xΔx⋅f(x)xf′(x)
L'expansion de Taylor nécessite que la fonction converge au point d'expansion. Lorsque la fonction diverge au point d'expansion (comme dans SciPy issue #3545 où norm.ppf(1−q/2) diverge lorsque q tend vers 0), la méthode ne s'applique pas.
Comparaison principale avec ACESO, car c'est le seul outil existant ne nécessitant pas de programme haute précision pour la détection et la réparation.
Taux de réussite : OFP-Repair identifie avec succès toutes les erreurs réparables en précision originale parmi les 32 fonctions ACESO
Analyse du nombre de condition : les nombres de condition calculés ont une valeur maximale de 1.47, minimale de 0, moyenne de 0.31, tous bien en dessous du seuil de 10^5
Précision de la dérivée numérique : à l'exception de la fonction bj_tan, la plage d'erreur relative est 0-0.746, n'affectant pas l'effet de détection
Portée d'Application : applicable uniquement aux erreurs réparables en précision originale, inefficace pour les erreurs dépendantes de la haute précision
Limitations de Fonction : les exigences de convergence de l'expansion de Taylor limitent l'universalité de la méthode
Sélection de Paramètres : le choix du seuil du nombre de condition et du nombre de termes de Taylor manque de guidance théorique
Scalabilité : l'applicabilité à de grands programmes complexes nécessite une vérification supplémentaire
L'article cite 36 références connexes, couvrant la détection d'erreurs de virgule flottante, la réparation, l'analyse numérique et d'autres domaines, fournissant une base théorique solide à la recherche. Les références clés incluent l'étude systématique des bugs numériques par Franco et al., les outils de réparation représentatifs ACESO et AutoRNP, ainsi que les fondations mathématiques connexes.
Évaluation Générale : Cet article est une recherche de haute qualité en génie logiciel, proposant une solution innovante au problème important de la réparation d'erreurs dans les programmes de virgule flottante. La méthode a des fondations théoriques solides, une vérification expérimentale complète et des résultats d'application pratique significatifs. Bien qu'il existe certaines limitations, il apporte une contribution importante au développement de ce domaine.