Not Just Another Interval Library
GAOL is a C++ Interval Arithmetic library that strives to offer fast and reliable operators for constraint solvers.
GAOL is written by Frédéric Goualard, Associate Professor in Computing Science at Nantes Université (LS2N, UMR CNRS 6004), who has been its main developer since 2001. Its page is the GAOL section of Frédéric Goualard's site, and its original repository is goualard-f/GAOL.
Publications of Frédéric Goualard related to GAOL (see the full list):
- Fast and Correct SIMD Algorithms for Interval Arithmetic. PARA '08, Lecture Notes in Computer Science 6126–6127, Springer, 2012.
- Interval Extensions of Multivalued Inverse Functions. Research report hal-00288457, 2008.
- How do you compute the midpoint of an interval?. ACM Transactions on Mathematical Software 40(2), 2014.
This fork of GAOL adds a CMake build, tests of the bounds GAOL computes, and the changes GAOL needs to compile and compute right on every system it can: Linux, macOS and Windows, on x86, x86_64, ARM, arm64 and the other processors of Debian. It was written for Codac, whose intervals are built upon GAOL. The autotools and meson builds of GAOL are kept, and the three builds configure GAOL the same way (see The three builds).
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=<prefix> -DGAOL_BUILD_TESTS=ON
cmake --build build --config Release
ctest --test-dir build -C Release
cmake --install build --config ReleaseThe CMake build downloads mathlib, the mathematical library GAOL computes its
elementary functions with, fixes it and installs it along with GAOL; the
autotools and meson builds need it installed beforehand
(scripts/install-mathlib.sh). A CMake project then uses the installed GAOL
with:
find_package(gaol REQUIRED)
target_link_libraries(my_target PRIVATE gaol::gaol)gaol::gaol, and gaol.pc for pkg-config, carry the flags of interval
arithmetic that the code including GAOL's headers has to be compiled with.
- Building GAOL: the CMake, autotools and meson builds, and their options.
- Using GAOL: the flags of interval arithmetic, GAOL from CMake and from pkg-config, and the rounding direction.
- The three builds: what CMake, configure and meson agree on, and the compilers and options they refuse.
- Tests: what the programs of
tests/check, and what they show of GAOL. - What differs from GAOL: each change of this fork, and where it comes from.
- Continuous integration: the systems, processors and compilers GAOL is built and tested on.
- Comparison with libieeep1788, filib++ and Solaris Studio: the special cases of the four libraries against IEEE 1788-2015, and their performance, with the scripts to run the comparison again.
- The manual of GAOL, by Frédéric Goualard:
manual/gaol.pdf, with its LaTeX sources inmanual/.
GAOL, by Frédéric Goualard, is distributed
under the GNU LGPL v2 (COPYING.LIB). mathlib, which the
CMake build downloads, is distributed under the GNU LGPL v2 or later, as the
headers of its sources state (its archive carries the text of the GNU GPL v2).