What every computer scientist should know about floating-point arithmetic
ACM Computing Surveys (CSUR)
A static analyzer for large safety-critical software
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Programming in Scala: A Comprehensive Step-by-step Guide
Programming in Scala: A Comprehensive Step-by-step Guide
Apron: A Library of Numerical Abstract Domains for Static Analysis
CAV '09 Proceedings of the 21st International Conference on Computer Aided Verification
Interval Polyhedra: An Abstract Domain to Infer Interval Linear Relationships
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
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
Towards program optimization through automated analysis of numerical precision
Proceedings of the 8th annual IEEE/ACM international symposium on Code generation and optimization
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
Perturbing numerical calculations for statistical analysis of floating-point program (in)stability
Proceedings of the 19th international symposium on Software testing and analysis
Automatic verification of control system implementations
EMSOFT '10 Proceedings of the tenth ACM international conference on Embedded software
Verified squared: does critical software deserve verified tools?
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
FloPSy: search-based floating point constraint solving for symbolic execution
ICTSS'10 Proceedings of the 22nd IFIP WG 6.1 international conference on Testing software and systems
Certifying the Floating-Point Implementation of an Elementary Function Using Gappa
IEEE Transactions on Computers
Integrating ICP and LRA solvers for deciding nonlinear real arithmetic problems
Proceedings of the 2010 Conference on Formal Methods in Computer-Aided Design
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
SAT Modulo Linear Arithmetic for Solving Polynomial Constraints
Journal of Automated Reasoning
A logical product approach to zonotope intersection
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Floating-Point verification using theorem proving
SFM'06 Proceedings of the 6th international conference on Formal Methods for the Design of Computer, Communication, and Software Systems
Multi-Prover verification of floating-point programs
IJCAR'10 Proceedings of the 5th international conference on Automated Reasoning
Symbolic Execution with Interval Solving and Meta-heuristic Search
ICST '12 Proceedings of the 2012 IEEE Fifth International Conference on Software Testing, Verification and Validation
Efficient state merging in symbolic execution
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
A dynamic program analysis to find floating-point accuracy problems
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Numeric bounds analysis with conflict-driven learning
TACAS'12 Proceedings of the 18th international conference on Tools and Algorithms for the Construction and Analysis of Systems
IJCAR'12 Proceedings of the 6th international joint conference on Automated Reasoning
Refining abstract interpretation based value analysis with constraint programming techniques
CP'12 Proceedings of the 18th international conference on Principles and Practice of Constraint Programming
Modular static analysis with zonotopes
SAS'12 Proceedings of the 19th international conference on Static Analysis
An overview of the Leon verification system: verification by translation to recursive functions
Proceedings of the 4th Workshop on Scala
Synthesis of fixed-point programs
Proceedings of the Eleventh ACM International Conference on Embedded Software
Hi-index | 0.00 |
Writing accurate numerical software is hard because of many sources of unavoidable uncertainties, including finite numerical precision of implementations. We present a programming model where the user writes a program in a real-valued implementation and specification language that explicitly includes different types of uncertainties. We then present a compilation algorithm that generates a finite-precision implementation that is guaranteed to meet the desired precision with respect to real numbers. Our compilation performs a number of verification steps for different candidate precisions. It generates verification conditions that treat all sources of uncertainties in a unified way and encode reasoning about finite-precision roundoff errors into reasoning about real numbers. Such verification conditions can be used as a standardized format for verifying the precision and the correctness of numerical programs. Due to their non-linear nature, precise reasoning about these verification conditions remains difficult and cannot be handled using state-of-the art SMT solvers alone. We therefore propose a new procedure that combines exact SMT solving over reals with approximate and sound affine and interval arithmetic. We show that this approach overcomes scalability limitations of SMT solvers while providing improved precision over affine and interval arithmetic. Our implementation gives promising results on several numerical models, including dynamical systems, transcendental functions, and controller implementations.