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