1 2<HTML> 3 4<HEAD> 5<TITLE>Berkeley SoftFloat History</TITLE> 6</HEAD> 7 8<BODY> 9 10<H1>History of Berkeley SoftFloat, to Release 3a</H1> 11 12<P> 13John R. Hauser<BR> 142015 October 23<BR> 15</P> 16 17 18<H3>Release 3a (2015 October)</H3> 19 20<UL> 21 22<LI> 23Replaced the license text supplied by the University of California, Berkeley. 24 25</UL> 26 27 28<H3>Release 3 (2015 February)</H3> 29 30<UL> 31 32<LI> 33Complete rewrite, funded by the University of California, Berkeley, and 34consequently having a different use license than earlier releases. 35Major changes included renaming most types and functions, upgrading some 36algorithms, restructuring the source files, and making SoftFloat into a true 37library. 38 39<LI> 40Added functions to convert between floating-point and unsigned integers, both 41<NOBR>32-bit</NOBR> and <NOBR>64-bit</NOBR> (<CODE>uint32_t</CODE> and 42<CODE>uint64_t</CODE>). 43 44<LI> 45Added functions for fused multiply-add, for all supported floating-point 46formats except <NOBR>80-bit</NOBR> double-extended-precision. 47 48<LI> 49Added support for a fifth rounding mode, <CODE>near_maxMag</CODE> (round to 50nearest, with ties to maximum magnitude, away from zero). 51 52<LI> 53Dropped the <CODE>timesoftfloat</CODE> program (now part of the Berkeley 54TestFloat package). 55 56</UL> 57 58 59<H3>Release 2c (2015 January)</H3> 60 61<UL> 62 63<LI> 64Fixed mistakes affecting some <NOBR>64-bit</NOBR> processors. 65 66<LI> 67Further improved the documentation and the wording for the legal restrictions 68on using SoftFloat releases <NOBR>through 2c</NOBR> (not applicable to 69<NOBR>Release 3</NOBR> or later). 70 71</UL> 72 73 74<H3>Release 2b (2002 May)</H3> 75 76<UL> 77 78<LI> 79Made minor updates to the documentation, including improved wording for the 80legal restrictions on using SoftFloat. 81 82</UL> 83 84 85<H3>Release 2a (1998 December)</H3> 86 87<UL> 88 89<LI> 90Added functions to convert between <NOBR>64-bit</NOBR> integers 91(<CODE>int64</CODE>) and all supported floating-point formats. 92 93<LI> 94Fixed a bug in all <NOBR>64-bit</NOBR>-version square root functions except 95<CODE>float32_sqrt</CODE> that caused the result sometimes to be off by 96<NOBR>1 unit</NOBR> in the last place (<NOBR>1 ulp</NOBR>) from what it should 97be. 98(Bug discovered by Paul Donahue.) 99 100<LI> 101Improved the Makefiles. 102</UL> 103 104 105<H3>Release 2 (1997 June)</H3> 106 107<UL> 108 109<LI> 110Created the <NOBR>64-bit</NOBR> (<CODE>bits64</CODE>) version, adding the 111<CODE>floatx80</CODE> and <CODE>float128</CODE> formats. 112 113<LI> 114Changed the source directory structure, splitting the sources into a 115<CODE>bits32</CODE> and a <CODE>bits64</CODE> version. 116Renamed <CODE>environment.h</CODE> to <CODE>milieu.h</CODE> to avoid confusion 117with environment variables. 118 119<LI> 120Fixed a small error that caused <CODE>float64_round_to_int</CODE> often to 121round the wrong way in nearest/even mode when the operand was between 1222<SUP>20</SUP> and 2<SUP>21</SUP> and halfway between two integers. 123 124</UL> 125 126 127<H3>Release 1a (1996 July)</H3> 128 129<UL> 130 131<LI> 132Corrected a mistake that caused borderline underflow cases not to raise the 133underflow flag when they should have. 134(Problem reported by Doug Priest.) 135 136<LI> 137Added the <CODE>float_detect_tininess</CODE> variable to control whether 138tininess is detected before or after rounding. 139 140</UL> 141 142 143<H3>Release 1 (1996 July)</H3> 144 145<UL> 146 147<LI> 148Original release, based on work done for the International Computer Science 149Institute (ICSI) in Berkeley, California. 150 151</UL> 152 153 154</BODY> 155 156