|
1 ------------------------------------------------------------------------ |
|
2 -- dqMin.decTest -- decQuad minnum -- |
|
3 -- Copyright (c) IBM Corporation, 1981, 2008. 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 ------------------------------------------------------------------------ |
|
20 version: 2.58 |
|
21 |
|
22 -- we assume that base comparison is tested in compare.decTest, so |
|
23 -- these mainly cover special cases and rounding |
|
24 extended: 1 |
|
25 clamp: 1 |
|
26 precision: 34 |
|
27 maxExponent: 6144 |
|
28 minExponent: -6143 |
|
29 rounding: half_even |
|
30 |
|
31 -- sanity checks |
|
32 dqmin001 min -2 -2 -> -2 |
|
33 dqmin002 min -2 -1 -> -2 |
|
34 dqmin003 min -2 0 -> -2 |
|
35 dqmin004 min -2 1 -> -2 |
|
36 dqmin005 min -2 2 -> -2 |
|
37 dqmin006 min -1 -2 -> -2 |
|
38 dqmin007 min -1 -1 -> -1 |
|
39 dqmin008 min -1 0 -> -1 |
|
40 dqmin009 min -1 1 -> -1 |
|
41 dqmin010 min -1 2 -> -1 |
|
42 dqmin011 min 0 -2 -> -2 |
|
43 dqmin012 min 0 -1 -> -1 |
|
44 dqmin013 min 0 0 -> 0 |
|
45 dqmin014 min 0 1 -> 0 |
|
46 dqmin015 min 0 2 -> 0 |
|
47 dqmin016 min 1 -2 -> -2 |
|
48 dqmin017 min 1 -1 -> -1 |
|
49 dqmin018 min 1 0 -> 0 |
|
50 dqmin019 min 1 1 -> 1 |
|
51 dqmin020 min 1 2 -> 1 |
|
52 dqmin021 min 2 -2 -> -2 |
|
53 dqmin022 min 2 -1 -> -1 |
|
54 dqmin023 min 2 0 -> 0 |
|
55 dqmin025 min 2 1 -> 1 |
|
56 dqmin026 min 2 2 -> 2 |
|
57 |
|
58 -- extended zeros |
|
59 dqmin030 min 0 0 -> 0 |
|
60 dqmin031 min 0 -0 -> -0 |
|
61 dqmin032 min 0 -0.0 -> -0.0 |
|
62 dqmin033 min 0 0.0 -> 0.0 |
|
63 dqmin034 min -0 0 -> -0 |
|
64 dqmin035 min -0 -0 -> -0 |
|
65 dqmin036 min -0 -0.0 -> -0 |
|
66 dqmin037 min -0 0.0 -> -0 |
|
67 dqmin038 min 0.0 0 -> 0.0 |
|
68 dqmin039 min 0.0 -0 -> -0 |
|
69 dqmin040 min 0.0 -0.0 -> -0.0 |
|
70 dqmin041 min 0.0 0.0 -> 0.0 |
|
71 dqmin042 min -0.0 0 -> -0.0 |
|
72 dqmin043 min -0.0 -0 -> -0 |
|
73 dqmin044 min -0.0 -0.0 -> -0.0 |
|
74 dqmin045 min -0.0 0.0 -> -0.0 |
|
75 |
|
76 dqmin046 min 0E1 -0E1 -> -0E+1 |
|
77 dqmin047 min -0E1 0E2 -> -0E+1 |
|
78 dqmin048 min 0E2 0E1 -> 0E+1 |
|
79 dqmin049 min 0E1 0E2 -> 0E+1 |
|
80 dqmin050 min -0E3 -0E2 -> -0E+3 |
|
81 dqmin051 min -0E2 -0E3 -> -0E+3 |
|
82 |
|
83 -- Specials |
|
84 dqmin090 min Inf -Inf -> -Infinity |
|
85 dqmin091 min Inf -1000 -> -1000 |
|
86 dqmin092 min Inf -1 -> -1 |
|
87 dqmin093 min Inf -0 -> -0 |
|
88 dqmin094 min Inf 0 -> 0 |
|
89 dqmin095 min Inf 1 -> 1 |
|
90 dqmin096 min Inf 1000 -> 1000 |
|
91 dqmin097 min Inf Inf -> Infinity |
|
92 dqmin098 min -1000 Inf -> -1000 |
|
93 dqmin099 min -Inf Inf -> -Infinity |
|
94 dqmin100 min -1 Inf -> -1 |
|
95 dqmin101 min -0 Inf -> -0 |
|
96 dqmin102 min 0 Inf -> 0 |
|
97 dqmin103 min 1 Inf -> 1 |
|
98 dqmin104 min 1000 Inf -> 1000 |
|
99 dqmin105 min Inf Inf -> Infinity |
|
100 |
|
101 dqmin120 min -Inf -Inf -> -Infinity |
|
102 dqmin121 min -Inf -1000 -> -Infinity |
|
103 dqmin122 min -Inf -1 -> -Infinity |
|
104 dqmin123 min -Inf -0 -> -Infinity |
|
105 dqmin124 min -Inf 0 -> -Infinity |
|
106 dqmin125 min -Inf 1 -> -Infinity |
|
107 dqmin126 min -Inf 1000 -> -Infinity |
|
108 dqmin127 min -Inf Inf -> -Infinity |
|
109 dqmin128 min -Inf -Inf -> -Infinity |
|
110 dqmin129 min -1000 -Inf -> -Infinity |
|
111 dqmin130 min -1 -Inf -> -Infinity |
|
112 dqmin131 min -0 -Inf -> -Infinity |
|
113 dqmin132 min 0 -Inf -> -Infinity |
|
114 dqmin133 min 1 -Inf -> -Infinity |
|
115 dqmin134 min 1000 -Inf -> -Infinity |
|
116 dqmin135 min Inf -Inf -> -Infinity |
|
117 |
|
118 -- 2004.08.02 754r chooses number over NaN in mixed cases |
|
119 dqmin141 min NaN -Inf -> -Infinity |
|
120 dqmin142 min NaN -1000 -> -1000 |
|
121 dqmin143 min NaN -1 -> -1 |
|
122 dqmin144 min NaN -0 -> -0 |
|
123 dqmin145 min NaN 0 -> 0 |
|
124 dqmin146 min NaN 1 -> 1 |
|
125 dqmin147 min NaN 1000 -> 1000 |
|
126 dqmin148 min NaN Inf -> Infinity |
|
127 dqmin149 min NaN NaN -> NaN |
|
128 dqmin150 min -Inf NaN -> -Infinity |
|
129 dqmin151 min -1000 NaN -> -1000 |
|
130 dqmin152 min -1 -NaN -> -1 |
|
131 dqmin153 min -0 NaN -> -0 |
|
132 dqmin154 min 0 -NaN -> 0 |
|
133 dqmin155 min 1 NaN -> 1 |
|
134 dqmin156 min 1000 NaN -> 1000 |
|
135 dqmin157 min Inf NaN -> Infinity |
|
136 |
|
137 dqmin161 min sNaN -Inf -> NaN Invalid_operation |
|
138 dqmin162 min sNaN -1000 -> NaN Invalid_operation |
|
139 dqmin163 min sNaN -1 -> NaN Invalid_operation |
|
140 dqmin164 min sNaN -0 -> NaN Invalid_operation |
|
141 dqmin165 min -sNaN 0 -> -NaN Invalid_operation |
|
142 dqmin166 min -sNaN 1 -> -NaN Invalid_operation |
|
143 dqmin167 min sNaN 1000 -> NaN Invalid_operation |
|
144 dqmin168 min sNaN NaN -> NaN Invalid_operation |
|
145 dqmin169 min sNaN sNaN -> NaN Invalid_operation |
|
146 dqmin170 min NaN sNaN -> NaN Invalid_operation |
|
147 dqmin171 min -Inf sNaN -> NaN Invalid_operation |
|
148 dqmin172 min -1000 sNaN -> NaN Invalid_operation |
|
149 dqmin173 min -1 sNaN -> NaN Invalid_operation |
|
150 dqmin174 min -0 sNaN -> NaN Invalid_operation |
|
151 dqmin175 min 0 sNaN -> NaN Invalid_operation |
|
152 dqmin176 min 1 sNaN -> NaN Invalid_operation |
|
153 dqmin177 min 1000 sNaN -> NaN Invalid_operation |
|
154 dqmin178 min Inf sNaN -> NaN Invalid_operation |
|
155 dqmin179 min NaN sNaN -> NaN Invalid_operation |
|
156 |
|
157 -- propagating NaNs |
|
158 dqmin181 min NaN9 -Inf -> -Infinity |
|
159 dqmin182 min -NaN8 9990 -> 9990 |
|
160 dqmin183 min NaN71 Inf -> Infinity |
|
161 |
|
162 dqmin184 min NaN1 NaN54 -> NaN1 |
|
163 dqmin185 min NaN22 -NaN53 -> NaN22 |
|
164 dqmin186 min -NaN3 NaN6 -> -NaN3 |
|
165 dqmin187 min -NaN44 NaN7 -> -NaN44 |
|
166 |
|
167 dqmin188 min -Inf NaN41 -> -Infinity |
|
168 dqmin189 min -9999 -NaN33 -> -9999 |
|
169 dqmin190 min Inf NaN2 -> Infinity |
|
170 |
|
171 dqmin191 min sNaN99 -Inf -> NaN99 Invalid_operation |
|
172 dqmin192 min sNaN98 -11 -> NaN98 Invalid_operation |
|
173 dqmin193 min -sNaN97 NaN8 -> -NaN97 Invalid_operation |
|
174 dqmin194 min sNaN69 sNaN94 -> NaN69 Invalid_operation |
|
175 dqmin195 min NaN95 sNaN93 -> NaN93 Invalid_operation |
|
176 dqmin196 min -Inf sNaN92 -> NaN92 Invalid_operation |
|
177 dqmin197 min 088 sNaN91 -> NaN91 Invalid_operation |
|
178 dqmin198 min Inf -sNaN90 -> -NaN90 Invalid_operation |
|
179 dqmin199 min NaN sNaN86 -> NaN86 Invalid_operation |
|
180 |
|
181 -- old rounding checks |
|
182 dqmin221 min -12345678000 1 -> -12345678000 |
|
183 dqmin222 min 1 -12345678000 -> -12345678000 |
|
184 dqmin223 min -1234567800 1 -> -1234567800 |
|
185 dqmin224 min 1 -1234567800 -> -1234567800 |
|
186 dqmin225 min -1234567890 1 -> -1234567890 |
|
187 dqmin226 min 1 -1234567890 -> -1234567890 |
|
188 dqmin227 min -1234567891 1 -> -1234567891 |
|
189 dqmin228 min 1 -1234567891 -> -1234567891 |
|
190 dqmin229 min -12345678901 1 -> -12345678901 |
|
191 dqmin230 min 1 -12345678901 -> -12345678901 |
|
192 dqmin231 min -1234567896 1 -> -1234567896 |
|
193 dqmin232 min 1 -1234567896 -> -1234567896 |
|
194 dqmin233 min 1234567891 1 -> 1 |
|
195 dqmin234 min 1 1234567891 -> 1 |
|
196 dqmin235 min 12345678901 1 -> 1 |
|
197 dqmin236 min 1 12345678901 -> 1 |
|
198 dqmin237 min 1234567896 1 -> 1 |
|
199 dqmin238 min 1 1234567896 -> 1 |
|
200 |
|
201 -- from examples |
|
202 dqmin280 min '3' '2' -> '2' |
|
203 dqmin281 min '-10' '3' -> '-10' |
|
204 dqmin282 min '1.0' '1' -> '1.0' |
|
205 dqmin283 min '1' '1.0' -> '1.0' |
|
206 dqmin284 min '7' 'NaN' -> '7' |
|
207 |
|
208 -- expanded list from min/max 754r purple prose |
|
209 -- [explicit tests for exponent ordering] |
|
210 dqmin401 min Inf 1.1 -> 1.1 |
|
211 dqmin402 min 1.1 1 -> 1 |
|
212 dqmin403 min 1 1.0 -> 1.0 |
|
213 dqmin404 min 1.0 0.1 -> 0.1 |
|
214 dqmin405 min 0.1 0.10 -> 0.10 |
|
215 dqmin406 min 0.10 0.100 -> 0.100 |
|
216 dqmin407 min 0.10 0 -> 0 |
|
217 dqmin408 min 0 0.0 -> 0.0 |
|
218 dqmin409 min 0.0 -0 -> -0 |
|
219 dqmin410 min 0.0 -0.0 -> -0.0 |
|
220 dqmin411 min 0.00 -0.0 -> -0.0 |
|
221 dqmin412 min 0.0 -0.00 -> -0.00 |
|
222 dqmin413 min 0 -0.0 -> -0.0 |
|
223 dqmin414 min 0 -0 -> -0 |
|
224 dqmin415 min -0.0 -0 -> -0 |
|
225 dqmin416 min -0 -0.100 -> -0.100 |
|
226 dqmin417 min -0.100 -0.10 -> -0.10 |
|
227 dqmin418 min -0.10 -0.1 -> -0.1 |
|
228 dqmin419 min -0.1 -1.0 -> -1.0 |
|
229 dqmin420 min -1.0 -1 -> -1 |
|
230 dqmin421 min -1 -1.1 -> -1.1 |
|
231 dqmin423 min -1.1 -Inf -> -Infinity |
|
232 -- same with operands reversed |
|
233 dqmin431 min 1.1 Inf -> 1.1 |
|
234 dqmin432 min 1 1.1 -> 1 |
|
235 dqmin433 min 1.0 1 -> 1.0 |
|
236 dqmin434 min 0.1 1.0 -> 0.1 |
|
237 dqmin435 min 0.10 0.1 -> 0.10 |
|
238 dqmin436 min 0.100 0.10 -> 0.100 |
|
239 dqmin437 min 0 0.10 -> 0 |
|
240 dqmin438 min 0.0 0 -> 0.0 |
|
241 dqmin439 min -0 0.0 -> -0 |
|
242 dqmin440 min -0.0 0.0 -> -0.0 |
|
243 dqmin441 min -0.0 0.00 -> -0.0 |
|
244 dqmin442 min -0.00 0.0 -> -0.00 |
|
245 dqmin443 min -0.0 0 -> -0.0 |
|
246 dqmin444 min -0 0 -> -0 |
|
247 dqmin445 min -0 -0.0 -> -0 |
|
248 dqmin446 min -0.100 -0 -> -0.100 |
|
249 dqmin447 min -0.10 -0.100 -> -0.10 |
|
250 dqmin448 min -0.1 -0.10 -> -0.1 |
|
251 dqmin449 min -1.0 -0.1 -> -1.0 |
|
252 dqmin450 min -1 -1.0 -> -1 |
|
253 dqmin451 min -1.1 -1 -> -1.1 |
|
254 dqmin453 min -Inf -1.1 -> -Infinity |
|
255 -- largies |
|
256 dqmin460 min 1000 1E+3 -> 1000 |
|
257 dqmin461 min 1E+3 1000 -> 1000 |
|
258 dqmin462 min 1000 -1E+3 -> -1E+3 |
|
259 dqmin463 min 1E+3 -384 -> -384 |
|
260 dqmin464 min -384 1E+3 -> -384 |
|
261 dqmin465 min -1E+3 1000 -> -1E+3 |
|
262 dqmin466 min -384 -1E+3 -> -1E+3 |
|
263 dqmin467 min -1E+3 -384 -> -1E+3 |
|
264 |
|
265 -- misalignment traps for little-endian |
|
266 dqmin471 min 1.0 0.1 -> 0.1 |
|
267 dqmin472 min 0.1 1.0 -> 0.1 |
|
268 dqmin473 min 10.0 0.1 -> 0.1 |
|
269 dqmin474 min 0.1 10.0 -> 0.1 |
|
270 dqmin475 min 100 1.0 -> 1.0 |
|
271 dqmin476 min 1.0 100 -> 1.0 |
|
272 dqmin477 min 1000 10.0 -> 10.0 |
|
273 dqmin478 min 10.0 1000 -> 10.0 |
|
274 dqmin479 min 10000 100.0 -> 100.0 |
|
275 dqmin480 min 100.0 10000 -> 100.0 |
|
276 dqmin481 min 100000 1000.0 -> 1000.0 |
|
277 dqmin482 min 1000.0 100000 -> 1000.0 |
|
278 dqmin483 min 1000000 10000.0 -> 10000.0 |
|
279 dqmin484 min 10000.0 1000000 -> 10000.0 |
|
280 |
|
281 -- subnormals |
|
282 dqmin510 min 1.00E-6143 0 -> 0 |
|
283 dqmin511 min 0.1E-6143 0 -> 0 |
|
284 dqmin512 min 0.10E-6143 0 -> 0 |
|
285 dqmin513 min 0.100E-6143 0 -> 0 |
|
286 dqmin514 min 0.01E-6143 0 -> 0 |
|
287 dqmin515 min 0.999E-6143 0 -> 0 |
|
288 dqmin516 min 0.099E-6143 0 -> 0 |
|
289 dqmin517 min 0.009E-6143 0 -> 0 |
|
290 dqmin518 min 0.001E-6143 0 -> 0 |
|
291 dqmin519 min 0.0009E-6143 0 -> 0 |
|
292 dqmin520 min 0.0001E-6143 0 -> 0 |
|
293 |
|
294 dqmin530 min -1.00E-6143 0 -> -1.00E-6143 |
|
295 dqmin531 min -0.1E-6143 0 -> -1E-6144 Subnormal |
|
296 dqmin532 min -0.10E-6143 0 -> -1.0E-6144 Subnormal |
|
297 dqmin533 min -0.100E-6143 0 -> -1.00E-6144 Subnormal |
|
298 dqmin534 min -0.01E-6143 0 -> -1E-6145 Subnormal |
|
299 dqmin535 min -0.999E-6143 0 -> -9.99E-6144 Subnormal |
|
300 dqmin536 min -0.099E-6143 0 -> -9.9E-6145 Subnormal |
|
301 dqmin537 min -0.009E-6143 0 -> -9E-6146 Subnormal |
|
302 dqmin538 min -0.001E-6143 0 -> -1E-6146 Subnormal |
|
303 dqmin539 min -0.0009E-6143 0 -> -9E-6147 Subnormal |
|
304 dqmin540 min -0.0001E-6143 0 -> -1E-6147 Subnormal |
|
305 |
|
306 |
|
307 -- Null tests |
|
308 dqmin900 min 10 # -> NaN Invalid_operation |
|
309 dqmin901 min # 10 -> NaN Invalid_operation |