blob: 41830a7a17824aa974de5618a70b9e70a8b23056 [file] [log] [blame]
Raymond Hettinger7c85fa42004-07-01 11:01:35 +00001------------------------------------------------------------------------
2-- rescale.decTest -- decimal rescale operation --
3-- Copyright (c) IBM Corporation, 1981, 2003. All rights reserved. --
4------------------------------------------------------------------------
5-- Please see the document "General Decimal Arithmetic Testcases" --
6-- at http://www2.hursley.ibm.com/decimal for the description of --
7-- these testcases. --
8-- --
9-- These testcases are experimental ('beta' versions), and they --
10-- may contain errors. They are offered on an as-is basis. In --
11-- particular, achieving the same results as the tests here is not --
12-- a guarantee that an implementation complies with any Standard --
13-- or specification. The tests are not exhaustive. --
14-- --
15-- Please send comments, suggestions, and corrections to the author: --
16-- Mike Cowlishaw, IBM Fellow --
17-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
18-- mfc@uk.ibm.com --
19------------------------------------------------------------------------
20version: 2.35
21
22-- [obsolete] Quantize.decTest has the improved version
23
24extended: 1
25precision: 9
26rounding: half_up
27maxExponent: 999
28minexponent: -999
29
30-- sanity checks
31
32resx001 rescale 0 0 -> 0
33resx002 rescale 1 0 -> 1
34resx003 rescale 0.1 +2 -> 0E+2 Inexact Rounded
35resx005 rescale 0.1 +1 -> 0E+1 Inexact Rounded
36resx006 rescale 0.1 0 -> 0 Inexact Rounded
37resx007 rescale 0.1 -1 -> 0.1
38resx008 rescale 0.1 -2 -> 0.10
39resx009 rescale 0.1 -3 -> 0.100
40resx010 rescale 0.9 +2 -> 0E+2 Inexact Rounded
41resx011 rescale 0.9 +1 -> 0E+1 Inexact Rounded
42resx012 rescale 0.9 +0 -> 1 Inexact Rounded
43resx013 rescale 0.9 -1 -> 0.9
44resx014 rescale 0.9 -2 -> 0.90
45resx015 rescale 0.9 -3 -> 0.900
46-- negatives
47resx021 rescale -0 0 -> -0
48resx022 rescale -1 0 -> -1
49resx023 rescale -0.1 +2 -> -0E+2 Inexact Rounded
50resx025 rescale -0.1 +1 -> -0E+1 Inexact Rounded
51resx026 rescale -0.1 0 -> -0 Inexact Rounded
52resx027 rescale -0.1 -1 -> -0.1
53resx028 rescale -0.1 -2 -> -0.10
54resx029 rescale -0.1 -3 -> -0.100
55resx030 rescale -0.9 +2 -> -0E+2 Inexact Rounded
56resx031 rescale -0.9 +1 -> -0E+1 Inexact Rounded
57resx032 rescale -0.9 +0 -> -1 Inexact Rounded
58resx033 rescale -0.9 -1 -> -0.9
59resx034 rescale -0.9 -2 -> -0.90
60resx035 rescale -0.9 -3 -> -0.900
61resx036 rescale -0.5 +2 -> -0E+2 Inexact Rounded
62resx037 rescale -0.5 +1 -> -0E+1 Inexact Rounded
63resx038 rescale -0.5 +0 -> -1 Inexact Rounded
64resx039 rescale -0.5 -1 -> -0.5
65resx040 rescale -0.5 -2 -> -0.50
66resx041 rescale -0.5 -3 -> -0.500
67resx042 rescale -0.9 +2 -> -0E+2 Inexact Rounded
68resx043 rescale -0.9 +1 -> -0E+1 Inexact Rounded
69resx044 rescale -0.9 +0 -> -1 Inexact Rounded
70resx045 rescale -0.9 -1 -> -0.9
71resx046 rescale -0.9 -2 -> -0.90
72resx047 rescale -0.9 -3 -> -0.900
73
74-- examples from Specification
75resx060 rescale 2.17 -3 -> 2.170
76resx061 rescale 2.17 -2 -> 2.17
77resx062 rescale 2.17 -1 -> 2.2 Inexact Rounded
78resx063 rescale 2.17 0 -> 2 Inexact Rounded
79resx064 rescale 2.17 +1 -> 0E+1 Inexact Rounded
80resx065 rescale 2 Inf -> NaN Invalid_operation
81resx066 rescale -0.1 0 -> -0 Inexact Rounded
82resx067 rescale -0 5 -> -0E+5
83resx068 rescale +35236450.6 -2 -> NaN Invalid_operation
84resx069 rescale -35236450.6 -2 -> NaN Invalid_operation
85resx070 rescale 217 -1 -> 217.0
86resx071 rescale 217 0 -> 217
87resx072 rescale 217 +1 -> 2.2E+2 Inexact Rounded
88resx073 rescale 217 +2 -> 2E+2 Inexact Rounded
89
90-- general tests ..
91resx089 rescale 12 +4 -> 0E+4 Inexact Rounded
92resx090 rescale 12 +3 -> 0E+3 Inexact Rounded
93resx091 rescale 12 +2 -> 0E+2 Inexact Rounded
94resx092 rescale 12 +1 -> 1E+1 Inexact Rounded
95resx093 rescale 1.2345 -2 -> 1.23 Inexact Rounded
96resx094 rescale 1.2355 -2 -> 1.24 Inexact Rounded
97resx095 rescale 1.2345 -6 -> 1.234500
98resx096 rescale 9.9999 -2 -> 10.00 Inexact Rounded
99resx097 rescale 0.0001 -2 -> 0.00 Inexact Rounded
100resx098 rescale 0.001 -2 -> 0.00 Inexact Rounded
101resx099 rescale 0.009 -2 -> 0.01 Inexact Rounded
102resx100 rescale 92 +2 -> 1E+2 Inexact Rounded
103
104resx101 rescale -1 0 -> -1
105resx102 rescale -1 -1 -> -1.0
106resx103 rescale -1 -2 -> -1.00
107resx104 rescale 0 0 -> 0
108resx105 rescale 0 -1 -> 0.0
109resx106 rescale 0 -2 -> 0.00
110resx107 rescale 0.00 0 -> 0
111resx108 rescale 0 +1 -> 0E+1
112resx109 rescale 0 +2 -> 0E+2
113resx110 rescale +1 0 -> 1
114resx111 rescale +1 -1 -> 1.0
115resx112 rescale +1 -2 -> 1.00
116
117resx120 rescale 1.04 -3 -> 1.040
118resx121 rescale 1.04 -2 -> 1.04
119resx122 rescale 1.04 -1 -> 1.0 Inexact Rounded
120resx123 rescale 1.04 0 -> 1 Inexact Rounded
121resx124 rescale 1.05 -3 -> 1.050
122resx125 rescale 1.05 -2 -> 1.05
123resx126 rescale 1.05 -1 -> 1.1 Inexact Rounded
124resx127 rescale 1.05 0 -> 1 Inexact Rounded
125resx128 rescale 1.05 -3 -> 1.050
126resx129 rescale 1.05 -2 -> 1.05
127resx130 rescale 1.05 -1 -> 1.1 Inexact Rounded
128resx131 rescale 1.05 0 -> 1 Inexact Rounded
129resx132 rescale 1.06 -3 -> 1.060
130resx133 rescale 1.06 -2 -> 1.06
131resx134 rescale 1.06 -1 -> 1.1 Inexact Rounded
132resx135 rescale 1.06 0 -> 1 Inexact Rounded
133
134resx140 rescale -10 -2 -> -10.00
135resx141 rescale +1 -2 -> 1.00
136resx142 rescale +10 -2 -> 10.00
137resx143 rescale 1E+10 -2 -> NaN Invalid_operation
138resx144 rescale 1E-10 -2 -> 0.00 Inexact Rounded
139resx145 rescale 1E-3 -2 -> 0.00 Inexact Rounded
140resx146 rescale 1E-2 -2 -> 0.01
141resx147 rescale 1E-1 -2 -> 0.10
142resx148 rescale 0E-10 -2 -> 0.00
143
144resx150 rescale 1.0600 -5 -> 1.06000
145resx151 rescale 1.0600 -4 -> 1.0600
146resx152 rescale 1.0600 -3 -> 1.060 Rounded
147resx153 rescale 1.0600 -2 -> 1.06 Rounded
148resx154 rescale 1.0600 -1 -> 1.1 Inexact Rounded
149resx155 rescale 1.0600 0 -> 1 Inexact Rounded
150
151-- +ve exponents ..
152resx201 rescale -1 +0 -> -1
153resx202 rescale -1 +1 -> -0E+1 Inexact Rounded
154resx203 rescale -1 +2 -> -0E+2 Inexact Rounded
155resx204 rescale 0 +0 -> 0
156resx205 rescale 0 +1 -> 0E+1
157resx206 rescale 0 +2 -> 0E+2
158resx207 rescale +1 +0 -> 1
159resx208 rescale +1 +1 -> 0E+1 Inexact Rounded
160resx209 rescale +1 +2 -> 0E+2 Inexact Rounded
161
162resx220 rescale 1.04 +3 -> 0E+3 Inexact Rounded
163resx221 rescale 1.04 +2 -> 0E+2 Inexact Rounded
164resx222 rescale 1.04 +1 -> 0E+1 Inexact Rounded
165resx223 rescale 1.04 +0 -> 1 Inexact Rounded
166resx224 rescale 1.05 +3 -> 0E+3 Inexact Rounded
167resx225 rescale 1.05 +2 -> 0E+2 Inexact Rounded
168resx226 rescale 1.05 +1 -> 0E+1 Inexact Rounded
169resx227 rescale 1.05 +0 -> 1 Inexact Rounded
170resx228 rescale 1.05 +3 -> 0E+3 Inexact Rounded
171resx229 rescale 1.05 +2 -> 0E+2 Inexact Rounded
172resx230 rescale 1.05 +1 -> 0E+1 Inexact Rounded
173resx231 rescale 1.05 +0 -> 1 Inexact Rounded
174resx232 rescale 1.06 +3 -> 0E+3 Inexact Rounded
175resx233 rescale 1.06 +2 -> 0E+2 Inexact Rounded
176resx234 rescale 1.06 +1 -> 0E+1 Inexact Rounded
177resx235 rescale 1.06 +0 -> 1 Inexact Rounded
178
179resx240 rescale -10 +1 -> -1E+1 Rounded
180resx241 rescale +1 +1 -> 0E+1 Inexact Rounded
181resx242 rescale +10 +1 -> 1E+1 Rounded
182resx243 rescale 1E+1 +1 -> 1E+1 -- underneath this is E+1
183resx244 rescale 1E+2 +1 -> 1.0E+2 -- underneath this is E+1
184resx245 rescale 1E+3 +1 -> 1.00E+3 -- underneath this is E+1
185resx246 rescale 1E+4 +1 -> 1.000E+4 -- underneath this is E+1
186resx247 rescale 1E+5 +1 -> 1.0000E+5 -- underneath this is E+1
187resx248 rescale 1E+6 +1 -> 1.00000E+6 -- underneath this is E+1
188resx249 rescale 1E+7 +1 -> 1.000000E+7 -- underneath this is E+1
189resx250 rescale 1E+8 +1 -> 1.0000000E+8 -- underneath this is E+1
190resx251 rescale 1E+9 +1 -> 1.00000000E+9 -- underneath this is E+1
191-- next one tries to add 9 zeros
192resx252 rescale 1E+10 +1 -> NaN Invalid_operation
193resx253 rescale 1E-10 +1 -> 0E+1 Inexact Rounded
194resx254 rescale 1E-2 +1 -> 0E+1 Inexact Rounded
195resx255 rescale 0E-10 +1 -> 0E+1
196resx256 rescale -0E-10 +1 -> -0E+1
197resx257 rescale -0E-1 +1 -> -0E+1
198resx258 rescale -0 +1 -> -0E+1
199resx259 rescale -0E+1 +1 -> -0E+1
200
201resx260 rescale -10 +2 -> -0E+2 Inexact Rounded
202resx261 rescale +1 +2 -> 0E+2 Inexact Rounded
203resx262 rescale +10 +2 -> 0E+2 Inexact Rounded
204resx263 rescale 1E+1 +2 -> 0E+2 Inexact Rounded
205resx264 rescale 1E+2 +2 -> 1E+2
206resx265 rescale 1E+3 +2 -> 1.0E+3
207resx266 rescale 1E+4 +2 -> 1.00E+4
208resx267 rescale 1E+5 +2 -> 1.000E+5
209resx268 rescale 1E+6 +2 -> 1.0000E+6
210resx269 rescale 1E+7 +2 -> 1.00000E+7
211resx270 rescale 1E+8 +2 -> 1.000000E+8
212resx271 rescale 1E+9 +2 -> 1.0000000E+9
213resx272 rescale 1E+10 +2 -> 1.00000000E+10
214resx273 rescale 1E-10 +2 -> 0E+2 Inexact Rounded
215resx274 rescale 1E-2 +2 -> 0E+2 Inexact Rounded
216resx275 rescale 0E-10 +2 -> 0E+2
217
218resx280 rescale -10 +3 -> -0E+3 Inexact Rounded
219resx281 rescale +1 +3 -> 0E+3 Inexact Rounded
220resx282 rescale +10 +3 -> 0E+3 Inexact Rounded
221resx283 rescale 1E+1 +3 -> 0E+3 Inexact Rounded
222resx284 rescale 1E+2 +3 -> 0E+3 Inexact Rounded
223resx285 rescale 1E+3 +3 -> 1E+3
224resx286 rescale 1E+4 +3 -> 1.0E+4
225resx287 rescale 1E+5 +3 -> 1.00E+5
226resx288 rescale 1E+6 +3 -> 1.000E+6
227resx289 rescale 1E+7 +3 -> 1.0000E+7
228resx290 rescale 1E+8 +3 -> 1.00000E+8
229resx291 rescale 1E+9 +3 -> 1.000000E+9
230resx292 rescale 1E+10 +3 -> 1.0000000E+10
231resx293 rescale 1E-10 +3 -> 0E+3 Inexact Rounded
232resx294 rescale 1E-2 +3 -> 0E+3 Inexact Rounded
233resx295 rescale 0E-10 +3 -> 0E+3
234
235-- round up from below [sign wrong in JIT compiler once]
236resx300 rescale 0.0078 -5 -> 0.00780
237resx301 rescale 0.0078 -4 -> 0.0078
238resx302 rescale 0.0078 -3 -> 0.008 Inexact Rounded
239resx303 rescale 0.0078 -2 -> 0.01 Inexact Rounded
240resx304 rescale 0.0078 -1 -> 0.0 Inexact Rounded
241resx305 rescale 0.0078 0 -> 0 Inexact Rounded
242resx306 rescale 0.0078 +1 -> 0E+1 Inexact Rounded
243resx307 rescale 0.0078 +2 -> 0E+2 Inexact Rounded
244
245resx310 rescale -0.0078 -5 -> -0.00780
246resx311 rescale -0.0078 -4 -> -0.0078
247resx312 rescale -0.0078 -3 -> -0.008 Inexact Rounded
248resx313 rescale -0.0078 -2 -> -0.01 Inexact Rounded
249resx314 rescale -0.0078 -1 -> -0.0 Inexact Rounded
250resx315 rescale -0.0078 0 -> -0 Inexact Rounded
251resx316 rescale -0.0078 +1 -> -0E+1 Inexact Rounded
252resx317 rescale -0.0078 +2 -> -0E+2 Inexact Rounded
253
254resx320 rescale 0.078 -5 -> 0.07800
255resx321 rescale 0.078 -4 -> 0.0780
256resx322 rescale 0.078 -3 -> 0.078
257resx323 rescale 0.078 -2 -> 0.08 Inexact Rounded
258resx324 rescale 0.078 -1 -> 0.1 Inexact Rounded
259resx325 rescale 0.078 0 -> 0 Inexact Rounded
260resx326 rescale 0.078 +1 -> 0E+1 Inexact Rounded
261resx327 rescale 0.078 +2 -> 0E+2 Inexact Rounded
262
263resx330 rescale -0.078 -5 -> -0.07800
264resx331 rescale -0.078 -4 -> -0.0780
265resx332 rescale -0.078 -3 -> -0.078
266resx333 rescale -0.078 -2 -> -0.08 Inexact Rounded
267resx334 rescale -0.078 -1 -> -0.1 Inexact Rounded
268resx335 rescale -0.078 0 -> -0 Inexact Rounded
269resx336 rescale -0.078 +1 -> -0E+1 Inexact Rounded
270resx337 rescale -0.078 +2 -> -0E+2 Inexact Rounded
271
272resx340 rescale 0.78 -5 -> 0.78000
273resx341 rescale 0.78 -4 -> 0.7800
274resx342 rescale 0.78 -3 -> 0.780
275resx343 rescale 0.78 -2 -> 0.78
276resx344 rescale 0.78 -1 -> 0.8 Inexact Rounded
277resx345 rescale 0.78 0 -> 1 Inexact Rounded
278resx346 rescale 0.78 +1 -> 0E+1 Inexact Rounded
279resx347 rescale 0.78 +2 -> 0E+2 Inexact Rounded
280
281resx350 rescale -0.78 -5 -> -0.78000
282resx351 rescale -0.78 -4 -> -0.7800
283resx352 rescale -0.78 -3 -> -0.780
284resx353 rescale -0.78 -2 -> -0.78
285resx354 rescale -0.78 -1 -> -0.8 Inexact Rounded
286resx355 rescale -0.78 0 -> -1 Inexact Rounded
287resx356 rescale -0.78 +1 -> -0E+1 Inexact Rounded
288resx357 rescale -0.78 +2 -> -0E+2 Inexact Rounded
289
290resx360 rescale 7.8 -5 -> 7.80000
291resx361 rescale 7.8 -4 -> 7.8000
292resx362 rescale 7.8 -3 -> 7.800
293resx363 rescale 7.8 -2 -> 7.80
294resx364 rescale 7.8 -1 -> 7.8
295resx365 rescale 7.8 0 -> 8 Inexact Rounded
296resx366 rescale 7.8 +1 -> 1E+1 Inexact Rounded
297resx367 rescale 7.8 +2 -> 0E+2 Inexact Rounded
298resx368 rescale 7.8 +3 -> 0E+3 Inexact Rounded
299
300resx370 rescale -7.8 -5 -> -7.80000
301resx371 rescale -7.8 -4 -> -7.8000
302resx372 rescale -7.8 -3 -> -7.800
303resx373 rescale -7.8 -2 -> -7.80
304resx374 rescale -7.8 -1 -> -7.8
305resx375 rescale -7.8 0 -> -8 Inexact Rounded
306resx376 rescale -7.8 +1 -> -1E+1 Inexact Rounded
307resx377 rescale -7.8 +2 -> -0E+2 Inexact Rounded
308resx378 rescale -7.8 +3 -> -0E+3 Inexact Rounded
309
310-- some individuals
311precision: 9
312resx380 rescale 352364.506 -2 -> 352364.51 Inexact Rounded
313resx381 rescale 3523645.06 -2 -> 3523645.06
314resx382 rescale 35236450.6 -2 -> NaN Invalid_operation
315resx383 rescale 352364506 -2 -> NaN Invalid_operation
316resx384 rescale -352364.506 -2 -> -352364.51 Inexact Rounded
317resx385 rescale -3523645.06 -2 -> -3523645.06
318resx386 rescale -35236450.6 -2 -> NaN Invalid_operation
319resx387 rescale -352364506 -2 -> NaN Invalid_operation
320
321rounding: down
322resx389 rescale 35236450.6 -2 -> NaN Invalid_operation
323-- ? should that one instead have been:
324-- resx389 rescale 35236450.6 -2 -> NaN Invalid_operation
325rounding: half_up
326
327-- and a few more from e-mail discussions
328precision: 7
329resx391 rescale 12.34567 -3 -> 12.346 Inexact Rounded
330resx392 rescale 123.4567 -3 -> 123.457 Inexact Rounded
331resx393 rescale 1234.567 -3 -> 1234.567
332resx394 rescale 12345.67 -3 -> NaN Invalid_operation
333resx395 rescale 123456.7 -3 -> NaN Invalid_operation
334resx396 rescale 1234567. -3 -> NaN Invalid_operation
335
336-- some 9999 round-up cases
337precision: 9
338resx400 rescale 9.999 -5 -> 9.99900
339resx401 rescale 9.999 -4 -> 9.9990
340resx402 rescale 9.999 -3 -> 9.999
341resx403 rescale 9.999 -2 -> 10.00 Inexact Rounded
342resx404 rescale 9.999 -1 -> 10.0 Inexact Rounded
343resx405 rescale 9.999 0 -> 10 Inexact Rounded
344resx406 rescale 9.999 1 -> 1E+1 Inexact Rounded
345resx407 rescale 9.999 2 -> 0E+2 Inexact Rounded
346
347resx410 rescale 0.999 -5 -> 0.99900
348resx411 rescale 0.999 -4 -> 0.9990
349resx412 rescale 0.999 -3 -> 0.999
350resx413 rescale 0.999 -2 -> 1.00 Inexact Rounded
351resx414 rescale 0.999 -1 -> 1.0 Inexact Rounded
352resx415 rescale 0.999 0 -> 1 Inexact Rounded
353resx416 rescale 0.999 1 -> 0E+1 Inexact Rounded
354
355resx420 rescale 0.0999 -5 -> 0.09990
356resx421 rescale 0.0999 -4 -> 0.0999
357resx422 rescale 0.0999 -3 -> 0.100 Inexact Rounded
358resx423 rescale 0.0999 -2 -> 0.10 Inexact Rounded
359resx424 rescale 0.0999 -1 -> 0.1 Inexact Rounded
360resx425 rescale 0.0999 0 -> 0 Inexact Rounded
361resx426 rescale 0.0999 1 -> 0E+1 Inexact Rounded
362
363resx430 rescale 0.00999 -5 -> 0.00999
364resx431 rescale 0.00999 -4 -> 0.0100 Inexact Rounded
365resx432 rescale 0.00999 -3 -> 0.010 Inexact Rounded
366resx433 rescale 0.00999 -2 -> 0.01 Inexact Rounded
367resx434 rescale 0.00999 -1 -> 0.0 Inexact Rounded
368resx435 rescale 0.00999 0 -> 0 Inexact Rounded
369resx436 rescale 0.00999 1 -> 0E+1 Inexact Rounded
370
371resx440 rescale 0.000999 -5 -> 0.00100 Inexact Rounded
372resx441 rescale 0.000999 -4 -> 0.0010 Inexact Rounded
373resx442 rescale 0.000999 -3 -> 0.001 Inexact Rounded
374resx443 rescale 0.000999 -2 -> 0.00 Inexact Rounded
375resx444 rescale 0.000999 -1 -> 0.0 Inexact Rounded
376resx445 rescale 0.000999 0 -> 0 Inexact Rounded
377resx446 rescale 0.000999 1 -> 0E+1 Inexact Rounded
378
379precision: 8
380resx449 rescale 9.999E-15 -23 -> NaN Invalid_operation
381resx450 rescale 9.999E-15 -22 -> 9.9990000E-15
382resx451 rescale 9.999E-15 -21 -> 9.999000E-15
383resx452 rescale 9.999E-15 -20 -> 9.99900E-15
384resx453 rescale 9.999E-15 -19 -> 9.9990E-15
385resx454 rescale 9.999E-15 -18 -> 9.999E-15
386resx455 rescale 9.999E-15 -17 -> 1.000E-14 Inexact Rounded
387resx456 rescale 9.999E-15 -16 -> 1.00E-14 Inexact Rounded
388resx457 rescale 9.999E-15 -15 -> 1.0E-14 Inexact Rounded
389resx458 rescale 9.999E-15 -14 -> 1E-14 Inexact Rounded
390resx459 rescale 9.999E-15 -13 -> 0E-13 Inexact Rounded
391resx460 rescale 9.999E-15 -12 -> 0E-12 Inexact Rounded
392resx461 rescale 9.999E-15 -11 -> 0E-11 Inexact Rounded
393resx462 rescale 9.999E-15 -10 -> 0E-10 Inexact Rounded
394resx463 rescale 9.999E-15 -9 -> 0E-9 Inexact Rounded
395resx464 rescale 9.999E-15 -8 -> 0E-8 Inexact Rounded
396resx465 rescale 9.999E-15 -7 -> 0E-7 Inexact Rounded
397resx466 rescale 9.999E-15 -6 -> 0.000000 Inexact Rounded
398resx467 rescale 9.999E-15 -5 -> 0.00000 Inexact Rounded
399resx468 rescale 9.999E-15 -4 -> 0.0000 Inexact Rounded
400resx469 rescale 9.999E-15 -3 -> 0.000 Inexact Rounded
401resx470 rescale 9.999E-15 -2 -> 0.00 Inexact Rounded
402resx471 rescale 9.999E-15 -1 -> 0.0 Inexact Rounded
403resx472 rescale 9.999E-15 0 -> 0 Inexact Rounded
404resx473 rescale 9.999E-15 1 -> 0E+1 Inexact Rounded
405
406-- long operand checks [rhs checks removed]
407maxexponent: 999
408minexponent: -999
409precision: 9
410resx481 rescale 12345678000 +3 -> 1.2345678E+10 Rounded
411resx482 rescale 1234567800 +1 -> 1.23456780E+9 Rounded
412resx483 rescale 1234567890 +1 -> 1.23456789E+9 Rounded
413resx484 rescale 1234567891 +1 -> 1.23456789E+9 Inexact Rounded
414resx485 rescale 12345678901 +2 -> 1.23456789E+10 Inexact Rounded
415resx486 rescale 1234567896 +1 -> 1.23456790E+9 Inexact Rounded
416-- a potential double-round
417resx487 rescale 1234.987643 -4 -> 1234.9876 Inexact Rounded
418resx488 rescale 1234.987647 -4 -> 1234.9876 Inexact Rounded
419
420precision: 15
421resx491 rescale 12345678000 +3 -> 1.2345678E+10 Rounded
422resx492 rescale 1234567800 +1 -> 1.23456780E+9 Rounded
423resx493 rescale 1234567890 +1 -> 1.23456789E+9 Rounded
424resx494 rescale 1234567891 +1 -> 1.23456789E+9 Inexact Rounded
425resx495 rescale 12345678901 +2 -> 1.23456789E+10 Inexact Rounded
426resx496 rescale 1234567896 +1 -> 1.23456790E+9 Inexact Rounded
427resx497 rescale 1234.987643 -4 -> 1234.9876 Inexact Rounded
428resx498 rescale 1234.987647 -4 -> 1234.9876 Inexact Rounded
429
430-- Zeros
431resx500 rescale 0 1 -> 0E+1
432resx501 rescale 0 0 -> 0
433resx502 rescale 0 -1 -> 0.0
434resx503 rescale 0.0 -1 -> 0.0
435resx504 rescale 0.0 0 -> 0
436resx505 rescale 0.0 +1 -> 0E+1
437resx506 rescale 0E+1 -1 -> 0.0
438resx507 rescale 0E+1 0 -> 0
439resx508 rescale 0E+1 +1 -> 0E+1
440resx509 rescale -0 1 -> -0E+1
441resx510 rescale -0 0 -> -0
442resx511 rescale -0 -1 -> -0.0
443resx512 rescale -0.0 -1 -> -0.0
444resx513 rescale -0.0 0 -> -0
445resx514 rescale -0.0 +1 -> -0E+1
446resx515 rescale -0E+1 -1 -> -0.0
447resx516 rescale -0E+1 0 -> -0
448resx517 rescale -0E+1 +1 -> -0E+1
449
450-- Suspicious RHS values
451maxexponent: 999999999
452minexponent: -999999999
453precision: 15
454resx520 rescale 1.234 999999E+3 -> 0E+999999000 Inexact Rounded
455resx521 rescale 123.456 999999E+3 -> 0E+999999000 Inexact Rounded
456resx522 rescale 1.234 999999999 -> 0E+999999999 Inexact Rounded
457resx523 rescale 123.456 999999999 -> 0E+999999999 Inexact Rounded
458resx524 rescale 123.456 1000000000 -> NaN Invalid_operation
459resx525 rescale 123.456 12345678903 -> NaN Invalid_operation
460-- next four are "won't fit" overflows
461resx526 rescale 1.234 -999999E+3 -> NaN Invalid_operation
462resx527 rescale 123.456 -999999E+3 -> NaN Invalid_operation
463resx528 rescale 1.234 -999999999 -> NaN Invalid_operation
464resx529 rescale 123.456 -999999999 -> NaN Invalid_operation
465resx530 rescale 123.456 -1000000014 -> NaN Invalid_operation
466resx531 rescale 123.456 -12345678903 -> NaN Invalid_operation
467
468maxexponent: 999
469minexponent: -999
470precision: 15
471resx532 rescale 1.234E+999 999 -> 1E+999 Inexact Rounded
472resx533 rescale 1.234E+998 999 -> 0E+999 Inexact Rounded
473resx534 rescale 1.234 999 -> 0E+999 Inexact Rounded
474resx535 rescale 1.234 1000 -> NaN Invalid_operation
475resx536 rescale 1.234 5000 -> NaN Invalid_operation
476resx537 rescale 0 -999 -> 0E-999
477-- next two are "won't fit" overflows
478resx538 rescale 1.234 -999 -> NaN Invalid_operation
479resx539 rescale 1.234 -1000 -> NaN Invalid_operation
480resx540 rescale 1.234 -5000 -> NaN Invalid_operation
481-- [more below]
482
483-- check bounds (lhs maybe out of range for destination, etc.)
484precision: 7
485resx541 rescale 1E+999 +999 -> 1E+999
486resx542 rescale 1E+1000 +999 -> NaN Invalid_operation
487resx543 rescale 1E+999 +1000 -> NaN Invalid_operation
488resx544 rescale 1E-999 -999 -> 1E-999
489resx545 rescale 1E-1000 -999 -> 0E-999 Inexact Rounded
490resx546 rescale 1E-999 -1000 -> 1.0E-999
491resx547 rescale 1E-1005 -999 -> 0E-999 Inexact Rounded
492resx548 rescale 1E-1006 -999 -> 0E-999 Inexact Rounded
493resx549 rescale 1E-1007 -999 -> 0E-999 Inexact Rounded
494resx550 rescale 1E-998 -1005 -> NaN Invalid_operation -- won't fit
495resx551 rescale 1E-999 -1005 -> 1.000000E-999
496resx552 rescale 1E-1000 -1005 -> 1.00000E-1000 Subnormal
497resx553 rescale 1E-999 -1006 -> NaN Invalid_operation
498resx554 rescale 1E-999 -1007 -> NaN Invalid_operation
499-- related subnormal rounding
500resx555 rescale 1.666666E-999 -1005 -> 1.666666E-999
501resx556 rescale 1.666666E-1000 -1005 -> 1.66667E-1000 Underflow Subnormal Inexact Rounded
502resx557 rescale 1.666666E-1001 -1005 -> 1.6667E-1001 Underflow Subnormal Inexact Rounded
503resx558 rescale 1.666666E-1002 -1005 -> 1.667E-1002 Underflow Subnormal Inexact Rounded
504resx559 rescale 1.666666E-1003 -1005 -> 1.67E-1003 Underflow Subnormal Inexact Rounded
505resx560 rescale 1.666666E-1004 -1005 -> 1.7E-1004 Underflow Subnormal Inexact Rounded
506resx561 rescale 1.666666E-1005 -1005 -> 2E-1005 Underflow Subnormal Inexact Rounded
507resx562 rescale 1.666666E-1006 -1005 -> 0E-1005 Inexact Rounded
508resx563 rescale 1.666666E-1007 -1005 -> 0E-1005 Inexact Rounded
509
510-- fractional RHS, some good and some bad
511precision: 9
512resx564 rescale 222 +2.0 -> 2E+2 Inexact Rounded
513resx565 rescale 222 +2.00000000 -> 2E+2 Inexact Rounded
514resx566 rescale 222 +2.00100000000 -> NaN Invalid_operation
515resx567 rescale 222 +2.000001 -> NaN Invalid_operation
516resx568 rescale 222 +2.000000001 -> NaN Invalid_operation
517resx569 rescale 222 +2.0000000001 -> NaN Invalid_operation
518resx570 rescale 222 +2.00000000001 -> NaN Invalid_operation
519resx571 rescale 222 +2.99999999999 -> NaN Invalid_operation
520resx572 rescale 222 -2.00000000 -> 222.00
521resx573 rescale 222 -2.00100000000 -> NaN Invalid_operation
522resx574 rescale 222 -2.0000001000 -> NaN Invalid_operation
523resx575 rescale 222 -2.00000000001 -> NaN Invalid_operation
524resx576 rescale 222 -2.99999999999 -> NaN Invalid_operation
525
526-- Specials
527resx580 rescale Inf -Inf -> Infinity
528resx581 rescale Inf -1000 -> NaN Invalid_operation
529resx582 rescale Inf -1 -> NaN Invalid_operation
530resx583 rescale Inf 0 -> NaN Invalid_operation
531resx584 rescale Inf 1 -> NaN Invalid_operation
532resx585 rescale Inf 1000 -> NaN Invalid_operation
533resx586 rescale Inf Inf -> Infinity
534resx587 rescale -1000 Inf -> NaN Invalid_operation
535resx588 rescale -Inf Inf -> -Infinity
536resx589 rescale -1 Inf -> NaN Invalid_operation
537resx590 rescale 0 Inf -> NaN Invalid_operation
538resx591 rescale 1 Inf -> NaN Invalid_operation
539resx592 rescale 1000 Inf -> NaN Invalid_operation
540resx593 rescale Inf Inf -> Infinity
541resx594 rescale Inf -0 -> NaN Invalid_operation
542resx595 rescale -0 Inf -> NaN Invalid_operation
543
544resx600 rescale -Inf -Inf -> -Infinity
545resx601 rescale -Inf -1000 -> NaN Invalid_operation
546resx602 rescale -Inf -1 -> NaN Invalid_operation
547resx603 rescale -Inf 0 -> NaN Invalid_operation
548resx604 rescale -Inf 1 -> NaN Invalid_operation
549resx605 rescale -Inf 1000 -> NaN Invalid_operation
550resx606 rescale -Inf Inf -> -Infinity
551resx607 rescale -1000 Inf -> NaN Invalid_operation
552resx608 rescale -Inf -Inf -> -Infinity
553resx609 rescale -1 -Inf -> NaN Invalid_operation
554resx610 rescale 0 -Inf -> NaN Invalid_operation
555resx611 rescale 1 -Inf -> NaN Invalid_operation
556resx612 rescale 1000 -Inf -> NaN Invalid_operation
557resx613 rescale Inf -Inf -> Infinity
558resx614 rescale -Inf -0 -> NaN Invalid_operation
559resx615 rescale -0 -Inf -> NaN Invalid_operation
560
561resx621 rescale NaN -Inf -> NaN
562resx622 rescale NaN -1000 -> NaN
563resx623 rescale NaN -1 -> NaN
564resx624 rescale NaN 0 -> NaN
565resx625 rescale NaN 1 -> NaN
566resx626 rescale NaN 1000 -> NaN
567resx627 rescale NaN Inf -> NaN
568resx628 rescale NaN NaN -> NaN
569resx629 rescale -Inf NaN -> NaN
570resx630 rescale -1000 NaN -> NaN
571resx631 rescale -1 NaN -> NaN
572resx632 rescale 0 NaN -> NaN
573resx633 rescale 1 -NaN -> -NaN
574resx634 rescale 1000 NaN -> NaN
575resx635 rescale Inf NaN -> NaN
576resx636 rescale NaN -0 -> NaN
577resx637 rescale -0 NaN -> NaN
578
579resx641 rescale sNaN -Inf -> NaN Invalid_operation
580resx642 rescale sNaN -1000 -> NaN Invalid_operation
581resx643 rescale sNaN -1 -> NaN Invalid_operation
582resx644 rescale sNaN 0 -> NaN Invalid_operation
583resx645 rescale sNaN 1 -> NaN Invalid_operation
584resx646 rescale sNaN 1000 -> NaN Invalid_operation
585resx647 rescale -sNaN NaN -> -NaN Invalid_operation
586resx648 rescale sNaN -sNaN -> NaN Invalid_operation
587resx649 rescale NaN sNaN -> NaN Invalid_operation
588resx650 rescale -Inf sNaN -> NaN Invalid_operation
589resx651 rescale -1000 sNaN -> NaN Invalid_operation
590resx652 rescale -1 sNaN -> NaN Invalid_operation
591resx653 rescale 0 sNaN -> NaN Invalid_operation
592resx654 rescale 1 -sNaN -> -NaN Invalid_operation
593resx655 rescale 1000 sNaN -> NaN Invalid_operation
594resx656 rescale Inf sNaN -> NaN Invalid_operation
595resx657 rescale NaN sNaN -> NaN Invalid_operation
596resx658 rescale sNaN -0 -> NaN Invalid_operation
597resx659 rescale -0 sNaN -> NaN Invalid_operation
598
599-- propagating NaNs
600resx661 rescale NaN9 -Inf -> NaN9
601resx662 rescale NaN81 919 -> NaN81
602resx663 rescale NaN72 Inf -> NaN72
603resx664 rescale -NaN66 NaN5 -> -NaN66
604resx665 rescale -Inf NaN4 -> NaN4
605resx666 rescale -919 NaN32 -> NaN32
606resx667 rescale Inf NaN2 -> NaN2
607
608resx671 rescale sNaN99 -Inf -> NaN99 Invalid_operation
609resx672 rescale -sNaN98 -11 -> -NaN98 Invalid_operation
610resx673 rescale sNaN97 NaN -> NaN97 Invalid_operation
611resx674 rescale sNaN16 sNaN94 -> NaN16 Invalid_operation
612resx675 rescale NaN95 sNaN93 -> NaN93 Invalid_operation
613resx676 rescale -Inf sNaN92 -> NaN92 Invalid_operation
614resx677 rescale 088 -sNaN91 -> -NaN91 Invalid_operation
615resx678 rescale Inf -sNaN90 -> -NaN90 Invalid_operation
616resx679 rescale NaN sNaN87 -> NaN87 Invalid_operation
617
618-- subnormals and underflow
619precision: 4
620maxexponent: 999
621minexponent: -999
622resx710 rescale 1.00E-999 -999 -> 1E-999 Rounded
623resx711 rescale 0.1E-999 -1000 -> 1E-1000 Subnormal
624resx712 rescale 0.10E-999 -1000 -> 1E-1000 Subnormal Rounded
625resx713 rescale 0.100E-999 -1000 -> 1E-1000 Subnormal Rounded
626resx714 rescale 0.01E-999 -1001 -> 1E-1001 Subnormal
627-- next is rounded to Emin
628resx715 rescale 0.999E-999 -999 -> 1E-999 Inexact Rounded
629resx716 rescale 0.099E-999 -1000 -> 1E-1000 Inexact Rounded Subnormal Underflow
630
631resx717 rescale 0.009E-999 -1001 -> 1E-1001 Inexact Rounded Subnormal Underflow
632resx718 rescale 0.001E-999 -1001 -> 0E-1001 Inexact Rounded
633resx719 rescale 0.0009E-999 -1001 -> 0E-1001 Inexact Rounded
634resx720 rescale 0.0001E-999 -1001 -> 0E-1001 Inexact Rounded
635
636resx730 rescale -1.00E-999 -999 -> -1E-999 Rounded
637resx731 rescale -0.1E-999 -999 -> -0E-999 Rounded Inexact
638resx732 rescale -0.10E-999 -999 -> -0E-999 Rounded Inexact
639resx733 rescale -0.100E-999 -999 -> -0E-999 Rounded Inexact
640resx734 rescale -0.01E-999 -999 -> -0E-999 Inexact Rounded
641-- next is rounded to Emin
642resx735 rescale -0.999E-999 -999 -> -1E-999 Inexact Rounded
643resx736 rescale -0.099E-999 -999 -> -0E-999 Inexact Rounded
644resx737 rescale -0.009E-999 -999 -> -0E-999 Inexact Rounded
645resx738 rescale -0.001E-999 -999 -> -0E-999 Inexact Rounded
646resx739 rescale -0.0001E-999 -999 -> -0E-999 Inexact Rounded
647
648resx740 rescale -1.00E-999 -1000 -> -1.0E-999 Rounded
649resx741 rescale -0.1E-999 -1000 -> -1E-1000 Subnormal
650resx742 rescale -0.10E-999 -1000 -> -1E-1000 Subnormal Rounded
651resx743 rescale -0.100E-999 -1000 -> -1E-1000 Subnormal Rounded
652resx744 rescale -0.01E-999 -1000 -> -0E-1000 Inexact Rounded
653-- next is rounded to Emin
654resx745 rescale -0.999E-999 -1000 -> -1.0E-999 Inexact Rounded
655resx746 rescale -0.099E-999 -1000 -> -1E-1000 Inexact Rounded Subnormal Underflow
656resx747 rescale -0.009E-999 -1000 -> -0E-1000 Inexact Rounded
657resx748 rescale -0.001E-999 -1000 -> -0E-1000 Inexact Rounded
658resx749 rescale -0.0001E-999 -1000 -> -0E-1000 Inexact Rounded
659
660resx750 rescale -1.00E-999 -1001 -> -1.00E-999
661resx751 rescale -0.1E-999 -1001 -> -1.0E-1000 Subnormal
662resx752 rescale -0.10E-999 -1001 -> -1.0E-1000 Subnormal
663resx753 rescale -0.100E-999 -1001 -> -1.0E-1000 Subnormal Rounded
664resx754 rescale -0.01E-999 -1001 -> -1E-1001 Subnormal
665-- next is rounded to Emin
666resx755 rescale -0.999E-999 -1001 -> -1.00E-999 Inexact Rounded
667resx756 rescale -0.099E-999 -1001 -> -1.0E-1000 Inexact Rounded Subnormal Underflow
668resx757 rescale -0.009E-999 -1001 -> -1E-1001 Inexact Rounded Subnormal Underflow
669resx758 rescale -0.001E-999 -1001 -> -0E-1001 Inexact Rounded
670resx759 rescale -0.0001E-999 -1001 -> -0E-1001 Inexact Rounded
671
672resx760 rescale -1.00E-999 -1002 -> -1.000E-999
673resx761 rescale -0.1E-999 -1002 -> -1.00E-1000 Subnormal
674resx762 rescale -0.10E-999 -1002 -> -1.00E-1000 Subnormal
675resx763 rescale -0.100E-999 -1002 -> -1.00E-1000 Subnormal
676resx764 rescale -0.01E-999 -1002 -> -1.0E-1001 Subnormal
677resx765 rescale -0.999E-999 -1002 -> -9.99E-1000 Subnormal
678resx766 rescale -0.099E-999 -1002 -> -9.9E-1001 Subnormal
679resx767 rescale -0.009E-999 -1002 -> -9E-1002 Subnormal
680resx768 rescale -0.001E-999 -1002 -> -1E-1002 Subnormal
681resx769 rescale -0.0001E-999 -1002 -> -0E-1002 Inexact Rounded
682
683-- rhs must be no less than Etiny
684resx770 rescale -1.00E-999 -1003 -> NaN Invalid_operation
685resx771 rescale -0.1E-999 -1003 -> NaN Invalid_operation
686resx772 rescale -0.10E-999 -1003 -> NaN Invalid_operation
687resx773 rescale -0.100E-999 -1003 -> NaN Invalid_operation
688resx774 rescale -0.01E-999 -1003 -> NaN Invalid_operation
689resx775 rescale -0.999E-999 -1003 -> NaN Invalid_operation
690resx776 rescale -0.099E-999 -1003 -> NaN Invalid_operation
691resx777 rescale -0.009E-999 -1003 -> NaN Invalid_operation
692resx778 rescale -0.001E-999 -1003 -> NaN Invalid_operation
693resx779 rescale -0.0001E-999 -1003 -> NaN Invalid_operation
694
695precision: 9
696maxExponent: 999999999
697minexponent: -999999999
698
699-- getInt worries
700resx801 rescale 0 1000000000 -> NaN Invalid_operation
701resx802 rescale 0 -1000000000 -> 0E-1000000000
702resx803 rescale 0 2000000000 -> NaN Invalid_operation
703resx804 rescale 0 -2000000000 -> NaN Invalid_operation
704resx805 rescale 0 3000000000 -> NaN Invalid_operation
705resx806 rescale 0 -3000000000 -> NaN Invalid_operation
706resx807 rescale 0 4000000000 -> NaN Invalid_operation
707resx808 rescale 0 -4000000000 -> NaN Invalid_operation
708resx809 rescale 0 5000000000 -> NaN Invalid_operation
709resx810 rescale 0 -5000000000 -> NaN Invalid_operation
710resx811 rescale 0 6000000000 -> NaN Invalid_operation
711resx812 rescale 0 -6000000000 -> NaN Invalid_operation
712resx813 rescale 0 7000000000 -> NaN Invalid_operation
713resx814 rescale 0 -7000000000 -> NaN Invalid_operation
714resx815 rescale 0 8000000000 -> NaN Invalid_operation
715resx816 rescale 0 -8000000000 -> NaN Invalid_operation
716resx817 rescale 0 9000000000 -> NaN Invalid_operation
717resx818 rescale 0 -9000000000 -> NaN Invalid_operation
718resx819 rescale 0 9999999999 -> NaN Invalid_operation
719resx820 rescale 0 -9999999999 -> NaN Invalid_operation
720resx821 rescale 0 10000000000 -> NaN Invalid_operation
721resx822 rescale 0 -10000000000 -> NaN Invalid_operation
722
723resx831 rescale 1 0E-1 -> 1
724resx832 rescale 1 0E-2 -> 1
725resx833 rescale 1 0E-3 -> 1
726resx834 rescale 1 0E-4 -> 1
727resx835 rescale 1 0E-100 -> 1
728resx836 rescale 1 0E-100000 -> 1
729resx837 rescale 1 0E+100 -> 1
730resx838 rescale 1 0E+100000 -> 1
731
732resx841 rescale 0 5E-1000000 -> NaN Invalid_operation
733resx842 rescale 0 5E-1000000 -> NaN Invalid_operation
734resx843 rescale 0 999999999 -> 0E+999999999
735resx844 rescale 0 1000000000 -> NaN Invalid_operation
736resx845 rescale 0 -999999999 -> 0E-999999999
737resx846 rescale 0 -1000000000 -> 0E-1000000000
738resx847 rescale 0 -1000000001 -> 0E-1000000001
739resx848 rescale 0 -1000000002 -> 0E-1000000002
740resx849 rescale 0 -1000000003 -> 0E-1000000003
741resx850 rescale 0 -1000000004 -> 0E-1000000004
742resx851 rescale 0 -1000000005 -> 0E-1000000005
743resx852 rescale 0 -1000000006 -> 0E-1000000006
744resx853 rescale 0 -1000000007 -> 0E-1000000007
745resx854 rescale 0 -1000000008 -> NaN Invalid_operation
746
747resx861 rescale 1 +2147483649 -> NaN Invalid_operation
748resx862 rescale 1 +2147483648 -> NaN Invalid_operation
749resx863 rescale 1 +2147483647 -> NaN Invalid_operation
750resx864 rescale 1 -2147483647 -> NaN Invalid_operation
751resx865 rescale 1 -2147483648 -> NaN Invalid_operation
752resx866 rescale 1 -2147483649 -> NaN Invalid_operation
753
754-- Null tests
755res900 rescale 10 # -> NaN Invalid_operation
756res901 rescale # 10 -> NaN Invalid_operation