An accurate elementary mathematical library for the IEEE floating point standard
ACM Transactions on Mathematical Software (TOMS)
What every computer scientist should know about floating-point arithmetic
ACM Computing Surveys (CSUR)
Accuracy and Stability of Numerical Algorithms
Accuracy and Stability of Numerical Algorithms
Safe bounds in linear and mixed-integer linear programming
Mathematical Programming: Series A and B
Valgrind: a framework for heavyweight dynamic binary instrumentation
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Towards an Industrial Use of FLUCTUAT on Safety-Critical Avionics Software
FMICS '09 Proceedings of the 14th International Workshop on Formal Methods for Industrial Critical Systems
Handbook of Floating-Point Arithmetic
Handbook of Floating-Point Arithmetic
Static analysis of finite precision computations
VMCAI'11 Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation
Automatic detection of floating-point exceptions
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automatically adapting programs for mixed-precision floating-point computation
Proceedings of the 27th international ACM conference on International conference on supercomputing
Precimonious: tuning assistant for floating-point precision
SC '13 Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis
On-the-fly detection of instability problems in floating-point program execution
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Efficient search for inputs causing high floating-point errors
Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
Hi-index | 0.00 |
Programs using floating-point arithmetic are prone to accuracy problems caused by rounding and catastrophic cancellation. These phenomena provoke bugs that are notoriously hard to track down: the program does not necessarily crash and the results are not necessarily obviously wrong, but often subtly inaccurate. Further use of these values can lead to catastrophic errors. In this paper, we present a dynamic program analysis that supports the programmer in finding accuracy problems. Our analysis uses binary translation to perform every floating-point computation side by side in higher precision. Furthermore, we use a lightweight slicing approach to track the evolution of errors. We evaluate our analysis by demonstrating that it catches wellknown floating-point accuracy problems and by analyzing the Spec CFP2006 floating-point benchmark. In the latter, we show how our tool tracks down a catastrophic cancellation that causes a complete loss of accuracy leading to a meaningless program result. Finally, we apply our program to a complex, real-world bioinformatics application in which our program detected a serious cancellation. Correcting the instability led not only to improved quality of the result, but also to an improvement of the program's run time.In this paper, we present a dynamic program analysis that supports the programmer in finding accuracy problems. Our analysis uses binary translation to perform every floating-point computation side by side in higher precision. Furthermore, we use a lightweight slicing approach to track the evolution of errors. We evaluate our analysis by demonstrating that it catches wellknown floating-point accuracy problems and by analyzing the SpecfiCFP2006 floating-point benchmark. In the latter, we show how our tool tracks down a catastrophic cancellation that causes a complete loss of accuracy leading to a meaningless program result. Finally, we apply our program to a complex, real-world bioinformatics application in which our program detected a serious cancellation. Correcting the instability led not only to improved quality of the result, but also to an improvement of the program's run time.