<HTML> <HEAD> <TITLE>Berkeley SoftFloat History</TITLE> </HEAD> <BODY> <H1>History of Berkeley SoftFloat, to Release 3</H1> <P> John R. Hauser<BR> 2014 Dec 17<BR> </P> <H3>Release 3 (2014 December)</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 (2014 December)</H3> <UL> <LI> Further improved 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>