summaryrefslogtreecommitdiffstats
path: root/Lib/test/decimaltestdata/dqMax.decTest
blob: 93ada279026368200fe96c5ed294e0f72cb553a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
------------------------------------------------------------------------
-- dqMax.decTest -- decQuad maxnum                                    --
-- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.58

-- we assume that base comparison is tested in compare.decTest, so
-- these mainly cover special cases and rounding
extended:    1
clamp:       1
precision:   34
maxExponent: 6144
minExponent: -6143
rounding:    half_even

-- sanity checks
dqmax001 max  -2  -2  -> -2
dqmax002 max  -2  -1  -> -1
dqmax003 max  -2   0  ->  0
dqmax004 max  -2   1  ->  1
dqmax005 max  -2   2  ->  2
dqmax006 max  -1  -2  -> -1
dqmax007 max  -1  -1  -> -1
dqmax008 max  -1   0  ->  0
dqmax009 max  -1   1  ->  1
dqmax010 max  -1   2  ->  2
dqmax011 max   0  -2  ->  0
dqmax012 max   0  -1  ->  0
dqmax013 max   0   0  ->  0
dqmax014 max   0   1  ->  1
dqmax015 max   0   2  ->  2
dqmax016 max   1  -2  ->  1
dqmax017 max   1  -1  ->  1
dqmax018 max   1   0  ->  1
dqmax019 max   1   1  ->  1
dqmax020 max   1   2  ->  2
dqmax021 max   2  -2  ->  2
dqmax022 max   2  -1  ->  2
dqmax023 max   2   0  ->  2
dqmax025 max   2   1  ->  2
dqmax026 max   2   2  ->  2

-- extended zeros
dqmax030 max   0     0   ->  0
dqmax031 max   0    -0   ->  0
dqmax032 max   0    -0.0 ->  0
dqmax033 max   0     0.0 ->  0
dqmax034 max  -0     0   ->  0    -- note: -0 = 0, but 0 chosen
dqmax035 max  -0    -0   -> -0
dqmax036 max  -0    -0.0 -> -0.0
dqmax037 max  -0     0.0 ->  0.0
dqmax038 max   0.0   0   ->  0
dqmax039 max   0.0  -0   ->  0.0
dqmax040 max   0.0  -0.0 ->  0.0
dqmax041 max   0.0   0.0 ->  0.0
dqmax042 max  -0.0   0   ->  0
dqmax043 max  -0.0  -0   -> -0.0
dqmax044 max  -0.0  -0.0 -> -0.0
dqmax045 max  -0.0   0.0 ->  0.0

dqmax050 max  -0E1   0E1 ->  0E+1
dqmax051 max  -0E2   0E2 ->  0E+2
dqmax052 max  -0E2   0E1 ->  0E+1
dqmax053 max  -0E1   0E2 ->  0E+2
dqmax054 max   0E1  -0E1 ->  0E+1
dqmax055 max   0E2  -0E2 ->  0E+2
dqmax056 max   0E2  -0E1 ->  0E+2
dqmax057 max   0E1  -0E2 ->  0E+1

dqmax058 max   0E1   0E1 ->  0E+1
dqmax059 max   0E2   0E2 ->  0E+2
dqmax060 max   0E2   0E1 ->  0E+2
dqmax061 max   0E1   0E2 ->  0E+2
dqmax062 max  -0E1  -0E1 -> -0E+1
dqmax063 max  -0E2  -0E2 -> -0E+2
dqmax064 max  -0E2  -0E1 -> -0E+1
dqmax065 max  -0E1  -0E2 -> -0E+1

