Studying the Numerical Quality of an Industrial Computing Code: A Case Study on Code_aster

  • François FévotteEmail author
  • Bruno Lathuilière
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10381)


We present in this paper a process which is suitable for the complete analysis of the numerical quality of a large industrial scientific computing code. Random rounding, using the Verrou diagnostics tool, is first used to evaluate the numerical stability, and locate the origin of errors in the source code. Once a small code part is identified as unstable, it can be isolated and studied using higher precision computations and interval arithmetic to compute guaranteed reference results. An alternative implementation of this unstable algorithm is then proposed and experimentally evaluated. Finally, error bounds are given for the proposed algorithm, and the effectiveness of the proposed corrections is assessed in the computing code.


Floating-point Numerical verification Random rounding 

Supplementary material


  1. 1.
    Code_Aster: Structures and thermomechanics analysis for studies and research.
  2. 2.
    Benz, F., Hildebrandt, A., Hack, S.: A dynamic program analysis to find floating-point accuracy problems. In: 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pp. 453–462. ACM, New York, June 2012Google Scholar
  3. 3.
    Denis, C., de Oliveira Castro, P., Petit, E.: Verificarlo: checking floating point accuracy through Monte Carlo Arithmetic. In: 23rd IEEE International Symposium on Computer Arithmetic (ARITH 2016) (2016)Google Scholar
  4. 4.
    de Dinechin, F., Lauter, C., Melquiond, G.: Certifying the floating-point implementation of an elementary function using Gappa. IEEE Trans. Comput. 60(2), 242–253 (2011)MathSciNetCrossRefGoogle Scholar
  5. 5.
    Févotte, F., Lathuilière, B.: VERROU: Assessing Floating-Point Accuracy Without Recompiling, October 2016.
  6. 6.
    Févotte, F., Lathuilière, B.: VERROU: a CESTAC evaluation without recompilation. In: International Symposium on Scientific Computing, Computer Arithmetics and Verified Numerics (SCAN), Uppsala, Sweden, September 2016Google Scholar
  7. 7.
    Graillat, S., Jézéquel, F., Picot, R.: Numerical Validation of Compensated Algorithms with Stochastic Arithmetic, September 2016.
  8. 8.
    IEEE Standard for Floating-Point Arithmetic. IEEE Std 754–2008, pp. 1–70 (2008)Google Scholar
  9. 9.
    Jézéquel, F., Chesneaux, J.M., Lamotte, J.L.: A new version of the CADNA library for estimating round-off error propagation in Fortran programs. Comput. Phys. Commun. 181(11), 1927–1928 (2010)CrossRefGoogle Scholar
  10. 10.
    Lam, M.O., Hollingsworth, J.K., Stewart, G.: Dynamic floating-point cancellation detection. Parallel Comput. 39(3), 146–155 (2013)MathSciNetCrossRefGoogle Scholar
  11. 11.
    Lamotte, J.L., Chesneaux, J.M., Jézéquel, F.: CADNA_C: a version of CADNA for use with C or C++ programs. Comput. Phys. Commun. 181(11), 1925–1926 (2010)CrossRefGoogle Scholar
  12. 12.
    Montan, S.: Sur la validation numérique des codes de calcul industriels. Ph.D. thesis, Université Pierre et Marie Curie (Paris 6), France (2013). (in French)Google Scholar
  13. 13.
    Nethercote, N., Seward, J.: Valgrind: a framework for heavyweight dynamic binary instrumentation. In: ACM SIGPLAN 2007 Conference on Programming Language Design and Implementation (PLDI) (2007)Google Scholar
  14. 14.
    Neumaier, A.: Rundungsfehleranalyse einiger verfahren zur summation endlicher summen. ZAMM (Zeitschrift für Angewandte Mathematik und Mechanik) 54, 39–51 (1974)MathSciNetCrossRefzbMATHGoogle Scholar
  15. 15.
    Ogita, T., Rump, S.M., Oishi, S.: Accurate sum and dot product. SIAM J. Sci. Comput. 26, 1955–1988 (2005)MathSciNetCrossRefzbMATHGoogle Scholar
  16. 16.
    Panchekha, P., Sanchez-Stern, A., Wilcox, J.R., Tatlock, Z.: Automatically improving accuracy for floating point expressions. In: ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2015), Portland, Oregon, USA, June 2015Google Scholar
  17. 17.
    Sanchez-Stern, A., Panchekha, P., Lerner, S., Tatlock, Z.: Finding root causes of floating point error with herbgrind, arXiv:1705.10416v1 [cs.PL]
  18. 18.
    Sanders, D.P., Benet, L., Kryukov, N.: The julia package ValidatedNumerics.jl and its application to the rigorous characterization of open billiard models. In: International Symposium on Scientific Computing, Computer Arithmetics and Verified Numerics (SCAN), Uppsala, Sweden, September 2016Google Scholar
  19. 19.
    Sterbenz, P.H.: Floating Point Computation. Prentice-Hall, Englewood Cliffs (1974)Google Scholar
  20. 20.
    Stott Parker, D.: Monte Carlo arithmetic: exploiting randomness in floating-point arithmetic. Technical report CSD-970002, University of California, Los Angeles (1997)Google Scholar
  21. 21.
    Vignes, J.: A stochastic arithmetic for reliable scientific computation. Math. Comput. Simul. 35, 233–261 (1993)MathSciNetCrossRefGoogle Scholar
  22. 22.
    Zeller, A.: Why Programs Fail, 2nd edn. Morgan Kaufmann, Boston (2009)Google Scholar

Copyright information

© Springer International Publishing AG 2017

Authors and Affiliations

  1. 1.Département PERICLESEDF R&DPalaiseauFrance

Personalised recommendations