Most numerical simulations are performed in double precision (IEEE754 binary64). Unfortunately this can be costly in terms of computing time, memory transfer and energy consumption.

PROMISE is a tool to auto-tune the precision of floating-point variables in code. From an initial C or C++ program and a required accuracy on the computed results, PROMISE automatically modifies the floating-point types and maximizes the number of single precision variables. To estimate the numerical quality of results, PROMISE uses CADNA which controls round-off errors in simulation programs.

PROMISE has been successfully tested on programs implementing several numerical algorithms including linear system solving and also on an industrial code that solves the neutron transport equations.


Source code, documentation and example programs can be downloaded here (version Feb. 2019).
A version of PROMISE can provide codes mixing single, double and quadruple precision. Please contact the CADNA team for more information.


Results of PROMISE are shown in a simple numerical example.


If you have any feedback, bug reports or comments, please send an email to the CADNA team.


S. Graillat, F. Jézéquel, R. Picot, F. Févotte, B. Lathuilière. Auto-tuning for floating-point precision with Discrete Stochastic Arithmetic. 2016. HAL ID:hal-01331917 (pdf)