-- Specials
dqmax090 max  Inf  -Inf   ->  Infinity
dqmax091 max  Inf  -1000  ->  Infinity
dqmax092 max  Inf  -1     ->  Infinity
dqmax093 max  Inf  -0     ->  Infinity
dqmax094 max  Inf   0     ->  Infinity
dqmax095 max  Inf   1     ->  Infinity
dqmax096 max  Inf   1000  ->  Infinity
dqmax097 max  Inf   Inf   ->  Infinity
dqmax098 max -1000  Inf   ->  Infinity
dqmax099 max -Inf   Inf   ->  Infinity
dqmax100 max -1     Inf   ->  Infinity
dqmax101 max -0     Inf   ->  Infinity
dqmax102 max  0     Inf   ->  Infinity
dqmax103 max  1     Inf   ->  Infinity
dqmax104 max  1000  Inf   ->  Infinity
dqmax105 max  Inf   Inf   ->  Infinity

dqmax120 max -Inf  -Inf   -> -Infinity
dqmax121 max -Inf  -1000  -> -1000
dqmax122 max -Inf  -1     -> -1
dqmax123 max -Inf  -0     -> -0
dqmax124 max -Inf   0     ->  0
dqmax125 max -Inf   1     ->  1
dqmax126 max -Inf   1000  ->  1000
dqmax127 max -Inf   Inf   ->  Infinity
dqmax128 max -Inf  -Inf   ->  -Infinity
dqmax129 max -1000 -Inf   ->  -1000
dqmax130 max -1    -Inf   ->  -1
dqmax131 max -0    -Inf   ->  -0
dqmax132 max  0    -Inf   ->  0
dqmax133 max  1    -Inf   ->  1
dqmax134 max  1000 -Inf   ->  1000
dqmax135 max  Inf  -Inf   ->  Infinity

-- 2004.08.02 754r chooses number over NaN in mixed cases
dqmax141 max  NaN -Inf    -> -Infinity
dqmax142 max  NaN -1000   -> -1000
dqmax143 max  NaN -1      -> -1
dqmax144 max  NaN -0      -> -0
dqmax145 max  NaN  0      ->  0
dqmax146 max  NaN  1      ->  1
dqmax147 max  NaN  1000   ->  1000
dqmax148 max  NaN  Inf    ->  Infinity
dqmax149 max  NaN  NaN    ->  NaN
dqmax150 max -Inf  NaN    -> -Infinity
dqmax151 max -1000 NaN    -> -1000
dqmax152 max -1    NaN    -> -1
dqmax153 max -0    NaN    -> -0
dqmax154 max  0    NaN    ->  0
dqmax155 max  1    NaN    ->  1
dqmax156 max  1000 NaN    ->  1000
dqmax157 max  Inf  NaN    ->  Infinity

dqmax161 max  sNaN -Inf   ->  NaN  Invalid_operation
dqmax162 max  sNaN -1000  ->  NaN  Invalid_operation
dqmax163 max  sNaN -1     ->  NaN  Invalid_operation
dqmax164 max  sNaN -0     ->  NaN  Invalid_operation
dqmax165 max  sNaN  0     ->  NaN  Invalid_operation
dqmax166 max  sNaN  1     ->  NaN  Invalid_operation
dqmax167 max  sNaN  1000  ->  NaN  Invalid_operation
dqmax168 max  sNaN  NaN   ->  NaN  Invalid_operation
dqmax169 max  sNaN sNaN   ->  NaN  Invalid_operation
dqmax170 max  NaN  sNaN   ->  NaN  Invalid_operation
dqmax171 max -Inf  sNaN   ->  NaN  Invalid_operation
dqmax172 max -1000 sNaN   ->  NaN  Invalid_operation
dqmax173 max -1    sNaN   ->  NaN  Invalid_operation
dqmax174 max -0    sNaN   ->  NaN  Invalid_operation
dqmax175 max  0    sNaN   ->  NaN  Invalid_operation
dqmax176 max  1    sNaN   ->  NaN  Invalid_operation
dqmax177 max  1000 sNaN   ->  NaN  Invalid_operation
dqmax178 max  Inf  sNaN   ->  NaN  Invalid_operation
dqmax179 max  NaN  sNaN   ->  NaN  Invalid_operation

-- propagating NaNs
dqmax181 max  NaN9  -Inf   -> -Infinity
dqmax182 max  NaN8     9   ->  9
dqmax183 max -NaN7   Inf   ->  Infinity

