Supplemental Readings for IEEE 754 / 854

  1. Bibliographies
  2. Papers on the Standards
  3. Related Papers
  4. Software
  5. Languages
  6. Platform Documentation
  7. Related Pages

This is not an exhaustive list of reading material but rather a short collection directly related to the standard. The bibliographies below contain many more references.

Bibliographies

David Bindel has collected and annotated a focused set of references on floating-point arithmetic and IEEE 754. Nelson H. F. Beebe maintains comprehensive bibliographies on many topics, including floating-point arithmetic, interval arithmetic, and elementary functions. These track the available literature thoroughly, but they have few annotations.

Both CiteSeer and the Computer Science Bibliography Collection are outstanding resources. Searches for floating point and arithmetic retrieve mountains of references. See also the social bookmarking services Connotea and CiteULike.

Papers on the Standard

The March 1981 issue of IEEE Computer (vol. 14, no. 3) contains detailed articles on the (then proposed) 754 standard.

The following contain rationale, (now slightly dated) implementation techniques, and testing methods:

An annotated draft of 854 is available in both IEEE Micro's August, 1984 issue (vol. 4, no. 4) and ACM SIGNUM's January 1985 newsletter (vol 20., no 1.). Extensive meeting minutes are available, as well.

Related Papers

The literature on floating-point arithmetic and the IEEE standards is large. A few papers that cover under-appreciated facets of 754/854 are listed below. See the bibliographies for further references.

Software

The Netlib Repository is always an excellent starting point for finding numerical software. The floating point directory contains David Gay's decimal <-> binary conversion routines along testing routines. These and the freely distributable libm provide the basis for many of the correct packages available.

The functions from appendix 1 are implemented in

Implementation

There are many software-only or software-assisted implementations publically available. Some software pieces include the following:

SoftFloat
John Hauser 's package fully implements IEEE 754. It supports single, double, double extended, and quadruple precision arithmetic.
NetBSD
Operating systems often provide software assistance to supplement hardware capabilities and support routines. The NetBSD code provides fairly straight-forward and easy to read examples for a huge number of hardware architectures.
Linux and GNU libc
Linux provides software assistance and GNU libc provides support routines. The Linux code is also a good example, but the GNU libc code is an exercise in obfuscation.
gcc
Compilers can substitute inline code or function calls for missing features. This often provides better performance than relying on unimplemented instruction traps. GCC provides general assistence and a software implementation.

Testing

Writing software to test an implementation is at least as difficult as writing the implementation itself. Thankfully, there are some useful, publically available starting points.

IEEE 754 Compliance Checker
IeeeCC754 checks roundings, conversions, and exceptional cases with precision-independent test vectors. This generalizes Jerome Coonen's test vectors and UCBTEST's arithmetic tests.
Nelson Beebe's collection
Nelson H. F. Beebe provides a collection of C, Fortran, and Maple programs to test aspects of an IEEE754 implementation. This also includes an updated hoc, Kernighan and Pike's high-order calculator.
TestFloat
This companion to SoftFloat uses SoftFloat to check special cases of 754 implementations. It also tests basic soundness, but not difficult rounding situations.
UCBTEST
Contains the famous paranoia along with more general tests for difficult rounding cases. Focuses on single and double precision, and also contains tests for elementary functions.
SRTEST
Tests for SRT-style dividers. These are notable for their testing along algorithmic singularities.
Base conversions
The program and corresponding report focus on decimal <-> binary conversions. (Also described on Netlib)

Languages

A full 754 / 854 implementation includes the programming languages available to the user. Unfortunately, few languages provide direct support. A few that provide almost everything include

For further information on C99, see Jim Thomas's presentation from the 18 July, 2001 meeting.

Many languages give access to some aspects of IEEE 754 arithmetic. The following go a small step beyond simple single- and double-precision data types.

Platform Documentation

A platform standard like IEEE 754 and 854 should have platform documentation. The most thorough examples are Sun's Numerical Computation Guide, Apple's Standard Apple Numerics Environment (SANE), and Apple's Inside Macintosh: PowerPC Numerics

Related Pages and Information

754 | revision | FAQ | references