1 |
|
---|
2 | <HTML>
|
---|
3 |
|
---|
4 | <HEAD>
|
---|
5 | <TITLE>Berkeley TestFloat History</TITLE>
|
---|
6 | </HEAD>
|
---|
7 |
|
---|
8 | <BODY>
|
---|
9 |
|
---|
10 | <H1>History of Berkeley TestFloat, to Release 3e</H1>
|
---|
11 |
|
---|
12 | <P>
|
---|
13 | John R. Hauser<BR>
|
---|
14 | 2018 January 20<BR>
|
---|
15 | </P>
|
---|
16 |
|
---|
17 |
|
---|
18 | <P>
|
---|
19 | Releases of Berkeley TestFloat normally parallel those of Berkeley SoftFloat,
|
---|
20 | on which TestFloat is based.
|
---|
21 | Each TestFloat release necessarily incorporates all bug fixes from the
|
---|
22 | corresponding release of SoftFloat.
|
---|
23 | </P>
|
---|
24 |
|
---|
25 |
|
---|
26 | <H3>Release 3e (2018 January)</H3>
|
---|
27 |
|
---|
28 | <UL>
|
---|
29 |
|
---|
30 | <LI>
|
---|
31 | Fixed a problem with the all-in-one <CODE>testfloat</CODE> program whereby
|
---|
32 | function set <CODE>-all1</CODE> incorrectly also tested the three-operand fused
|
---|
33 | multiply-add operations.
|
---|
34 |
|
---|
35 | <LI>
|
---|
36 | Modified the expected behavior of rounding mode <CODE>odd</CODE> (jamming) when
|
---|
37 | rounding to an integer value (either conversion to an integer format or a
|
---|
38 | ‘<CODE>roundToInt</CODE>’ function).
|
---|
39 | Previously, for those cases only, rounding mode <CODE>odd</CODE> was expected
|
---|
40 | to act the same as rounding to minimum magnitude.
|
---|
41 | Now, when rounding to an integer value, the nearest odd integer is expected,
|
---|
42 | consistent with the round-to-odd result of other operations.
|
---|
43 |
|
---|
44 | <LI>
|
---|
45 | Added options <CODE>-checkInvInts</CODE> and <CODE>-checkAll</CODE> to programs
|
---|
46 | <CODE>testfloat_ver</CODE> and <CODE>testfloat</CODE>.
|
---|
47 |
|
---|
48 | <LI>
|
---|
49 | Improved the checking of integer results of invalid operations.
|
---|
50 |
|
---|
51 | </UL>
|
---|
52 |
|
---|
53 |
|
---|
54 | <H3>Release 3d (2017 August)</H3>
|
---|
55 |
|
---|
56 | <UL>
|
---|
57 |
|
---|
58 | <LI>
|
---|
59 | When the all-in-one <CODE>testfloat</CODE> program is compiled to test the C
|
---|
60 | language’s arithmetic, added the ability to test library functions
|
---|
61 | <CODE>sqrtf</CODE>, <CODE>sqrtl</CODE>, <CODE>fmaf</CODE>, <CODE>fma</CODE>,
|
---|
62 | and <CODE>fmal</CODE>, which were added to the <NOBR>C Standard</NOBR> in 1999.
|
---|
63 |
|
---|
64 | </UL>
|
---|
65 |
|
---|
66 |
|
---|
67 | <H3>Release 3c (2017 February)</H3>
|
---|
68 |
|
---|
69 | <UL>
|
---|
70 |
|
---|
71 | <LI>
|
---|
72 | Added support for testing rounding mode <CODE>odd</CODE> (jamming).
|
---|
73 |
|
---|
74 | <LI>
|
---|
75 | Made support for testing <NOBR>64-bit</NOBR> double-precistion floating-point
|
---|
76 | be subject to macro <CODE>FLOAT64</CODE> (akin to macros <CODE>FLOAT16</CODE>,
|
---|
77 | <CODE>EXTFLOAT80</CODE>, and <CODE>FLOAT128</CODE> from before).
|
---|
78 |
|
---|
79 | <LI>
|
---|
80 | Fixed some bugs that caused compilation to fail with certain combinations of
|
---|
81 | option macro settings.
|
---|
82 |
|
---|
83 | <LI>
|
---|
84 | Corrected the types of two internal variables to be <CODE>sig_atomic_t</CODE>
|
---|
85 | instead of <CODE>bool</CODE>.
|
---|
86 |
|
---|
87 | <LI>
|
---|
88 | Improved the formatting of some error reports (concerning where lines are
|
---|
89 | broken when they exceed 79 characters in length).
|
---|
90 |
|
---|
91 | </UL>
|
---|
92 |
|
---|
93 |
|
---|
94 | <H3>Release 3b (2016 July)</H3>
|
---|
95 |
|
---|
96 | <UL>
|
---|
97 |
|
---|
98 | <LI>
|
---|
99 | Added the ability to test the common <NOBR>16-bit</NOBR>
|
---|
100 | “half-precision” floating-point format.
|
---|
101 |
|
---|
102 | <LI>
|
---|
103 | Added a <CODE>-seed</CODE> option to programs <CODE>testfloat_gen</CODE>,
|
---|
104 | <CODE>testfloat</CODE>, and <CODE>testsoftfloat</CODE> for setting the seed for
|
---|
105 | the pseudo-random number generator used to generate test cases.
|
---|
106 |
|
---|
107 | <LI>
|
---|
108 | Where a specific choice is needed for how tininess is detected on underflow,
|
---|
109 | changed the default to be the detection of tininess after rounding
|
---|
110 | (<CODE>-tininessafter</CODE>) instead of before rounding
|
---|
111 | (<CODE>-tininessbefore</CODE>).
|
---|
112 |
|
---|
113 | <LI>
|
---|
114 | Modified the format of reported discrepancies to show the signs of
|
---|
115 | floating-point values using <CODE>+</CODE> and <CODE>-</CODE> characters.
|
---|
116 |
|
---|
117 | <LI>
|
---|
118 | Documented the use of the <CODE>INLINE</CODE> macro, and fixed the sources for
|
---|
119 | the case that function inlining is not supported by the C compiler.
|
---|
120 |
|
---|
121 | <LI>
|
---|
122 | Documented the possible need to define macro <CODE>THREAD_LOCAL</CODE> to match
|
---|
123 | how the SoftFloat library was built.
|
---|
124 |
|
---|
125 | <LI>
|
---|
126 | Modified the provided Makefiles to allow some options to be overridden from the
|
---|
127 | <CODE>make</CODE> command.
|
---|
128 |
|
---|
129 | </UL>
|
---|
130 |
|
---|
131 |
|
---|
132 | <H3>Release 3a (2015 October)</H3>
|
---|
133 |
|
---|
134 | <UL>
|
---|
135 |
|
---|
136 | <LI>
|
---|
137 | Replaced the license text supplied by the University of California, Berkeley,
|
---|
138 | and fixed some minor build problems.
|
---|
139 |
|
---|
140 | </UL>
|
---|
141 |
|
---|
142 |
|
---|
143 | <H3>Release 3 (2015 February)</H3>
|
---|
144 |
|
---|
145 | <UL>
|
---|
146 |
|
---|
147 | <LI>
|
---|
148 | Complete rewrite, funded by the University of California, Berkeley, and
|
---|
149 | consequently having a different use license than earlier releases.
|
---|
150 | Visible changes included different names for testable functions and command
|
---|
151 | options.
|
---|
152 |
|
---|
153 | <LI>
|
---|
154 | Reinstated separate programs for generating test cases
|
---|
155 | (<CODE>testfloat_ver</CODE>) and verifying test results
|
---|
156 | (<CODE>testfloat_gen</CODE>), as alternatives to the all-in-one
|
---|
157 | <CODE>testfloat</CODE> program (which remained supported).
|
---|
158 |
|
---|
159 | <LI>
|
---|
160 | Added support for testing conversions between floating-point and unsigned
|
---|
161 | integers, both <NOBR>32-bit</NOBR> and <NOBR>64-bit</NOBR>.
|
---|
162 |
|
---|
163 | <LI>
|
---|
164 | Added support for testing a fused multiply-add operation, for all testable
|
---|
165 | floating-point formats except <NOBR>80-bit</NOBR> double-extended-precision.
|
---|
166 |
|
---|
167 | <LI>
|
---|
168 | Added support for testing a fifth rounding mode, <CODE>near_maxMag</CODE>
|
---|
169 | (round to nearest, with ties to maximum magnitude, away from zero).
|
---|
170 |
|
---|
171 | <LI>
|
---|
172 | Added <CODE>timesoftfloat</CODE> (previously found in the Berkeley SoftFloat
|
---|
173 | package).
|
---|
174 |
|
---|
175 | </UL>
|
---|
176 |
|
---|
177 |
|
---|
178 | <H3>Release 2c (2015 January)</H3>
|
---|
179 |
|
---|
180 | <UL>
|
---|
181 |
|
---|
182 | <LI>
|
---|
183 | Fixed mistakes affecting some <NOBR>64-bit</NOBR> processors.
|
---|
184 |
|
---|
185 | <LI>
|
---|
186 | Made minor updates to the documentation, including improved wording for the
|
---|
187 | legal restrictions on using TestFloat releases <NOBR>through 2c</NOBR> (not
|
---|
188 | applicable to <NOBR>Release 3</NOBR> or later).
|
---|
189 |
|
---|
190 | </UL>
|
---|
191 |
|
---|
192 |
|
---|
193 | <P>
|
---|
194 | There was never a <NOBR>Release 2b</NOBR>.
|
---|
195 | </P>
|
---|
196 |
|
---|
197 |
|
---|
198 | <H3>Release 2a (1998 December)</H3>
|
---|
199 |
|
---|
200 | <UL>
|
---|
201 |
|
---|
202 | <LI>
|
---|
203 | Added support for testing conversions between floating-point and
|
---|
204 | <NOBR>64-bit</NOBR> signed integers.
|
---|
205 |
|
---|
206 | <LI>
|
---|
207 | Improved the Makefiles.
|
---|
208 |
|
---|
209 | </UL>
|
---|
210 |
|
---|
211 |
|
---|
212 | <H3>Release 2 (1997 June)</H3>
|
---|
213 |
|
---|
214 | <UL>
|
---|
215 |
|
---|
216 | <LI>
|
---|
217 | Integrated the generation of test cases and the checking of system results into
|
---|
218 | a single program.
|
---|
219 | (Before they were separate programs, normally joined by explicit command-line
|
---|
220 | pipes.)
|
---|
221 |
|
---|
222 | <LI>
|
---|
223 | Improved the sequence of test cases.
|
---|
224 |
|
---|
225 | <LI>
|
---|
226 | Added support for testing <NOBR>80-bit</NOBR> double-extended-precision and
|
---|
227 | <NOBR>128-bit</NOBR> quadruple precision.
|
---|
228 |
|
---|
229 | <LI>
|
---|
230 | Made program output more readable, and added new command arguments.
|
---|
231 |
|
---|
232 | <LI>
|
---|
233 | Reduced dependence on the quality of the standard <CODE>rand</CODE> function
|
---|
234 | for generating test cases.
|
---|
235 | (Previously naively expected <CODE>rand</CODE> to be able to generate good
|
---|
236 | random bits for the entire machine word width.)
|
---|
237 |
|
---|
238 | <LI>
|
---|
239 | Created <CODE>testsoftfloat</CODE>, with its own simpler complete software
|
---|
240 | floating-point (“slowfloat”) for comparison purposes.
|
---|
241 |
|
---|
242 | <LI>
|
---|
243 | Made some changes to the source file structure, including renaming
|
---|
244 | <CODE>environment.h</CODE> to <CODE>milieu.h</CODE> (to avoid confusion with
|
---|
245 | environment variables).
|
---|
246 |
|
---|
247 | </UL>
|
---|
248 |
|
---|
249 |
|
---|
250 | <H3>Release 1a (1996 July)</H3>
|
---|
251 |
|
---|
252 | <UL>
|
---|
253 |
|
---|
254 | <LI>
|
---|
255 | Added the <CODE>-tininessbefore</CODE> and <CODE>-tininessafter</CODE> options
|
---|
256 | to control whether tininess should be detected before or after rounding.
|
---|
257 |
|
---|
258 | </UL>
|
---|
259 |
|
---|
260 |
|
---|
261 | <H3>Release 1 (1996 July)</H3>
|
---|
262 |
|
---|
263 | <UL>
|
---|
264 |
|
---|
265 | <LI>
|
---|
266 | Original release.
|
---|
267 |
|
---|
268 | </UL>
|
---|
269 |
|
---|
270 |
|
---|
271 | </BODY>
|
---|
272 |
|
---|