Errol Artifact

Installation options

Download Virtual Machine
  username: user
  password: user

Download Source Package
  Dependencies:
  GCC (build-essential)
  GMP (libgmp-dev)
  SCons (scons)
  R (r-base)

README

## 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'.