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
|
------------------------------------------------------------------------
-- dqMinMag.decTest -- decQuad minnummag --
-- 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
dqmng001 minmag -2 -2 -> -2
dqmng002 minmag -2 -1 -> -1
dqmng003 minmag -2 0 -> 0
dqmng004 minmag -2 1 -> 1
dqmng005 minmag -2 2 -> -2
dqmng006 minmag -1 -2 -> -1
dqmng007 minmag -1 -1 -> -1
dqmng008 minmag -1 0 -> 0
dqmng009 minmag -1 1 -> -1
dqmng010 minmag -1 2 -> -1
dqmng011 minmag 0 -2 -> 0
dqmng012 minmag 0 -1 -> 0
dqmng013 minmag 0 0 -> 0
dqmng014 minmag 0 1 -> 0
dqmng015 minmag 0 2 -> 0
dqmng016 minmag 1 -2 -> 1
dqmng017 minmag 1 -1 -> -1
dqmng018 minmag 1 0 -> 0
dqmng019 minmag 1 1 -> 1
dqmng020 minmag 1 2 -> 1
dqmng021 minmag 2 -2 -> -2
dqmng022 minmag 2 -1 -> -1
dqmng023 minmag 2 0 -> 0
dqmng025 minmag 2 1 -> 1
dqmng026 minmag 2 2 -> 2
-- extended zeros
dqmng030 minmag 0 0 -> 0
dqmng031 minmag 0 -0 -> -0
dqmng032 minmag 0 -0.0 -> -0.0
dqmng033 minmag 0 0.0 -> 0.0
dqmng034 minmag -0 0 -> -0
dqmng035 minmag -0 -0 -> -0
dqmng036 minmag -0 -0.0 -> -0
dqmng037 minmag -0 0.0 -> -0
dqmng038 minmag 0.0 0 -> 0.0
dqmng039 minmag 0.0 -0 -> -0
dqmng040 minmag 0.0 -0.0 -> -0.0
dqmng041 minmag 0.0 0.0 -> 0.0
dqmng042 minmag -0.0 0 -> -0.0
dqmng043 minmag -0.0 -0 -> -0
dqmng044 minmag -0.0 -0.0 -> -0.0
dqmng045 minmag -0.0 0.0 -> -0.0
dqmng046 minmag 0E1 -0E1 -> -0E+1
dqmng047 minmag -0E1 0E2 -> -0E+1
dqmng048 minmag 0E2 0E1 -> 0E+1
dqmng049 minmag 0E1 0E2 -> 0E+1
dqmng050 minmag -0E3 -0E2 -> -0E+3
dqmng051 minmag -0E2 -0E3 -> -0E+3
-- Specials
dqmng090 minmag Inf -Inf -> -Infinity
dqmng091 minmag Inf -1000 -> -1000
dqmng092 minmag Inf -1 -> -1
dqmng093 minmag Inf -0 -> -0
dqmng094 minmag Inf 0 -> 0
dqmng095 minmag Inf 1 -> 1
dqmng096 minmag Inf 1000 -> 1000
dqmng097 minmag Inf Inf -> Infinity
dqmng098 minmag -1000 Inf -> -1000
dqmng099 minmag -Inf Inf -> -Infinity
dqmng100 minmag -1 Inf -> -1
dqmng101 minmag -0 Inf -> -0
dqmng102 minmag 0 Inf -> 0
dqmng103 minmag 1 Inf -> 1
dqmng104 minmag 1000 Inf -> 1000
dqmng105 minmag Inf Inf -> Infinity
dqmng120 minmag -Inf -Inf -> -Infinity
dqmng121 minmag -Inf -1000 -> -1000
dqmng122 minmag -Inf -1 -> -1
dqmng123 minmag -Inf -0 -> -0
dqmng124 minmag -Inf 0 -> 0
dqmng125 minmag -Inf 1 -> 1
dqmng126 minmag -Inf 1000 -> 1000
dqmng127 minmag -Inf Inf -> -Infinity
dqmng128 minmag -Inf -Inf -> -Infinity
dqmng129 minmag -1000 -Inf -> -1000
dqmng130 minmag -1 -Inf -> -1
dqmng131 minmag -0 -Inf -> -0
dqmng132 minmag 0 -Inf -> 0
dqmng133 minmag 1 -Inf -> 1
dqmng134 minmag 1000 -Inf -> 1000
dqmng135 minmag Inf -Inf -> -Infinity
-- 2004.08.02 754r chooses number over NaN in mixed cases
dqmng141 minmag NaN -Inf -> -Infinity
dqmng142 minmag NaN -1000 -> -1000
dqmng143 minmag NaN -1 -> -1
dqmng144 minmag NaN -0 -> -0
dqmng145 minmag NaN 0 -> 0
dqmng146 minmag NaN 1 -> 1
dqmng147 minmag NaN 1000 -> 1000
dqmng148 minmag NaN Inf -> Infinity
dqmng149 minmag NaN NaN -> NaN
dqmng150 minmag -Inf NaN -> -Infinity
dqmng151 minmag -1000 NaN -> -1000
dqmng152 minmag -1 -NaN -> -1
dqmng153 minmag -0 NaN -> -0
dqmng154 minmag 0 -NaN -> 0
dqmng155 minmag 1 NaN -> 1
dqmng156 minmag 1000 NaN -> 1000
dqmng157 minmag Inf NaN -> Infinity
dqmng161 minmag sNaN -Inf -> NaN Invalid_operation
dqmng162 minmag sNaN -1000 -> NaN Invalid_operation
dqmng163 minmag sNaN -1 -> NaN Invalid_operation
dqmng164 minmag sNaN -0 -> NaN Invalid_operation
dqmng165 minmag -sNaN 0 -> -NaN Invalid_operation
dqmng166 minmag -sNaN 1 -> -NaN Invalid_operation
dqmng167 minmag sNaN 1000 -> NaN Invalid_operation
dqmng168 minmag sNaN NaN -> NaN Invalid_operation
dqmng169 minmag sNaN sNaN -> NaN Invalid_operation
dqmng170 minmag NaN sNaN -> NaN Invalid_operation
dqmng171 minmag -Inf sNaN -> NaN Invalid_operation
dqmng172 minmag -1000 sNaN -> NaN Invalid_operation
dqmng173 minmag -1 sNaN -> NaN Invalid_operation
dqmng174 minmag -0 sNaN -> NaN Invalid_operation
dqmng175 minmag 0 sNaN -> NaN Invalid_operation
dqmng176 minmag 1 sNaN -> NaN Invalid_operation
dqmng177 minmag 1000 sNaN -> NaN Invalid_operation
dqmng178 minmag Inf sNaN -> NaN Invalid_operation
dqmng179 minmag NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dqmng181 minmag NaN9 -Inf -> -Infinity
dqmng182 minmag -NaN8 9990 -> 9990
dqmng183 minmag NaN71 Inf -> Infinity
dqmng184 minmag NaN1 NaN54 -> NaN1
dqmng185 minmag NaN22 -NaN53 -> NaN22
dqmng186 minmag -NaN3 NaN6 -> -NaN3
dqmng187 minmag -NaN44 NaN7 -> -NaN44
dqmng188 minmag -Inf NaN41 -> -Infinity
dqmng189 minmag -9999 -NaN33 -> -9999
dqmng190 minmag Inf NaN2 -> Infinity
dqmng191 minmag sNaN99 -Inf -> NaN99 Invalid_operation
dqmng192 minmag sNaN98 -11 -> NaN98 Invalid_operation
dqmng193 minmag -sNaN97 NaN8 -> -NaN97 Invalid_operation
dqmng194 minmag sNaN69 sNaN94 -> NaN69 Invalid_operation
dqmng195 minmag NaN95 sNaN93 -> NaN93 Invalid_operation
dqmng196 minmag -Inf sNaN92 -> NaN92 Invalid_operation
dqmng197 minmag 088 sNaN91 -> NaN91 Invalid_operation
dqmng198 minmag Inf -sNaN90 -> -NaN90 Invalid_operation
dqmng199 minmag NaN sNaN86 -> NaN86 Invalid_operation
-- old rounding checks
dqmng221 minmag -12345678000 1 -> 1
dqmng222 minmag 1 -12345678000 -> 1
dqmng223 minmag -1234567800 1 -> 1
dqmng224 minmag 1 -1234567800 -> 1
dqmng225 minmag -1234567890 1 -> 1
dqmng226 minmag 1 -1234567890 -> 1
dqmng227 minmag -1234567891 1 -> 1
dqmng228 minmag 1 -1234567891 -> 1
dqmng229 minmag -12345678901 1 -> 1
dqmng230 minmag 1 -12345678901 -> 1
dqmng231 minmag -1234567896 1 -> 1
dqmng232 minmag 1 -1234567896 -> 1
dqmng233 minmag 1234567891 1 -> 1
dqmng234 minmag 1 1234567891 -> 1
dqmng235 minmag 12345678901 1 -> 1
dqmng236 minmag 1 12345678901 -> 1
dqmng237 minmag 1234567896 1 -> 1
dqmng238 minmag 1 1234567896 -> 1
-- from examples
dqmng280 minmag '3' '2' -> '2'
dqmng281 minmag '-10' '3' -> '3'
dqmng282 minmag '1.0' '1' -> '1.0'
dqmng283 minmag '1' '1.0' -> '1.0'
dqmng284 minmag '7' 'NaN' -> '7'
-- expanded list from min/max 754r purple prose
-- [explicit tests for exponent ordering]
dqmng401 minmag Inf 1.1 -> 1.1
dqmng402 minmag 1.1 1 -> 1
dqmng403 minmag 1 1.0 -> 1.0
dqmng404 minmag 1.0 0.1 -> 0.1
dqmng405 minmag 0.1 0.10 -> 0.10
dqmng406 minmag 0.10 0.100 -> 0.100
dqmng407 minmag 0.10 0 -> 0
dqmng408 minmag 0 0.0 -> 0.0
dqmng409 minmag 0.0 -0 -> -0
dqmng410 minmag 0.0 -0.0 -> -0.0
dqmng411 minmag 0.00 -0.0 -> -0.0
dqmng412 minmag 0.0 -0.00 -> -0.00
dqmng413 minmag 0 -0.0 -> -0.0
dqmng414 minmag 0 -0 -> -0
dqmng415 minmag -0.0 -0 -> -0
dqmng416 minmag -0 -0.100 -> -0
dqmng417 minmag -0.100 -0.10 -> -0.10
dqmng418 minmag -0.10 -0.1 -> -0.1
dqmng419 minmag -0.1 -1.0 -> -0.1
dqmng420 minmag -1.0 -1 -> -1
dqmng421 minmag -1 -1.1 -> -1
dqmng423 minmag -1.1 -Inf -> -1.1
-- same with operands reversed
dqmng431 minmag 1.1 Inf -> 1.1
dqmng432 minmag 1 1.1 -> 1
dqmng433 minmag 1.0 1 -> 1.0
dqmng434 minmag 0.1 1.0 -> 0.1
dqmng435 minmag 0.10 0.1 -> 0.10
dqmng436 minmag 0.100 0.10 -> 0.100
dqmng437 minmag 0 0.10 -> 0
dqmng438 minmag 0.0 0 -> 0.0
dqmng439 minmag -0 0.0 -> -0
dqmng440 minmag -0.0 0.0 -> -0.0
dqmng441 minmag -0.0 0.00 -> -0.0
dqmng442 minmag -0.00 0.0 -> -0.00
dqmng443 minmag -0.0 0 -> -0.0
dqmng444 minmag -0 0 -> -0
dqmng445 minmag -0 -0.0 -> -0
dqmng446 minmag -0.100 -0 -> -0
dqmng447 minmag -0.10 -0.100 -> -0.10
dqmng448 minmag -0.1 -0.10 -> -0.1
dqmng449 minmag -1.0 -0.1 -> -0.1
dqmng450 minmag -1 -1.0 -> -1
dqmng451 minmag -1.1 -1 -> -1
dqmng453 minmag -Inf -1.1 -> -1.1
-- largies
dqmng460 minmag 1000 1E+3 -> 1000
dqmng461 minmag 1E+3 1000 -> 1000
dqmng462 minmag 1000 -1E+3 -> -1E+3
dqmng463 minmag 1E+3 -384 -> -384
dqmng464 minmag -384 1E+3 -> -384
dqmng465 minmag -1E+3 1000 -> -1E+3
dqmng466 minmag -384 -1E+3 -> -384
dqmng467 minmag -1E+3 -384 -> -384
-- subnormals
dqmng510 minmag 1.00E-6143 0 -> 0
dqmng511 minmag 0.1E-6143 0 -> 0
dqmng512 minmag 0.10E-6143 0 -> 0
dqmng513 minmag 0.100E-6143 0 -> 0
dqmng514 minmag 0.01E-6143 0 -> 0
dqmng515 minmag 0.999E-6143 0 -> 0
dqmng516 minmag 0.099E-6143 0 -> 0
dqmng517 minmag 0.009E-6143 0 -> 0
dqmng518 minmag 0.001E-6143 0 -> 0
dqmng519 minmag 0.0009E-6143 0 -> 0
dqmng520 minmag 0.0001E-6143 0 -> 0
dqmng530 minmag -1.00E-6143 0 -> 0
dqmng531 minmag -0.1E-6143 0 -> 0
dqmng532 minmag -0.10E-6143 0 -> 0
dqmng533 minmag -0.100E-6143 0 -> 0
dqmng534 minmag -0.01E-6143 0 -> 0
dqmng535 minmag -0.999E-6143 0 -> 0
dqmng536 minmag -0.099E-6143 0 -> 0
dqmng537 minmag -0.009E-6143 0 -> 0
dqmng538 minmag -0.001E-6143 0 -> 0
dqmng539 minmag -0.0009E-6143 0 -> 0
dqmng540 minmag -0.0001E-6143 0 -> 0
-- Null tests
dqmng900 minmag 10 # -> NaN Invalid_operation
dqmng901 minmag # 10 -> NaN Invalid_operation
|