
Package Overview for Berkeley TestFloat Release 3e

John R. Hauser
2018 January 20

Berkeley TestFloat is a small collection of programs for testing that an
implementation of binary floating-point conforms to the IEEE Standard for
Floating-Point Arithmetic.  TestFloat is distributed in the form of C source
code.

The TestFloat package is documented in the following files in the "doc"
subdirectory:

    TestFloat-general.html  General documentation for understanding and using
                             the TestFloat programs.
    testfloat_gen.html      \
    testfloat_ver.html      | Specific documentation for each TestFloat
    testfloat.html          |  program.
    testsoftfloat.html      |
    timesoftfloat.html      /
    TestFloat-source.html   Documentation for building TestFloat.
    TestFloat-history.html  History of the major changes to TestFloat.

Other files in the package comprise the source code for TestFloat.

