Skip to content
floating-point errors checker
C++ C Python Makefile Shell M4
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
Interlibmath Portability with old g++ version Jul 26, 2019
backend_checkcancellation Begin of configuration of checkcancellation backend May 1, 2019
ddTest Update verrou_dd_* tests Jul 21, 2019
docs Update documentation May 14, 2019
tests test modification implied by change in random generator Jul 23, 2019
unitTest Merge remote-tracking branch 'origin/repro_correctness_2019' into rep… Aug 19, 2019
.gitignore Setup continuous integration May 10, 2017
.travis.yml Release v2.1.0 Nov 8, 2018 Post-release v2.1.0 Nov 8, 2018
COPYING Added GPL headers Jun 13, 2016 Two scripts verrou_dd_line and verrou_dd_sym replace verrou_dd Jul 21, 2019 Update documentation for v2.1.0 Nov 8, 2018 export information about fma compilation status Aug 2, 2019 export information about fma compilation status Aug 2, 2019 Add an option to detect cancellation and correct the average mode of … May 1, 2019
interflop_backend_interface.h Add an option to detect cancellation and correct the average mode of … May 1, 2019 Update the release process + CLO Nov 9, 2018 travis correction Jul 26, 2019
vr_clo.c Bug correction : --source works now with empty file Jul 17, 2019
vr_clo.txt Update documentation May 14, 2019
vr_clreq.c Merge branch 'master' into trace Jun 28, 2019
vr_generated_from_templates.h Add an option to detect cancellation and correct the average mode of … May 1, 2019
vr_include_trace.c The option --trace select the symbol in which the BB (BasicBloc) are … Feb 1, 2019
vr_instrumentOp_impl.h Add an option to detect cancellation and correct the average mode of … May 1, 2019
vr_interp_operator_impl.h mcaquad Backend integration Mar 26, 2019
vr_interp_operator_template_2args.h mcaquad Backend integration Mar 26, 2019
vr_interp_operator_template_3args.h mcaquad Backend integration Mar 26, 2019
vr_interp_operator_template_cast.h mcaquad Backend integration Mar 26, 2019
vr_main.c The uname object and line are treated as such via exclusion and source Jul 24, 2019
vr_traceBB.c compil warning cleaning Jul 11, 2019

Verrou Build Status

Verrou helps you look for floating-point round-off errors in programs. It implements various forms of arithmetic, including:

  • all IEEE-754 standard rounding modes;

  • two variants of stochastic floating-point arithmetic based on random rounding: all floating-point operations are perturbed by randomly switching rounding modes. These can be seen as an asynchronous variant of the CESTAC method, or a subset of Monte Carlo Arithmetic, performing only output randomization through random rounding;

  • an emulation of single-precision rounding, in order to test the effect of reduced precision without any need to change the source code.

Verrou also comes with a verrou_dd utility, which simplifies the Verrou-based debugging process by implementing several variants of the Delta-Debugging algorithm. This allows easily locating which parts of the analyzed source code are likely to be responsible for Floating-Point-related instabilities.

The documentation for Verrou is available as a dedicated chapter in the Valgrind manual.


Get the sources

The preferred way to get Verrou sources is to download the latest stable version: v2.1.0. Older versions are available in the releases page. After downloading one of the released versions, skip to the "Configure and build" section below.


In order to build the development version of Verrou, it is necesary to first download a specific Valgrind version, and patch it. Fetch valgrind's sources:

git clone --branch=VALGRIND_3_14_0 --single-branch git:// valgrind-3.14.0+verrou-dev

Add verrou's sources to it:

cd valgrind
git clone --branch=master --single-branch verrou

patch -p1 <verrou/valgrind.diff

Configure and build

First, install all required dependencies (the names of relevant Debian packages are put in parentheses as examples):

  • C & C++ compilers (build-essential),
  • autoconf & automake (automake),
  • Python 3 (python3)
  • C standard library with debugging symbols (libc6-dbg).


Configure valgrind:

./configure --enable-only64bit --prefix=PREFIX

It is recommended to add the --enable-verrou-fma flag to the configuration above if your system supports FMA instructions. Depending on your system, it may be required to set CFLAGS so that it enables the use of FMA in your compiler:

./configure --enable-only64bit --enable-verrou-fma --prefix=PREFIX CFLAGS="-mfma"


Build and install:

make install

Load the environment

In order to actually use Verrou, you must load the correct environment. This can be done using:

source PREFIX/

Test (optional)

General tests

You can test the whole platform:

make check
perl tests/vg_regtest --all

or only verrou:

make -C tests check
make -C verrou check
perl tests/vg_regtest verrou

Specific tests

These tests are more closely related to the arithmetic part in Verrou:

make -C verrou/unitTest


The documentation for verrou is available as a chapter in valgrind's manual.


You can also re-build it:

make -C docs html-docs man-pages

and browse it locally:

iceweasel docs/html/vr-manual.html

Beware, this requires lots of tools which are not necessarily tested for in configure, including (but not necessarily limited to):

  • xsltproc
  • docbook-xsl
You can’t perform that action at this time.