Handling floating-point exceptions in numeric programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Continuity in software systems
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Propagation of Roundoff Errors in Finite Precision Computations: A Semantics Approach
ESOP '02 Proceedings of the 11th European Symposium on Programming Languages and Systems
Static Analyses of the Precision of Floating-Point Operations
SAS '01 Proceedings of the 8th International Symposium on Static Analysis
Guaranteed Proofs Using Interval Arithmetic
ARITH '05 Proceedings of the 17th IEEE Symposium on Computer Arithmetic
LIFT: A Low-Overhead Practical Information Flow Tracking System for Detecting Security Attacks
Proceedings of the 39th Annual IEEE/ACM International Symposium on Microarchitecture
Formal Verification of Floating-Point Programs
ARITH '07 Proceedings of the 18th IEEE Symposium on Computer Arithmetic
Proving the absence of run-time errors in safety-critical avionics code
EMSOFT '07 Proceedings of the 7th ACM & IEEE international conference on Embedded software
The pitfalls of verifying floating-point computations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Apron: A Library of Numerical Abstract Domains for Static Analysis
CAV '09 Proceedings of the 21st International Conference on Computer Aided Verification
RTSS '09 Proceedings of the 2009 30th IEEE Real-Time Systems Symposium
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
Continuity analysis of programs
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Perturbing numerical calculations for statistical analysis of floating-point program (in)stability
Proceedings of the 19th international symposium on Software testing and analysis
Static analysis of finite precision computations
VMCAI'11 Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Trustworthy numerical computation in Scala
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
An overview of semantics for the validation of numerical programs
VMCAI'05 Proceedings of the 6th international conference on Verification, Model Checking, and Abstract Interpretation
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
A dynamic program analysis to find floating-point accuracy problems
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
White box sampling in uncertain data processing enabled by program analysis
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Under-approximations of computations in real numbers based on generalized affine arithmetic
SAS'07 Proceedings of the 14th international conference on Static Analysis
Automatic detection of floating-point exceptions
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dynamic floating-point cancellation detection
Parallel Computing
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Hi-index | 0.00 |
The machine representation of floating point values has limited precision such that errors may be introduced during execution. These errors may get propagated and magnified by the following operations, leading to instability problems, e.g., control flow path may be undesirably altered and faulty output may be emitted. In this paper, we develop an on-the-fly efficient monitoring technique that can predict if an execution is stable. The technique does not explicitly compute errors as doing so incurs high overhead. Instead, it detects possible places where an error becomes substantially inflated regarding the corresponding value, and then tags the value with one bit to denote that it has an inflated error. It then tracks inflation bit propagation, taking care of operations that may cut off such propagation. It reports instability if any inflation bit reaches a critical execution point, such as a predicate, where the inflated error may induce substantial execution difference, such as different execution paths. Our experiment shows that with appropriate thresholds, the technique can correctly detect that over 99.999996% of the inputs of all the programs we studied are stable while a traditional technique relying solely on inflation detection mistakenly classifies majority of the inputs as unstable for some of the programs. Compared to the state of the art technique that is based on high precision computation and causes several hundred times slowdown, our technique only causes 7.91 times slowdown on average and can report all the true unstable executions with the appropriate thresholds.