Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v8plus / lib / python2.4 / test / decimaltestdata / divideint.decTest
CommitLineData
920dae64
AT
1------------------------------------------------------------------------
2-- divideint.decTest -- decimal integer division --
3-- Copyright (c) IBM Corporation, 1981, 2004. 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
22extended: 1
23precision: 9
24rounding: half_up
25maxExponent: 384
26minexponent: -383
27
28dvix001 divideint 1 1 -> 1
29dvix002 divideint 2 1 -> 2
30dvix003 divideint 1 2 -> 0
31dvix004 divideint 2 2 -> 1
32dvix005 divideint 0 1 -> 0
33dvix006 divideint 0 2 -> 0
34dvix007 divideint 1 3 -> 0
35dvix008 divideint 2 3 -> 0
36dvix009 divideint 3 3 -> 1
37
38dvix010 divideint 2.4 1 -> 2
39dvix011 divideint 2.4 -1 -> -2
40dvix012 divideint -2.4 1 -> -2
41dvix013 divideint -2.4 -1 -> 2
42dvix014 divideint 2.40 1 -> 2
43dvix015 divideint 2.400 1 -> 2
44dvix016 divideint 2.4 2 -> 1
45dvix017 divideint 2.400 2 -> 1
46dvix018 divideint 2. 2 -> 1
47dvix019 divideint 20 20 -> 1
48
49dvix020 divideint 187 187 -> 1
50dvix021 divideint 5 2 -> 2
51dvix022 divideint 5 2.0 -> 2
52dvix023 divideint 5 2.000 -> 2
53dvix024 divideint 5 0.200 -> 25
54dvix025 divideint 5 0.200 -> 25
55
56dvix030 divideint 1 2 -> 0
57dvix031 divideint 1 4 -> 0
58dvix032 divideint 1 8 -> 0
59dvix033 divideint 1 16 -> 0
60dvix034 divideint 1 32 -> 0
61dvix035 divideint 1 64 -> 0
62dvix040 divideint 1 -2 -> -0
63dvix041 divideint 1 -4 -> -0
64dvix042 divideint 1 -8 -> -0
65dvix043 divideint 1 -16 -> -0
66dvix044 divideint 1 -32 -> -0
67dvix045 divideint 1 -64 -> -0
68dvix050 divideint -1 2 -> -0
69dvix051 divideint -1 4 -> -0
70dvix052 divideint -1 8 -> -0
71dvix053 divideint -1 16 -> -0
72dvix054 divideint -1 32 -> -0
73dvix055 divideint -1 64 -> -0
74dvix060 divideint -1 -2 -> 0
75dvix061 divideint -1 -4 -> 0
76dvix062 divideint -1 -8 -> 0
77dvix063 divideint -1 -16 -> 0
78dvix064 divideint -1 -32 -> 0
79dvix065 divideint -1 -64 -> 0
80
81-- similar with powers of ten
82dvix160 divideint 1 1 -> 1
83dvix161 divideint 1 10 -> 0
84dvix162 divideint 1 100 -> 0
85dvix163 divideint 1 1000 -> 0
86dvix164 divideint 1 10000 -> 0
87dvix165 divideint 1 100000 -> 0
88dvix166 divideint 1 1000000 -> 0
89dvix167 divideint 1 10000000 -> 0
90dvix168 divideint 1 100000000 -> 0
91dvix170 divideint 1 -1 -> -1
92dvix171 divideint 1 -10 -> -0
93dvix172 divideint 1 -100 -> -0
94dvix173 divideint 1 -1000 -> -0
95dvix174 divideint 1 -10000 -> -0
96dvix175 divideint 1 -100000 -> -0
97dvix176 divideint 1 -1000000 -> -0
98dvix177 divideint 1 -10000000 -> -0
99dvix178 divideint 1 -100000000 -> -0
100dvix180 divideint -1 1 -> -1
101dvix181 divideint -1 10 -> -0
102dvix182 divideint -1 100 -> -0
103dvix183 divideint -1 1000 -> -0
104dvix184 divideint -1 10000 -> -0
105dvix185 divideint -1 100000 -> -0
106dvix186 divideint -1 1000000 -> -0
107dvix187 divideint -1 10000000 -> -0
108dvix188 divideint -1 100000000 -> -0
109dvix190 divideint -1 -1 -> 1
110dvix191 divideint -1 -10 -> 0
111dvix192 divideint -1 -100 -> 0
112dvix193 divideint -1 -1000 -> 0
113dvix194 divideint -1 -10000 -> 0
114dvix195 divideint -1 -100000 -> 0
115dvix196 divideint -1 -1000000 -> 0
116dvix197 divideint -1 -10000000 -> 0
117dvix198 divideint -1 -100000000 -> 0
118
119-- some long operand cases here
120dvix070 divideint 999999999 1 -> 999999999
121dvix071 divideint 999999999.4 1 -> 999999999
122dvix072 divideint 999999999.5 1 -> 999999999
123dvix073 divideint 999999999.9 1 -> 999999999
124dvix074 divideint 999999999.999 1 -> 999999999
125precision: 6
126dvix080 divideint 999999999 1 -> NaN Division_impossible
127dvix081 divideint 99999999 1 -> NaN Division_impossible
128dvix082 divideint 9999999 1 -> NaN Division_impossible
129dvix083 divideint 999999 1 -> 999999
130dvix084 divideint 99999 1 -> 99999
131dvix085 divideint 9999 1 -> 9999
132dvix086 divideint 999 1 -> 999
133dvix087 divideint 99 1 -> 99
134dvix088 divideint 9 1 -> 9
135
136precision: 9
137dvix090 divideint 0. 1 -> 0
138dvix091 divideint .0 1 -> 0
139dvix092 divideint 0.00 1 -> 0
140dvix093 divideint 0.00E+9 1 -> 0
141dvix094 divideint 0.0000E-50 1 -> 0
142
143dvix100 divideint 1 1 -> 1
144dvix101 divideint 1 2 -> 0
145dvix102 divideint 1 3 -> 0
146dvix103 divideint 1 4 -> 0
147dvix104 divideint 1 5 -> 0
148dvix105 divideint 1 6 -> 0
149dvix106 divideint 1 7 -> 0
150dvix107 divideint 1 8 -> 0
151dvix108 divideint 1 9 -> 0
152dvix109 divideint 1 10 -> 0
153dvix110 divideint 1 1 -> 1
154dvix111 divideint 2 1 -> 2
155dvix112 divideint 3 1 -> 3
156dvix113 divideint 4 1 -> 4
157dvix114 divideint 5 1 -> 5
158dvix115 divideint 6 1 -> 6
159dvix116 divideint 7 1 -> 7
160dvix117 divideint 8 1 -> 8
161dvix118 divideint 9 1 -> 9
162dvix119 divideint 10 1 -> 10
163
164-- from DiagBigDecimal
165dvix131 divideint 101.3 1 -> 101
166dvix132 divideint 101.0 1 -> 101
167dvix133 divideint 101.3 3 -> 33
168dvix134 divideint 101.0 3 -> 33
169dvix135 divideint 2.4 1 -> 2
170dvix136 divideint 2.400 1 -> 2
171dvix137 divideint 18 18 -> 1
172dvix138 divideint 1120 1000 -> 1
173dvix139 divideint 2.4 2 -> 1
174dvix140 divideint 2.400 2 -> 1
175dvix141 divideint 0.5 2.000 -> 0
176dvix142 divideint 8.005 7 -> 1
177dvix143 divideint 5 2 -> 2
178dvix144 divideint 0 2 -> 0
179dvix145 divideint 0.00 2 -> 0
180
181-- Others
182dvix150 divideint 12345 4.999 -> 2469
183dvix151 divideint 12345 4.99 -> 2473
184dvix152 divideint 12345 4.9 -> 2519
185dvix153 divideint 12345 5 -> 2469
186dvix154 divideint 12345 5.1 -> 2420
187dvix155 divideint 12345 5.01 -> 2464
188dvix156 divideint 12345 5.001 -> 2468
189dvix157 divideint 101 7.6 -> 13
190
191-- Various flavours of divideint by 0
192maxexponent: 999999999
193minexponent: -999999999
194dvix201 divideint 0 0 -> NaN Division_undefined
195dvix202 divideint 0.0E5 0 -> NaN Division_undefined
196dvix203 divideint 0.000 0 -> NaN Division_undefined
197dvix204 divideint 0.0001 0 -> Infinity Division_by_zero
198dvix205 divideint 0.01 0 -> Infinity Division_by_zero
199dvix206 divideint 0.1 0 -> Infinity Division_by_zero
200dvix207 divideint 1 0 -> Infinity Division_by_zero
201dvix208 divideint 1 0.0 -> Infinity Division_by_zero
202dvix209 divideint 10 0.0 -> Infinity Division_by_zero
203dvix210 divideint 1E+100 0.0 -> Infinity Division_by_zero
204dvix211 divideint 1E+1000 0 -> Infinity Division_by_zero
205dvix214 divideint -0.0001 0 -> -Infinity Division_by_zero
206dvix215 divideint -0.01 0 -> -Infinity Division_by_zero
207dvix216 divideint -0.1 0 -> -Infinity Division_by_zero
208dvix217 divideint -1 0 -> -Infinity Division_by_zero
209dvix218 divideint -1 0.0 -> -Infinity Division_by_zero
210dvix219 divideint -10 0.0 -> -Infinity Division_by_zero
211dvix220 divideint -1E+100 0.0 -> -Infinity Division_by_zero
212dvix221 divideint -1E+1000 0 -> -Infinity Division_by_zero
213
214-- test some cases that are close to exponent overflow
215maxexponent: 999999999
216minexponent: -999999999
217dvix270 divideint 1 1e999999999 -> 0
218dvix271 divideint 1 0.9e999999999 -> 0
219dvix272 divideint 1 0.99e999999999 -> 0
220dvix273 divideint 1 0.999999999e999999999 -> 0
221dvix274 divideint 9e999999999 1 -> NaN Division_impossible
222dvix275 divideint 9.9e999999999 1 -> NaN Division_impossible
223dvix276 divideint 9.99e999999999 1 -> NaN Division_impossible
224dvix277 divideint 9.99999999e999999999 1 -> NaN Division_impossible
225
226dvix280 divideint 0.1 9e-999999999 -> NaN Division_impossible
227dvix281 divideint 0.1 99e-999999999 -> NaN Division_impossible
228dvix282 divideint 0.1 999e-999999999 -> NaN Division_impossible
229
230dvix283 divideint 0.1 9e-999999998 -> NaN Division_impossible
231dvix284 divideint 0.1 99e-999999998 -> NaN Division_impossible
232dvix285 divideint 0.1 999e-999999998 -> NaN Division_impossible
233dvix286 divideint 0.1 999e-999999997 -> NaN Division_impossible
234dvix287 divideint 0.1 9999e-999999997 -> NaN Division_impossible
235dvix288 divideint 0.1 99999e-999999997 -> NaN Division_impossible
236
237
238-- overflow and underflow tests [from divide]
239maxexponent: 999999999
240minexponent: -999999999
241dvix330 divideint +1.23456789012345E-0 9E+999999999 -> 0
242dvix331 divideint 9E+999999999 +0.23456789012345E-0 -> NaN Division_impossible
243dvix332 divideint +0.100 9E+999999999 -> 0
244dvix333 divideint 9E-999999999 +9.100 -> 0
245dvix335 divideint -1.23456789012345E-0 9E+999999999 -> -0
246dvix336 divideint 9E+999999999 -0.83456789012345E-0 -> NaN Division_impossible
247dvix337 divideint -0.100 9E+999999999 -> -0
248dvix338 divideint 9E-999999999 -9.100 -> -0
249
250-- long operand checks
251maxexponent: 999
252minexponent: -999
253precision: 9
254dvix401 divideint 12345678000 100 -> 123456780
255dvix402 divideint 1 12345678000 -> 0
256dvix403 divideint 1234567800 10 -> 123456780
257dvix404 divideint 1 1234567800 -> 0
258dvix405 divideint 1234567890 10 -> 123456789
259dvix406 divideint 1 1234567890 -> 0
260dvix407 divideint 1234567891 10 -> 123456789
261dvix408 divideint 1 1234567891 -> 0
262dvix409 divideint 12345678901 100 -> 123456789
263dvix410 divideint 1 12345678901 -> 0
264dvix411 divideint 1234567896 10 -> 123456789
265dvix412 divideint 1 1234567896 -> 0
266dvix413 divideint 12345678948 100 -> 123456789
267dvix414 divideint 12345678949 100 -> 123456789
268dvix415 divideint 12345678950 100 -> 123456789
269dvix416 divideint 12345678951 100 -> 123456789
270dvix417 divideint 12345678999 100 -> 123456789
271
272precision: 15
273dvix441 divideint 12345678000 1 -> 12345678000
274dvix442 divideint 1 12345678000 -> 0
275dvix443 divideint 1234567800 1 -> 1234567800
276dvix444 divideint 1 1234567800 -> 0
277dvix445 divideint 1234567890 1 -> 1234567890
278dvix446 divideint 1 1234567890 -> 0
279dvix447 divideint 1234567891 1 -> 1234567891
280dvix448 divideint 1 1234567891 -> 0
281dvix449 divideint 12345678901 1 -> 12345678901
282dvix450 divideint 1 12345678901 -> 0
283dvix451 divideint 1234567896 1 -> 1234567896
284dvix452 divideint 1 1234567896 -> 0
285
286precision: 9
287rounding: half_up
288maxExponent: 999
289minexponent: -999
290
291-- more zeros, etc.
292dvix531 divideint 5.00 1E-3 -> 5000
293dvix532 divideint 00.00 0.000 -> NaN Division_undefined
294dvix533 divideint 00.00 0E-3 -> NaN Division_undefined
295dvix534 divideint 0 -0 -> NaN Division_undefined
296dvix535 divideint -0 0 -> NaN Division_undefined
297dvix536 divideint -0 -0 -> NaN Division_undefined
298
299dvix541 divideint 0 -1 -> -0
300dvix542 divideint -0 -1 -> 0
301dvix543 divideint 0 1 -> 0
302dvix544 divideint -0 1 -> -0
303dvix545 divideint -1 0 -> -Infinity Division_by_zero
304dvix546 divideint -1 -0 -> Infinity Division_by_zero
305dvix547 divideint 1 0 -> Infinity Division_by_zero
306dvix548 divideint 1 -0 -> -Infinity Division_by_zero
307
308dvix551 divideint 0.0 -1 -> -0
309dvix552 divideint -0.0 -1 -> 0
310dvix553 divideint 0.0 1 -> 0
311dvix554 divideint -0.0 1 -> -0
312dvix555 divideint -1.0 0 -> -Infinity Division_by_zero
313dvix556 divideint -1.0 -0 -> Infinity Division_by_zero
314dvix557 divideint 1.0 0 -> Infinity Division_by_zero
315dvix558 divideint 1.0 -0 -> -Infinity Division_by_zero
316
317dvix561 divideint 0 -1.0 -> -0
318dvix562 divideint -0 -1.0 -> 0
319dvix563 divideint 0 1.0 -> 0
320dvix564 divideint -0 1.0 -> -0
321dvix565 divideint -1 0.0 -> -Infinity Division_by_zero
322dvix566 divideint -1 -0.0 -> Infinity Division_by_zero
323dvix567 divideint 1 0.0 -> Infinity Division_by_zero
324dvix568 divideint 1 -0.0 -> -Infinity Division_by_zero
325
326dvix571 divideint 0.0 -1.0 -> -0
327dvix572 divideint -0.0 -1.0 -> 0
328dvix573 divideint 0.0 1.0 -> 0
329dvix574 divideint -0.0 1.0 -> -0
330dvix575 divideint -1.0 0.0 -> -Infinity Division_by_zero
331dvix576 divideint -1.0 -0.0 -> Infinity Division_by_zero
332dvix577 divideint 1.0 0.0 -> Infinity Division_by_zero
333dvix578 divideint 1.0 -0.0 -> -Infinity Division_by_zero
334
335-- Specials
336dvix580 divideint Inf -Inf -> NaN Invalid_operation
337dvix581 divideint Inf -1000 -> -Infinity
338dvix582 divideint Inf -1 -> -Infinity
339dvix583 divideint Inf -0 -> -Infinity
340dvix584 divideint Inf 0 -> Infinity
341dvix585 divideint Inf 1 -> Infinity
342dvix586 divideint Inf 1000 -> Infinity
343dvix587 divideint Inf Inf -> NaN Invalid_operation
344dvix588 divideint -1000 Inf -> -0
345dvix589 divideint -Inf Inf -> NaN Invalid_operation
346dvix590 divideint -1 Inf -> -0
347dvix591 divideint -0 Inf -> -0
348dvix592 divideint 0 Inf -> 0
349dvix593 divideint 1 Inf -> 0
350dvix594 divideint 1000 Inf -> 0
351dvix595 divideint Inf Inf -> NaN Invalid_operation
352
353dvix600 divideint -Inf -Inf -> NaN Invalid_operation
354dvix601 divideint -Inf -1000 -> Infinity
355dvix602 divideint -Inf -1 -> Infinity
356dvix603 divideint -Inf -0 -> Infinity
357dvix604 divideint -Inf 0 -> -Infinity
358dvix605 divideint -Inf 1 -> -Infinity
359dvix606 divideint -Inf 1000 -> -Infinity
360dvix607 divideint -Inf Inf -> NaN Invalid_operation
361dvix608 divideint -1000 Inf -> -0
362dvix609 divideint -Inf -Inf -> NaN Invalid_operation
363dvix610 divideint -1 -Inf -> 0
364dvix611 divideint -0 -Inf -> 0
365dvix612 divideint 0 -Inf -> -0
366dvix613 divideint 1 -Inf -> -0
367dvix614 divideint 1000 -Inf -> -0
368dvix615 divideint Inf -Inf -> NaN Invalid_operation
369
370dvix621 divideint NaN -Inf -> NaN
371dvix622 divideint NaN -1000 -> NaN
372dvix623 divideint NaN -1 -> NaN
373dvix624 divideint NaN -0 -> NaN
374dvix625 divideint NaN 0 -> NaN
375dvix626 divideint NaN 1 -> NaN
376dvix627 divideint NaN 1000 -> NaN
377dvix628 divideint NaN Inf -> NaN
378dvix629 divideint NaN NaN -> NaN
379dvix630 divideint -Inf NaN -> NaN
380dvix631 divideint -1000 NaN -> NaN
381dvix632 divideint -1 NaN -> NaN
382dvix633 divideint -0 NaN -> NaN
383dvix634 divideint 0 NaN -> NaN
384dvix635 divideint 1 NaN -> NaN
385dvix636 divideint 1000 NaN -> NaN
386dvix637 divideint Inf NaN -> NaN
387
388dvix641 divideint sNaN -Inf -> NaN Invalid_operation
389dvix642 divideint sNaN -1000 -> NaN Invalid_operation
390dvix643 divideint sNaN -1 -> NaN Invalid_operation
391dvix644 divideint sNaN -0 -> NaN Invalid_operation
392dvix645 divideint sNaN 0 -> NaN Invalid_operation
393dvix646 divideint sNaN 1 -> NaN Invalid_operation
394dvix647 divideint sNaN 1000 -> NaN Invalid_operation
395dvix648 divideint sNaN NaN -> NaN Invalid_operation
396dvix649 divideint sNaN sNaN -> NaN Invalid_operation
397dvix650 divideint NaN sNaN -> NaN Invalid_operation
398dvix651 divideint -Inf sNaN -> NaN Invalid_operation
399dvix652 divideint -1000 sNaN -> NaN Invalid_operation
400dvix653 divideint -1 sNaN -> NaN Invalid_operation
401dvix654 divideint -0 sNaN -> NaN Invalid_operation
402dvix655 divideint 0 sNaN -> NaN Invalid_operation
403dvix656 divideint 1 sNaN -> NaN Invalid_operation
404dvix657 divideint 1000 sNaN -> NaN Invalid_operation
405dvix658 divideint Inf sNaN -> NaN Invalid_operation
406dvix659 divideint NaN sNaN -> NaN Invalid_operation
407
408-- propagating NaNs
409dvix661 divideint NaN9 -Inf -> NaN9
410dvix662 divideint NaN8 1000 -> NaN8
411dvix663 divideint NaN7 Inf -> NaN7
412dvix664 divideint -NaN6 NaN5 -> -NaN6
413dvix665 divideint -Inf NaN4 -> NaN4
414dvix666 divideint -1000 NaN3 -> NaN3
415dvix667 divideint Inf -NaN2 -> -NaN2
416
417dvix671 divideint -sNaN99 -Inf -> -NaN99 Invalid_operation
418dvix672 divideint sNaN98 -1 -> NaN98 Invalid_operation
419dvix673 divideint sNaN97 NaN -> NaN97 Invalid_operation
420dvix674 divideint sNaN96 sNaN94 -> NaN96 Invalid_operation
421dvix675 divideint NaN95 sNaN93 -> NaN93 Invalid_operation
422dvix676 divideint -Inf sNaN92 -> NaN92 Invalid_operation
423dvix677 divideint 0 sNaN91 -> NaN91 Invalid_operation
424dvix678 divideint Inf -sNaN90 -> -NaN90 Invalid_operation
425dvix679 divideint NaN sNaN89 -> NaN89 Invalid_operation
426
427-- some long operand cases again
428precision: 8
429dvix710 divideint 100000001 1 -> NaN Division_impossible
430dvix711 divideint 100000000.4 1 -> NaN Division_impossible
431dvix712 divideint 100000000.5 1 -> NaN Division_impossible
432dvix713 divideint 100000000.9 1 -> NaN Division_impossible
433dvix714 divideint 100000000.999 1 -> NaN Division_impossible
434precision: 6
435dvix720 divideint 100000000 1 -> NaN Division_impossible
436dvix721 divideint 10000000 1 -> NaN Division_impossible
437dvix722 divideint 1000000 1 -> NaN Division_impossible
438dvix723 divideint 100000 1 -> 100000
439dvix724 divideint 10000 1 -> 10000
440dvix725 divideint 1000 1 -> 1000
441dvix726 divideint 100 1 -> 100
442dvix727 divideint 10 1 -> 10
443dvix728 divideint 1 1 -> 1
444dvix729 divideint 1 10 -> 0
445
446precision: 9
447maxexponent: 999999999
448minexponent: -999999999
449dvix732 divideint 1 0.99e999999999 -> 0
450dvix733 divideint 1 0.999999999e999999999 -> 0
451dvix734 divideint 9e999999999 1 -> NaN Division_impossible
452dvix735 divideint 9.9e999999999 1 -> NaN Division_impossible
453dvix736 divideint 9.99e999999999 1 -> NaN Division_impossible
454dvix737 divideint 9.99999999e999999999 1 -> NaN Division_impossible
455
456dvix740 divideint 0.1 9e-999999999 -> NaN Division_impossible
457dvix741 divideint 0.1 99e-999999999 -> NaN Division_impossible
458dvix742 divideint 0.1 999e-999999999 -> NaN Division_impossible
459
460dvix743 divideint 0.1 9e-999999998 -> NaN Division_impossible
461dvix744 divideint 0.1 99e-999999998 -> NaN Division_impossible
462dvix745 divideint 0.1 999e-999999998 -> NaN Division_impossible
463dvix746 divideint 0.1 999e-999999997 -> NaN Division_impossible
464dvix747 divideint 0.1 9999e-999999997 -> NaN Division_impossible
465dvix748 divideint 0.1 99999e-999999997 -> NaN Division_impossible
466
467
468-- Null tests
469dvix900 divideint 10 # -> NaN Invalid_operation
470dvix901 divideint # 10 -> NaN Invalid_operation