History of Berkeley TestFloat, to Release 3e
John R. Hauser
2018 January 20
Releases of Berkeley TestFloat normally parallel those of Berkeley SoftFloat,
on which TestFloat is based.
Each TestFloat release necessarily incorporates all bug fixes from the
corresponding release of SoftFloat.
Release 3e (2018 January)
Fixed a problem with the all-in-one
testfloat program whereby
-all1 incorrectly also tested the three-operand fused
Modified the expected behavior of rounding mode
odd (jamming) when
rounding to an integer value (either conversion to an integer format or a
Previously, for those cases only, rounding mode
odd was expected
to act the same as rounding to minimum magnitude.
Now, when rounding to an integer value, the nearest odd integer is expected,
consistent with the round-to-odd result of other operations.
-checkAll to programs
Improved the checking of integer results of invalid operations.
Release 3d (2017 August)
When the all-in-one
testfloat program is compiled to test the C
language’s arithmetic, added the ability to test library functions
fmal, which were added to the C Standard in 1999.
Release 3c (2017 February)
Added support for testing rounding mode
Made support for testing 64-bit double-precistion floating-point
be subject to macro
FLOAT64 (akin to macros
FLOAT128 from before).
Fixed some bugs that caused compilation to fail with certain combinations of
option macro settings.
Corrected the types of two internal variables to be
Improved the formatting of some error reports (concerning where lines are
broken when they exceed 79 characters in length).
Release 3b (2016 July)
Added the ability to test the common 16-bit
“half-precision” floating-point format.
-seed option to programs
testsoftfloat for setting the seed for
the pseudo-random number generator used to generate test cases.
Where a specific choice is needed for how tininess is detected on underflow,
changed the default to be the detection of tininess after rounding
-tininessafter) instead of before rounding
Modified the format of reported discrepancies to show the signs of
floating-point values using
Documented the use of the
INLINE macro, and fixed the sources for
the case that function inlining is not supported by the C compiler.
Documented the possible need to define macro
THREAD_LOCAL to match
how the SoftFloat library was built.
Modified the provided Makefiles to allow some options to be overridden from the
Release 3a (2015 October)
Replaced the license text supplied by the University of California, Berkeley,
and fixed some minor build problems.
Release 3 (2015 February)
Complete rewrite, funded by the University of California, Berkeley, and
consequently having a different use license than earlier releases.
Visible changes included different names for testable functions and command
Reinstated separate programs for generating test cases
testfloat_ver) and verifying test results
testfloat_gen), as alternatives to the all-in-one
testfloat program (which remained supported).
Added support for testing conversions between floating-point and unsigned
integers, both 32-bit and 64-bit.
Added support for testing a fused multiply-add operation, for all testable
floating-point formats except 80-bit double-extended-precision.
Added support for testing a fifth rounding mode,
(round to nearest, with ties to maximum magnitude, away from zero).
timesoftfloat (previously found in the Berkeley SoftFloat
Release 2c (2015 January)
Fixed mistakes affecting some 64-bit processors.
Made minor updates to the documentation, including improved wording for the
legal restrictions on using TestFloat releases through 2c (not
applicable to Release 3 or later).
There was never a Release 2b.
Release 2a (1998 December)
Added support for testing conversions between floating-point and
64-bit signed integers.
Improved the Makefiles.
Release 2 (1997 June)
Integrated the generation of test cases and the checking of system results into
a single program.
(Before they were separate programs, normally joined by explicit command-line
Improved the sequence of test cases.
Added support for testing 80-bit double-extended-precision and
128-bit quadruple precision.
Made program output more readable, and added new command arguments.
Reduced dependence on the quality of the standard
for generating test cases.
(Previously naively expected
rand to be able to generate good
random bits for the entire machine word width.)
testsoftfloat, with its own simpler complete software
floating-point (“slowfloat”) for comparison purposes.
Made some changes to the source file structure, including renaming
milieu.h (to avoid confusion with
Release 1a (1996 July)
to control whether tininess should be detected before or after rounding.
Release 1 (1996 July)