Sipe is a mini-library in the form of a C header file, to perform radix-2 floating-point computations in very low precisions with correct rounding. By default, rounding is done to nearest (with the even rounding rule). As of 2013-09, rounding can be done toward zero; the user can choose the rounding direction only at compile time.
The goal of such a tool is to do proofs of algorithms/properties or computations of tight error bounds in these precisions by exhaustive tests, in order to generalize them to higher precisions. The currently supported operations are addition, subtraction, multiplication (possibly with the error term), FMA/FMS (optional, see code), and miscellaneous comparisons and conversions.
Sipe originally meant
Small Integer Plus Exponent
due to the way it was
implemented, but this is no longer the only implementation.
Source file (development version): sipe.h
A short documentation is at the beginning of the file.
Archived versions:
test-sipe.c, to test Sipe against the GNU MPFR library (you will also need version-info.h).
minasm.c, for the proof of the optimality of the TwoSum algorithm. For more information, see the following research report (2010): Peter Kornerup, Vincent Lefèvre, Nicolas Louvet, Jean-Michel Muller, On the Computation of Correctly-Rounded Sums (the sources of the programs written for the tests are provided in the annex). Note that a shorter version of this research report has been published in IEEE Transactions on Computers.
Vincent Lefèvre, SIPE: Small Integer Plus Exponent, INRIA research report RR-7832, December 2011. [PDF]
Vincent Lefèvre, SIPE: Small Integer Plus Exponent, Proceedings of the 21th IEEE Symposium on Computer Arithmetic (ARITH-21) (sources provided in the annex), April 2013. [PDF]
Vincent Lefèvre, Sipe presentation at ARITH-21, in PDF, April 2013.
Vincent Lefèvre, Sipe: a Mini-Library for Very Low Precision Computations with Correct Rounding, preprint, September 2013.