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.

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.

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

- David Stevenson,
*et al*.,*A Proposed Standard for Binary Floating-Point Arithmetic* - Willian J. Cody,
*Analysis of Proposals for the Floating-Point Standard* - Jerome T. Coonen,
*Underflow and the Denormalized Numbers* - David Hough,
*Applications of the Proposed IEEE-754 Standard for Floating Point Arithmetic*

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

- Jerome Coonen,
*An Implementation Guide to a Proposed Standard for Floating-Point Arithmetic, Computer*, 13(1), 1980, pp. 6879. - Jerome Coonen,
*Contributions to a Proposed Standard for Binary Floating-Point Arithmetic*, Ph.D. Dissertation, UC Berkeley, 1984

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.

- William J. Cody,
*et al*.,*A Proposed Radix and Word-Length Independent Standard for Floating Point Arithmetic*

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.

- David Goldberg with Doug Priest,
*What Every Computer Scientist Should Know about Floating-Point Arithmetic*(CiteSeer) - James
Demmel,
*Underflow and the Reliability of Numerical Software*, SIAM J. Sci. Stat. Comput., 5(4), 1984, pp. 887-919. (CiteSeer) - Xiaoye Li
and James Demmel,
*Faster Numerical Algorithms via Exception Handling*, IEEE Transactions on Computers, 43(8), 1994, pp. 983-992. (CiteSeer) - John
Hauser,
*Handling Floating-Point Exceptions in Numeric Programs*, ACM Transactions on Programming Languages and Systems 18(2), 1996, pp. 139-174. (CiteSeer) - Michael
Parks,
*Number-Theoretic Test Generation for Directed Rounding*, IEEE Transactions on Computers 49(2), 2000. (PostScript) -
Douglas Priest,
*Algorithms for Arbitrary Precision Floating Point Arithmetic*, Proceedings of the 10th IEEE Symposium on Computer Arithmetic, 1991, pp. 132-144. (CiteSeer)

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

- William J. Cody and Jerome T. Coonen,
*Algorithm 722; Functions to support the IEEE standard for binary floating-point arithmetic*, ACM Transactions on Mathematical Software 19(4), 1993, pp. 443-451. - Joe Darcy,
*Writing robust IEEE recommended functions in "100 % Pure Java"TM*, Technical Report UCB//CSD-98-1009. (ResearchIndex

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.

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)

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

- Borneo , a variant of Java (tm);
- C99 ;
- Modula-3 ; and
- the draft Fortran 200x (chapter 14).

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.

- The Standard ML '97 Basis Library supports exceptional values, classification, unordered comparisons, and rounding modes. Implementations decide on 754 or 854 support and on the precision.
- The Common Lisp standard provides optional access to floating-point conditions that could be used to implement efficient IEEE trap handlers. Alas, to this writer's knowledge, no implementations support these.
- Jerome Coonen's RealJava proposal and the resulting discussion outline issues in adding IEEE 754 support to existing languages.

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

- W. Kahan's page contains many essays on the IEEE arithmetic standards.
- Lefèvre and Muller's work on the table-maker's dilemma outlines the difficulties in specifying elementary functions.
- David Hough's site has information from K-C Ng on trigonometric argument reduction, historic Apple Lisa documents, and other references.