dqmax184 max -NaN1   NaN11 -> -NaN1
dqmax185 max  NaN2   NaN12 ->  NaN2
dqmax186 max -NaN13 -NaN7  -> -NaN13
dqmax187 max  NaN14 -NaN5  ->  NaN14

dqmax188 max -Inf    NaN4  -> -Infinity
dqmax189 max -9     -NaN3  -> -9
dqmax190 max  Inf    NaN2  ->  Infinity

dqmax191 max  sNaN99 -Inf    ->  NaN99 Invalid_operation
dqmax192 max  sNaN98 -1      ->  NaN98 Invalid_operation
dqmax193 max -sNaN97  NaN    -> -NaN97 Invalid_operation
dqmax194 max  sNaN96 sNaN94  ->  NaN96 Invalid_operation
dqmax195 max  NaN95  sNaN93  ->  NaN93 Invalid_operation
dqmax196 max -Inf    sNaN92  ->  NaN92 Invalid_operation
dqmax197 max  0      sNaN91  ->  NaN91 Invalid_operation
dqmax198 max  Inf   -sNaN90  -> -NaN90 Invalid_operation
dqmax199 max  NaN    sNaN89  ->  NaN89 Invalid_operation

-- old rounding checks
dqmax221 max 12345678000 1  -> 12345678000
dqmax222 max 1 12345678000  -> 12345678000
dqmax223 max 1234567800  1  -> 1234567800
dqmax224 max 1 1234567800   -> 1234567800
dqmax225 max 1234567890  1  -> 1234567890
dqmax226 max 1 1234567890   -> 1234567890
dqmax227 max 1234567891  1  -> 1234567891
dqmax228 max 1 1234567891   -> 1234567891
dqmax229 max 12345678901 1  -> 12345678901
dqmax230 max 1 12345678901  -> 12345678901
dqmax231 max 1234567896  1  -> 1234567896
dqmax232 max 1 1234567896   -> 1234567896
dqmax233 max -1234567891  1 -> 1
dqmax234 max 1 -1234567891  -> 1
dqmax235 max -12345678901 1 -> 1
dqmax236 max 1 -12345678901 -> 1
dqmax237 max -1234567896  1 -> 1
dqmax238 max 1 -1234567896  -> 1

-- from examples
dqmax280 max '3'   '2'  ->  '3'
dqmax281 max '-10' '3'  ->  '3'
dqmax282 max '1.0' '1'  ->  '1'
dqmax283 max '1' '1.0'  ->  '1'
dqmax284 max '7' 'NaN'  ->  '7'

-- expanded list from min/max 754r purple prose
-- [explicit tests for exponent ordering]
dqmax401 max  Inf    1.1     ->  Infinity
dqmax402 max  1.1    1       ->  1.1
dqmax403 max  1      1.0     ->  1
dqmax404 max  1.0    0.1     ->  1.0
dqmax405 max  0.1    0.10    ->  0.1
dqmax406 max  0.10   0.100   ->  0.10
dqmax407 max  0.10   0       ->  0.10
dqmax408 max  0      0.0     ->  0
dqmax409 max  0.0   -0       ->  0.0
dqmax410 max  0.0   -0.0     ->  0.0
dqmax411 max  0.00  -0.0     ->  0.00
dqmax412 max  0.0   -0.00    ->  0.0
dqmax413 max  0     -0.0     ->  0
dqmax414 max  0     -0       ->  0
dqmax415 max -0.0   -0       -> -0.0
dqmax416 max -0     -0.100   -> -0
dqmax417 max -0.100 -0.10    -> -0.100
dqmax418 max -0.10  -0.1     -> -0.10
dqmax419 max -0.1   -1.0     -> -0.1
dqmax420 max -1.0   -1       -> -1.0
dqmax421 max -1     -1.1     -> -1
dqmax423 max -1.1   -Inf     -> -1.1
-- same with operands reversed
dqmax431 max  1.1    Inf     ->  Infinity
dqmax432 max  1      1.1     ->  1.1
dqmax433 max  1.0    1       ->  1
dqmax434 max  0.1    1.0     ->  1.0
dqmax435 max  0.10   0.1     ->  0.1
dqmax436 max  0.100  0.10    ->  0.10
dqmax437 max  0      0.10    ->  0.10
dqmax438 max  0.0    0       ->  0
dqmax439 max -0      0.0     ->  0.0
dqmax440 max -0.0    0.0     ->  0.0
dqmax441 max -0.0    0.00    ->  0.00
dqmax442 max -0.00   0.0     ->  0.0
dqmax443 max -0.0    0       ->  0
dqmax444 max -0      0       ->  0
dqmax445 max -0     -0.0     -> -0.0
dqmax446 max -0.100 -0       -> -0
dqmax447 max -0.10  -0.100   -> -0.100
dqmax448 max -0.1   -0.10    -> -0.10
dqmax449 max -1.0   -0.1     -> -0.1
dqmax450 max -1     -1.0     -> -1.0
dqmax451 max -1.1   -1       -> -1
dqmax453 max -Inf   -1.1     -> -1.1
-- largies
dqmax460 max  1000   1E+3    ->  1E+3
dqmax461 max  1E+3   1000    ->  1E+3
dqmax462 max  1000  -1E+3    ->  1000
dqmax463 max  1E+3  -1000    ->  1E+3
dqmax464 max -1000   1E+3    ->  1E+3
dqmax465 max -1E+3   1000    ->  1000
dqmax466 max -1000  -1E+3    -> -1000
dqmax467 max -1E+3  -1000    -> -1000

