| |
| <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> |
| |