
<HTML>

<HEAD>
<TITLE>Berkeley SoftFloat History</TITLE>
</HEAD>

<BODY>

<H1>History of Berkeley SoftFloat, to Release 3a</H1>

<P>
John R. Hauser<BR>
2015 October 23<BR>
</P>


<H3>Release 3a (2015 October)</H3>

<UL>

<LI>
Replaced the license text supplied by the University of California, Berkeley.

</UL>


<H3>Release 3 (2015 February)</H3>

<UL>

<LI>
Complete rewrite, funded by the University of California, Berkeley, and
consequently having a different use license than earlier releases.
Major changes included renaming most types and functions, upgrading some
algorithms, restructuring the source files, and making SoftFloat into a true
library.

<LI>
Added functions to convert between floating-point and unsigned integers, both
<NOBR>32-bit</NOBR> and <NOBR>64-bit</NOBR> (<CODE>uint32_t</CODE> and
<CODE>uint64_t</CODE>).

<LI>
Added functions for fused multiply-add, for all supported floating-point
formats except <NOBR>80-bit</NOBR> double-extended-precision.

<LI>
Added support for a fifth rounding mode, <CODE>near_maxMag</CODE> (round to
nearest, with ties to maximum magnitude, away from zero).

<LI>
Dropped the <CODE>timesoftfloat</CODE> program (now part of the Berkeley
TestFloat package).

</UL>


<H3>Release 2c (2015 January)</H3>

<UL>

<LI>
Fixed mistakes affecting some <NOBR>64-bit</NOBR> processors.

<LI>
Further improved the documentation and the wording for the legal restrictions
on using SoftFloat releases <NOBR>through 2c</NOBR> (not applicable to
<NOBR>Release 3</NOBR> or later).

</UL>


<H3>Release 2b (2002 May)</H3>

<UL>

<LI>
Made minor updates to the documentation, including improved wording for the
legal restrictions on using SoftFloat.

</UL>


<H3>Release 2a (1998 December)</H3>

<UL>

<LI>
Added functions to convert between <NOBR>64-bit</NOBR> integers
(<CODE>int64</CODE>) and all supported floating-point formats.

<LI>
Fixed a bug in all <NOBR>64-bit</NOBR>-version square root functions except
<CODE>float32_sqrt</CODE> that caused the result sometimes to be off by
<NOBR>1 unit</NOBR> in the last place (<NOBR>1 ulp</NOBR>) from what it should
be.
(Bug discovered by Paul Donahue.)

<LI>
Improved the Makefiles.
</UL>


<H3>Release 2 (1997 June)</H3>

<UL>

<LI>
Created the <NOBR>64-bit</NOBR> (<CODE>bits64</CODE>) version, adding the
<CODE>floatx80</CODE> and <CODE>float128</CODE> formats.

<LI>
Changed the source directory structure, splitting the sources into a
<CODE>bits32</CODE> and a <CODE>bits64</CODE> version.
Renamed <CODE>environment.h</CODE> to <CODE>milieu.h</CODE> to avoid confusion
with environment variables.

<LI>
Fixed a small error that caused <CODE>float64_round_to_int</CODE> often to
round the wrong way in nearest/even mode when the operand was between
2<SUP>20</SUP> and 2<SUP>21</SUP> and halfway between two integers.

</UL>


<H3>Release 1a (1996 July)</H3>

<UL>

<LI>
Corrected a mistake that caused borderline underflow cases not to raise the
underflow flag when they should have.
(Problem reported by Doug Priest.)

<LI>
Added the <CODE>float_detect_tininess</CODE> variable to control whether
tininess is detected before or after rounding.

</UL>


<H3>Release 1 (1996 July)</H3>

<UL>

<LI>
Original release, based on work done for the International Computer Science
Institute (ICSI) in Berkeley, California.

</UL>


</BODY>