-- misalignment traps for little-endian
dqmax471 max      1.0       0.1  -> 1.0
dqmax472 max      0.1       1.0  -> 1.0
dqmax473 max     10.0       0.1  -> 10.0
dqmax474 max      0.1      10.0  -> 10.0
dqmax475 max      100       1.0  -> 100
dqmax476 max      1.0       100  -> 100
dqmax477 max     1000      10.0  -> 1000
dqmax478 max     10.0      1000  -> 1000
dqmax479 max    10000     100.0  -> 10000
dqmax480 max    100.0     10000  -> 10000
dqmax481 max   100000    1000.0  -> 100000
dqmax482 max   1000.0    100000  -> 100000
dqmax483 max  1000000   10000.0  -> 1000000
dqmax484 max  10000.0   1000000  -> 1000000

-- subnormals
dqmax510 max  1.00E-6143       0  ->   1.00E-6143
dqmax511 max  0.1E-6143        0  ->   1E-6144    Subnormal
dqmax512 max  0.10E-6143       0  ->   1.0E-6144  Subnormal
dqmax513 max  0.100E-6143      0  ->   1.00E-6144 Subnormal
dqmax514 max  0.01E-6143       0  ->   1E-6145    Subnormal
dqmax515 max  0.999E-6143      0  ->   9.99E-6144 Subnormal
dqmax516 max  0.099E-6143      0  ->   9.9E-6145  Subnormal
dqmax517 max  0.009E-6143      0  ->   9E-6146    Subnormal
dqmax518 max  0.001E-6143      0  ->   1E-6146    Subnormal
dqmax519 max  0.0009E-6143     0  ->   9E-6147    Subnormal
dqmax520 max  0.0001E-6143     0  ->   1E-6147    Subnormal

dqmax530 max -1.00E-6143       0  ->   0
dqmax531 max -0.1E-6143        0  ->   0
dqmax532 max -0.10E-6143       0  ->   0
dqmax533 max -0.100E-6143      0  ->   0
dqmax534 max -0.01E-6143       0  ->   0
dqmax535 max -0.999E-6143      0  ->   0
dqmax536 max -0.099E-6143      0  ->   0
dqmax537 max -0.009E-6143      0  ->   0
dqmax538 max -0.001E-6143      0  ->   0
dqmax539 max -0.0009E-6143     0  ->   0
dqmax540 max -0.0001E-6143     0  ->   0

-- Null tests
dqmax900 max 10  #  -> NaN Invalid_operation
dqmax901 max  # 10  -> NaN Invalid_operation