On the Automatic Computation of Error Bounds for Solutions of Nonlinear Equations

A large portion of software is used for numerical calculations in mathematics, physics and engineering applications. Among the things that make verification in this domain difficult is the quantification of numerical errors, such as roundoff errors and errors due to the approximate numerical method. Much of numerical software uses self-stabilizing iterative algorithms, for example, to find solutions of nonlinear equations. To support such algorithms, we present a runtime verification technique that checks, given a nonlinear equation and a tentative solution, whether this value is indeed a solution to within a specified precision. Our technique combines runtime verification approaches with information about the analytical equation being solved. It is independent of the algorithm used for finding the solution and is therefore applicable to a wide range of problems. We have implemented our technique for the Scala programming language using our affine arithmetic library and the macro facility of Scala 2.10.

[1]  Zeyuan Allen Zhu,et al.  Randomized accuracy-aware program transformations for efficient approximate computations , 2012, POPL '12.

[2]  Nathalie Revol,et al.  Solving and Certifying the Solution of a Linear System , 2011, Reliab. Comput..

[3]  Siegfried M. Rump,et al.  INTLAB - INTerval LABoratory , 1998, SCAN.

[4]  De Figueiredo,et al.  Self-validated numerical methods and applications , 1997 .

[5]  Andreas Griewank,et al.  A mathematical view of automatic differentiation , 2003, Acta Numerica.

[6]  Fred J. Vermolen,et al.  Numerical Methods in Scientific Computing , 2006 .

[7]  Woongki Baek,et al.  Green: a framework for supporting energy-conscious programming using controlled approximation , 2010, PLDI '10.

[8]  Martin Odersky,et al.  Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition , 2010 .

[9]  James Demmel,et al.  Error bounds from extra-precise iterative refinement , 2006, TOMS.

[10]  Alfio Quarteroni,et al.  Scientific Computing with MATLAB and Octave , 2006 .

[11]  Eric Goubault,et al.  Towards an Industrial Use of FLUCTUAT on Safety-Critical Avionics Software , 2009, FMICS.

[12]  Viktor Kuncak,et al.  Trustworthy numerical computation in Scala , 2011, OOPSLA '11.

[13]  Claude Marché,et al.  Multi-Prover Verification of Floating-Point Programs , 2010, IJCAR.

[14]  Siegfried M. Rump,et al.  Verification methods: rigorous results using floating-point arithmetic , 2010, Acta Numerica.

[15]  Chris Woodford,et al.  Numerical Methods with Worked Examples , 1997 .

[16]  Rudolf Krawczyk,et al.  Newton-Algorithmen zur Bestimmung von Nullstellen mit Fehlerschranken , 1969, Computing.