aboutsummaryrefslogtreecommitdiff
path: root/doc/SoftFloat-history.html
blob: b78f65803b329c0ac2ada75b1334ad27a4dab1ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143

<HTML>

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

<BODY>

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

<P>
John R. Hauser<BR>
2014 _____<BR>
</P>

<P>
*** CONTENT DONE.
</P>


<H3>Release 3 (2014 December)</H3>

<UL>

<LI>
Complete rewrite, funded by the University of California, Berkeley.
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 wording for the legal restrictions on using SoftFloat releases
<NOBR>through 2c</NOBR>.

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

</UL>


</BODY>