Download Virtual Machine
username: user
password: user
Download Source Package
Dependencies:
GCC (build-essential)
GMP (libgmp-dev)
SCons (scons)
R (r-base)
## Building
For building, you can either build the package on a local system or build
using a provided virtual machine.
* Build locally
The script 'build.sh' automates the entire build process. The build
process depends on GCC, GMP, SCons, and R. Ubuntu-based distributions can
install the required packages with the command:
sudo apt-get install build-essential scons libgmp-dev r-base
Once all the prerequisites are installed, the automated scripts can be
used to build and test the library.
* Build using a VM
The virtual machine image "ErrolXubuntu.ova" was exported using VirtualBox.
It contains all of the required packages and source code. The username and
password is "user". The source code and automated scripts are located at
"~/errol", and may be accessed by clicking launcher on the desktop.
## Errol Library
The family of Errol double-to-string conversion algorithms are found in the
directory 'lib'. The library is built by running 'make'. The library provides
the following API:
int16_t errol1_dtoa(double val, char *buf, bool *opt)
int16_t errol2_dtoa(double val, char *buf, bool *opt)
int16_t errol3_dtoa(double val, char *buf)
The parameter 'val' is the input floating-point value. The significand digits
are written to the 'buf', writing at most 18 bytes including the terminating
null byte. The exponent is returned as a 16-bit, signed integer. In the case
of Errol1 and Errol2, the 'opt' parameter is an optional parameter that is set
to indicate whether or not the output is guaranteed to be optimal.
Example usage:
int16_t exp;
char dig[32];
exp = errol3_dtoa(M_PI, dig);
printf("0.%se%d", dig, exp);
// prints "0.3141592653589793e1"
## Automated scripts.
build.sh
Automatically builds the library and test code.
bench.sh
Builds the library and executes the performance tests.
mkfig.sh
Builds the library and generates the performance figures. The figures are
found in the 'fig' directory.
enum.sh
Run the enumeration algorithm on Errol3. Because Errol3 already includes the
lookup table for failing cases, the enumeration algorithm will not found any
errors. All found failures are written to 'err.list'.