Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / amd64 / lib / python2.4 / test / decimaltestdata / decimal32.decTest
CommitLineData
920dae64
AT
1------------------------------------------------------------------------
2-- decimal32.decTest -- decimal four-byte format testcases --
3-- Copyright (c) IBM Corporation, 2000, 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.39
21
22-- This set of tests is for the four-byte concrete representation.
23-- Its characteristics are:
24--
25-- 1 bit sign
26-- 5 bits combination field
27-- 6 bits exponent continuation
28-- 20 bits coefficient continuation
29--
30-- Total exponent length 8 bits
31-- Total coefficient length 24 bits (7 digits)
32--
33-- Elimit = 191 (maximum encoded exponent)
34-- Emax = 96 (largest exponent value)
35-- Emin = -95 (smallest exponent value)
36-- bias = 101 (subtracted from encoded exponent) = -Etiny
37
38extended: 1
39precision: 7
40rounding: half_up
41maxExponent: 96
42minExponent: -95
43
44-- General testcases
45-- (mostly derived from the Strawman 4 document and examples)
46decd001 apply #A23003D0 -> -7.50
47decd002 apply -7.50 -> #A23003D0
48
49-- Normality
50decd010 apply 1234567 -> #2654d2e7
51decd011 apply 1234567.0 -> #2654d2e7 Rounded
52decd012 apply 1234567.1 -> #2654d2e7 Rounded Inexact
53decd013 apply -1234567 -> #a654d2e7
54decd014 apply -1234567.0 -> #a654d2e7 Rounded
55decd015 apply -1234567.1 -> #a654d2e7 Rounded Inexact
56
57
58-- Nmax and similar
59decd022 apply 9.999999E+96 -> #77f3fcff
60decd023 apply #77f3fcff -> 9.999999E+96
61decd024 apply 1.234567E+96 -> #47f4d2e7
62decd025 apply #47f4d2e7 -> 1.234567E+96
63-- fold-downs (more below)
64decd030 apply 1.23E+96 -> #47f4c000 Clamped
65decd031 apply #47f4c000 -> 1.230000E+96
66decd032 apply 1E+96 -> #47f00000 Clamped
67decd033 apply #47f00000 -> 1.000000E+96
68
69-- overflows
70maxExponent: 999 -- set high so conversion causes the overflow
71minExponent: -999
72decd040 apply 10E+96 -> #78000000 Overflow Rounded Inexact
73decd041 apply 1.000000E+97 -> #78000000 Overflow Rounded Inexact
74maxExponent: 96
75minExponent: -95
76
77decd051 apply 12345 -> #225049c5
78decd052 apply #225049c5 -> 12345
79decd053 apply 1234 -> #22500534
80decd054 apply #22500534 -> 1234
81decd055 apply 123 -> #225000a3
82decd056 apply #225000a3 -> 123
83decd057 apply 12 -> #22500012
84decd058 apply #22500012 -> 12
85decd059 apply 1 -> #22500001
86decd060 apply #22500001 -> 1
87decd061 apply 1.23 -> #223000a3
88decd062 apply #223000a3 -> 1.23
89decd063 apply 123.45 -> #223049c5
90decd064 apply #223049c5 -> 123.45
91
92-- Nmin and below
93decd071 apply 1E-95 -> #00600001
94decd072 apply #00600001 -> 1E-95
95decd073 apply 1.000000E-95 -> #04000000
96decd074 apply #04000000 -> 1.000000E-95
97decd075 apply 1.000001E-95 -> #04000001
98decd076 apply #04000001 -> 1.000001E-95
99
100decd077 apply 0.100000E-95 -> #00020000 Subnormal
101decd07x apply 1.00000E-96 -> 1.00000E-96 Subnormal
102decd078 apply #00020000 -> 1.00000E-96 Subnormal
103decd079 apply 0.000010E-95 -> #00000010 Subnormal
104decd080 apply #00000010 -> 1.0E-100 Subnormal
105decd081 apply 0.000001E-95 -> #00000001 Subnormal
106decd082 apply #00000001 -> 1E-101 Subnormal
107decd083 apply 1e-101 -> #00000001 Subnormal
108decd084 apply #00000001 -> 1E-101 Subnormal
109decd08x apply 1e-101 -> 1E-101 Subnormal
110
111-- underflows
112decd090 apply 1e-101 -> #00000001 Subnormal
113decd091 apply 1.9e-101 -> #00000002 Subnormal Underflow Inexact Rounded
114decd092 apply 1.1e-101 -> #00000001 Subnormal Underflow Inexact Rounded
115decd093 apply 1.001e-101 -> #00000001 Subnormal Underflow Inexact Rounded
116decd094 apply 1.000001e-101 -> #00000001 Subnormal Underflow Inexact Rounded
117decd095 apply 1.0000001e-101 -> #00000001 Subnormal Underflow Inexact Rounded
118decd096 apply 0.1e-101 -> #00000000 Subnormal Underflow Inexact Rounded
119decd097 apply 0.001e-101 -> #00000000 Subnormal Underflow Inexact Rounded
120decd098 apply 0.000001e-101 -> #00000000 Subnormal Underflow Inexact Rounded
121decd099 apply 0.0000001e-101 -> #00000000 Subnormal Underflow Inexact Rounded
122
123-- same again, negatives --
124
125-- Nmax and similar
126decd122 apply -9.999999E+96 -> #f7f3fcff
127decd123 apply #f7f3fcff -> -9.999999E+96
128decd124 apply -1.234567E+96 -> #c7f4d2e7
129decd125 apply #c7f4d2e7 -> -1.234567E+96
130-- fold-downs (more below)
131decd130 apply -1.23E+96 -> #c7f4c000 Clamped
132decd131 apply #c7f4c000 -> -1.230000E+96
133decd132 apply -1E+96 -> #c7f00000 Clamped
134decd133 apply #c7f00000 -> -1.000000E+96
135
136-- overflows
137maxExponent: 999 -- set high so conversion causes the overflow
138minExponent: -999
139decd140 apply -10E+96 -> #f8000000 Overflow Rounded Inexact
140decd141 apply -1.000000E+97 -> #f8000000 Overflow Rounded Inexact
141maxExponent: 96
142minExponent: -95
143
144decd151 apply -12345 -> #a25049c5
145decd152 apply #a25049c5 -> -12345
146decd153 apply -1234 -> #a2500534
147decd154 apply #a2500534 -> -1234
148decd155 apply -123 -> #a25000a3
149decd156 apply #a25000a3 -> -123
150decd157 apply -12 -> #a2500012
151decd158 apply #a2500012 -> -12
152decd159 apply -1 -> #a2500001
153decd160 apply #a2500001 -> -1
154decd161 apply -1.23 -> #a23000a3
155decd162 apply #a23000a3 -> -1.23
156decd163 apply -123.45 -> #a23049c5
157decd164 apply #a23049c5 -> -123.45
158
159-- Nmin and below
160decd171 apply -1E-95 -> #80600001
161decd172 apply #80600001 -> -1E-95
162decd173 apply -1.000000E-95 -> #84000000
163decd174 apply #84000000 -> -1.000000E-95
164decd175 apply -1.000001E-95 -> #84000001
165decd176 apply #84000001 -> -1.000001E-95
166
167decd177 apply -0.100000E-95 -> #80020000 Subnormal
168decd178 apply #80020000 -> -1.00000E-96 Subnormal
169decd179 apply -0.000010E-95 -> #80000010 Subnormal
170decd180 apply #80000010 -> -1.0E-100 Subnormal
171decd181 apply -0.000001E-95 -> #80000001 Subnormal
172decd182 apply #80000001 -> -1E-101 Subnormal
173decd183 apply -1e-101 -> #80000001 Subnormal
174decd184 apply #80000001 -> -1E-101 Subnormal
175
176-- underflows
177decd190 apply -1e-101 -> #80000001 Subnormal
178decd191 apply -1.9e-101 -> #80000002 Subnormal Underflow Inexact Rounded
179decd192 apply -1.1e-101 -> #80000001 Subnormal Underflow Inexact Rounded
180decd193 apply -1.001e-101 -> #80000001 Subnormal Underflow Inexact Rounded
181decd194 apply -1.000001e-101 -> #80000001 Subnormal Underflow Inexact Rounded
182decd195 apply -1.0000001e-101 -> #80000001 Subnormal Underflow Inexact Rounded
183decd196 apply -0.1e-101 -> #80000000 Subnormal Underflow Inexact Rounded
184decd197 apply -0.001e-101 -> #80000000 Subnormal Underflow Inexact Rounded
185decd198 apply -0.000001e-101 -> #80000000 Subnormal Underflow Inexact Rounded
186decd199 apply -0.0000001e-101 -> #80000000 Subnormal Underflow Inexact Rounded
187
188-- zeros
189decd400 apply 0E-400 -> #00000000 Clamped
190decd401 apply 0E-101 -> #00000000
191decd402 apply #00000000 -> 0E-101
192decd403 apply 0.000000E-95 -> #00000000
193decd404 apply #00000000 -> 0E-101
194decd405 apply 0E-2 -> #22300000
195decd406 apply #22300000 -> 0.00
196decd407 apply 0 -> #22500000
197decd408 apply #22500000 -> 0
198decd409 apply 0E+3 -> #22800000
199decd410 apply #22800000 -> 0E+3
200decd411 apply 0E+90 -> #43f00000
201decd412 apply #43f00000 -> 0E+90
202-- clamped zeros...
203decd413 apply 0E+91 -> #43f00000 Clamped
204decd414 apply #43f00000 -> 0E+90
205decd415 apply 0E+96 -> #43f00000 Clamped
206decd416 apply #43f00000 -> 0E+90
207decd417 apply 0E+400 -> #43f00000 Clamped
208decd418 apply #43f00000 -> 0E+90
209
210-- negative zeros
211decd420 apply -0E-400 -> #80000000 Clamped
212decd421 apply -0E-101 -> #80000000
213decd422 apply #80000000 -> -0E-101
214decd423 apply -0.000000E-95 -> #80000000
215decd424 apply #80000000 -> -0E-101
216decd425 apply -0E-2 -> #a2300000
217decd426 apply #a2300000 -> -0.00
218decd427 apply -0 -> #a2500000
219decd428 apply #a2500000 -> -0
220decd429 apply -0E+3 -> #a2800000
221decd430 apply #a2800000 -> -0E+3
222decd431 apply -0E+90 -> #c3f00000
223decd432 apply #c3f00000 -> -0E+90
224-- clamped zeros...
225decd433 apply -0E+91 -> #c3f00000 Clamped
226decd434 apply #c3f00000 -> -0E+90
227decd435 apply -0E+96 -> #c3f00000 Clamped
228decd436 apply #c3f00000 -> -0E+90
229decd437 apply -0E+400 -> #c3f00000 Clamped
230decd438 apply #c3f00000 -> -0E+90
231
232-- Specials
233decd500 apply Infinity -> #78000000
234decd501 apply #78787878 -> #78000000
235decd502 apply #78000000 -> Infinity
236decd503 apply #79797979 -> #78000000
237decd504 apply #79000000 -> Infinity
238decd505 apply #7a7a7a7a -> #78000000
239decd506 apply #7a000000 -> Infinity
240decd507 apply #7b7b7b7b -> #78000000
241decd508 apply #7b000000 -> Infinity
242decd509 apply #7c7c7c7c -> #7c0c7c7c
243
244decd510 apply NaN -> #7c000000
245decd511 apply #7c000000 -> NaN
246decd512 apply #7d7d7d7d -> #7c0d7d7d
247decd513 apply #7d000000 -> NaN
248decd514 apply #7e7e7e7e -> #7e0e7c7e
249decd515 apply #7e000000 -> sNaN
250decd516 apply #7f7f7f7f -> #7e0f7c7f
251decd517 apply #7f000000 -> sNaN
252decd518 apply #7fffffff -> sNaN999999
253decd519 apply #7fffffff -> #7e03fcff
254
255decd520 apply -Infinity -> #f8000000
256decd521 apply #f8787878 -> #f8000000
257decd522 apply #f8000000 -> -Infinity
258decd523 apply #f9797979 -> #f8000000
259decd524 apply #f9000000 -> -Infinity
260decd525 apply #fa7a7a7a -> #f8000000
261decd526 apply #fa000000 -> -Infinity
262decd527 apply #fb7b7b7b -> #f8000000
263decd528 apply #fb000000 -> -Infinity
264
265decd529 apply -NaN -> #fc000000
266decd530 apply #fc7c7c7c -> #fc0c7c7c
267decd531 apply #fc000000 -> -NaN
268decd532 apply #fd7d7d7d -> #fc0d7d7d
269decd533 apply #fd000000 -> -NaN
270decd534 apply #fe7e7e7e -> #fe0e7c7e
271decd535 apply #fe000000 -> -sNaN
272decd536 apply #ff7f7f7f -> #fe0f7c7f
273decd537 apply #ff000000 -> -sNaN
274decd538 apply #ffffffff -> -sNaN999999
275decd539 apply #ffffffff -> #fe03fcff
276
277-- diagnostic NaNs
278decd540 apply NaN -> #7c000000
279decd541 apply NaN0 -> #7c000000
280decd542 apply NaN1 -> #7c000001
281decd543 apply NaN12 -> #7c000012
282decd544 apply NaN79 -> #7c000079
283decd545 apply NaN12345 -> #7c0049c5
284decd546 apply NaN123456 -> #7c028e56
285decd547 apply NaN799799 -> #7c0f7fdf
286decd548 apply NaN999999 -> #7c03fcff
287decd549 apply NaN1234567 -> #7c000000 -- too many digits
288
289
290-- fold-down full sequence
291decd601 apply 1E+96 -> #47f00000 Clamped
292decd602 apply #47f00000 -> 1.000000E+96
293decd603 apply 1E+95 -> #43f20000 Clamped
294decd604 apply #43f20000 -> 1.00000E+95
295decd605 apply 1E+94 -> #43f04000 Clamped
296decd606 apply #43f04000 -> 1.0000E+94
297decd607 apply 1E+93 -> #43f00400 Clamped
298decd608 apply #43f00400 -> 1.000E+93
299decd609 apply 1E+92 -> #43f00080 Clamped
300decd610 apply #43f00080 -> 1.00E+92
301decd611 apply 1E+91 -> #43f00010 Clamped
302decd612 apply #43f00010 -> 1.0E+91
303decd613 apply 1E+90 -> #43f00001
304decd614 apply #43f00001 -> 1E+90
305
306
307-- Selected DPD codes
308decd700 apply #22500000 -> 0
309decd701 apply #22500009 -> 9
310decd702 apply #22500010 -> 10
311decd703 apply #22500019 -> 19
312decd704 apply #22500020 -> 20
313decd705 apply #22500029 -> 29
314decd706 apply #22500030 -> 30
315decd707 apply #22500039 -> 39
316decd708 apply #22500040 -> 40
317decd709 apply #22500049 -> 49
318decd710 apply #22500050 -> 50
319decd711 apply #22500059 -> 59
320decd712 apply #22500060 -> 60
321decd713 apply #22500069 -> 69
322decd714 apply #22500070 -> 70
323decd715 apply #22500071 -> 71
324decd716 apply #22500072 -> 72
325decd717 apply #22500073 -> 73
326decd718 apply #22500074 -> 74
327decd719 apply #22500075 -> 75
328decd720 apply #22500076 -> 76
329decd721 apply #22500077 -> 77
330decd722 apply #22500078 -> 78
331decd723 apply #22500079 -> 79
332
333decd730 apply #2250029e -> 994
334decd731 apply #2250029f -> 995
335decd732 apply #225002a0 -> 520
336decd733 apply #225002a1 -> 521
337
338-- DPD: one of each of the huffman groups
339decd740 apply #225003f7 -> 777
340decd741 apply #225003f8 -> 778
341decd742 apply #225003eb -> 787
342decd743 apply #2250037d -> 877
343decd744 apply #2250039f -> 997
344decd745 apply #225003bf -> 979
345decd746 apply #225003df -> 799
346decd747 apply #2250006e -> 888
347
348
349-- DPD all-highs cases (includes the 24 redundant codes)
350decd750 apply #2250006e -> 888
351decd751 apply #2250016e -> 888
352decd752 apply #2250026e -> 888
353decd753 apply #2250036e -> 888
354decd754 apply #2250006f -> 889
355decd755 apply #2250016f -> 889
356decd756 apply #2250026f -> 889
357decd757 apply #2250036f -> 889
358
359decd760 apply #2250007e -> 898
360decd761 apply #2250017e -> 898
361decd762 apply #2250027e -> 898
362decd763 apply #2250037e -> 898
363decd764 apply #2250007f -> 899
364decd765 apply #2250017f -> 899
365decd766 apply #2250027f -> 899
366decd767 apply #2250037f -> 899
367
368decd770 apply #225000ee -> 988
369decd771 apply #225001ee -> 988
370decd772 apply #225002ee -> 988
371decd773 apply #225003ee -> 988
372decd774 apply #225000ef -> 989
373decd775 apply #225001ef -> 989
374decd776 apply #225002ef -> 989
375decd777 apply #225003ef -> 989
376
377decd780 apply #225000fe -> 998
378decd781 apply #225001fe -> 998
379decd782 apply #225002fe -> 998
380decd783 apply #225003fe -> 998
381decd784 apply #225000ff -> 999
382decd785 apply #225001ff -> 999
383decd786 apply #225002ff -> 999
384decd787 apply #225003ff -> 999
385