Elsevier Science Home
Computer Physics Communications Program Library
Full text online from Science Direct
Programs in Physics & Physical Chemistry
CPC Home

[Licence| Download | New Version Template] aeat_v1_1.tar.gz(452 Kbytes)
Manuscript Title: A new version of the CADNA library for estimating round-off error propagation in Fortran programs
Authors: Fabienne Jézéquel, Jean-Marie Chesneaux, Jean-Luc Lamotte
Program title: CADNA
Catalogue identifier: AEAT_v1_1
Distribution format: tar.gz
Journal reference: Comput. Phys. Commun. 181(2010)1927
Programming language: Fortran
NOTE: A C++ version of this program is available in the Library as AEGQ_v1_0.
Computer: PC running LINUX with an i686 or an ia64 processor, UNIX workstations including SUN, IBM.
Operating system: LINUX, UNIX.
Keywords: CADNA, CESTAC method, Discrete Stochastic Arithmetic, floating-point arithmetic, numerical validation, round-off errors.
PACS: 02.70.-c.
Classification: 6.5.

Does the new version supersede the previous version?: Yes

Nature of problem:
A simulation program which uses floating-point arithmetic generates round-off errors, due to the rounding performed at each assignment and at each arithmetic operation. Round-off error propagation may invalidate the result of a program. The CADNA library enables one to estimate round-off error propagation in any simulation program and to detect all numerical instabilities that may occur at run time.

Solution method:
The CADNA library [1-3] implements Discrete Stochastic Arithmetic [4,5] which is based on a probabilistic model of round-off errors. The program is run several times with a random rounding mode generating different results each time. From this set of results, CADNA estimates the number of exact significant digits in the result that would have been computed with standard floating-point arithmetic.

Reasons for new version:
On 64-bit processors, the mathematical library associated with the GNU Fortran compiler may provide incorrect results or generate severe bugs with rounding towards -∞ and +∞, which the random rounding mode is based on. Therefore a particular definition of mathematical functions for stochastic arguments has been included in the CADNA library to enable its use with the GNU Fortran compiler on 64-bit processors.

Summary of revisions:
If CADNA is used on a 64-bit processor with the GNU Fortran compiler, mathematical functions are computed with rounding to the nearest, otherwise they are computed with the random rounding mode. It must be pointed out that the knowledge of the accuracy of the stochastic argument of a mathematical function is never lost.

CADNA requires a Fortran 90 (or newer) compiler. In the program to be linked with the CADNA library, round-off errors on complex variables cannot be estimated. Furthermore array functions such as product or sum must not be used. Only the arithmetic operators and the abs, min, max and sqrt functions can be used for arrays.

Additional comments:
In the library archive, users are advised to read the INSTALL file first. The doc directory contains a user guide named ug.cadna.pdf which shows how to control the numerical accuracy of a program using CADNA, provides installation instructions and describes test runs. The source code, which is located in the src directory, consists of one assembly language file (cadna_rounding.s) and eighteen Fortran language files. cadna_rounding.s is a symbolic link to the assembly file corresponding to the processor and the Fortran compiler used. This assembly file contains routines which are frequently called in the CADNA Fortran files to change the rounding mode. The Fortran language files contain the definition of the stochastic types on which the control of accuracy can be performed, CADNA specific functions (for instance to enable or disable the detection of numerical instabilities), the definition of arithmetic and relational operators which are overloaded for stochastic variables and the definition of mathematical functions which can be used with stochastic arguments. The examples directory contains seven test runs which illustrate the use of the CADNA library and the benefits of Discrete Stochastic Arithmetic.

Running time:
The version of a code which uses CADNA runs at least three times slower than its floating-point version. This cost depends on the computer architecture and can be higher if the detection of numerical instabilities is enabled. In this case, the cost may be related to the number of instabilities detected.

[1] The CADNA library, URL address: http://www.lip6.fr/cadna
[2] F. Jézéquel, J.-M. Chesneaux, CADNA: a library for estimating round-off error propagation, Comput. Phys. Commun., 178(12), 2008, pp. 933-955.
[3] N.S. Scott, F. Jézéquel, C. Denis, J.-M. Chesneaux, Numerical 'health check' for scientic codes: the CADNA approach, Comput. Phys. Commun., 176(8), 2007, pp. 507-521.
[4] J. Vignes, A stochastic arithmetic for reliable scientific computation, Math. and Comp. in Sim. 35, 1993, pp. 233-261.
[5] J. Vignes, Discrete Stochastic Arithmetic for Validating Results of Numerical Software, Num. Algo. 37, 2004, pp. 377-390.