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
|