1 ------------------------------------------------------------------------ 2 -- dqMaxMag.decTest -- decQuad maxnummag -- 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 (a] uk.ibm.com -- 19 ------------------------------------------------------------------------ 20 version: 2.59 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 dqmxg001 maxmag -2 -2 -> -2 33 dqmxg002 maxmag -2 -1 -> -2 34 dqmxg003 maxmag -2 0 -> -2 35 dqmxg004 maxmag -2 1 -> -2 36 dqmxg005 maxmag -2 2 -> 2 37 dqmxg006 maxmag -1 -2 -> -2 38 dqmxg007 maxmag -1 -1 -> -1 39 dqmxg008 maxmag -1 0 -> -1 40 dqmxg009 maxmag -1 1 -> 1 41 dqmxg010 maxmag -1 2 -> 2 42 dqmxg011 maxmag 0 -2 -> -2 43 dqmxg012 maxmag 0 -1 -> -1 44 dqmxg013 maxmag 0 0 -> 0 45 dqmxg014 maxmag 0 1 -> 1 46 dqmxg015 maxmag 0 2 -> 2 47 dqmxg016 maxmag 1 -2 -> -2 48 dqmxg017 maxmag 1 -1 -> 1 49 dqmxg018 maxmag 1 0 -> 1 50 dqmxg019 maxmag 1 1 -> 1 51 dqmxg020 maxmag 1 2 -> 2 52 dqmxg021 maxmag 2 -2 -> 2 53 dqmxg022 maxmag 2 -1 -> 2 54 dqmxg023 maxmag 2 0 -> 2 55 dqmxg025 maxmag 2 1 -> 2 56 dqmxg026 maxmag 2 2 -> 2 57 58 -- extended zeros 59 dqmxg030 maxmag 0 0 -> 0 60 dqmxg031 maxmag 0 -0 -> 0 61 dqmxg032 maxmag 0 -0.0 -> 0 62 dqmxg033 maxmag 0 0.0 -> 0 63 dqmxg034 maxmag -0 0 -> 0 -- note: -0 = 0, but 0 chosen 64 dqmxg035 maxmag -0 -0 -> -0 65 dqmxg036 maxmag -0 -0.0 -> -0.0 66 dqmxg037 maxmag -0 0.0 -> 0.0 67 dqmxg038 maxmag 0.0 0 -> 0 68 dqmxg039 maxmag 0.0 -0 -> 0.0 69 dqmxg040 maxmag 0.0 -0.0 -> 0.0 70 dqmxg041 maxmag 0.0 0.0 -> 0.0 71 dqmxg042 maxmag -0.0 0 -> 0 72 dqmxg043 maxmag -0.0 -0 -> -0.0 73 dqmxg044 maxmag -0.0 -0.0 -> -0.0 74 dqmxg045 maxmag -0.0 0.0 -> 0.0 75 76 dqmxg050 maxmag -0E1 0E1 -> 0E+1 77 dqmxg051 maxmag -0E2 0E2 -> 0E+2 78 dqmxg052 maxmag -0E2 0E1 -> 0E+1 79 dqmxg053 maxmag -0E1 0E2 -> 0E+2 80 dqmxg054 maxmag 0E1 -0E1 -> 0E+1 81 dqmxg055 maxmag 0E2 -0E2 -> 0E+2 82 dqmxg056 maxmag 0E2 -0E1 -> 0E+2 83 dqmxg057 maxmag 0E1 -0E2 -> 0E+1 84 85 dqmxg058 maxmag 0E1 0E1 -> 0E+1 86 dqmxg059 maxmag 0E2 0E2 -> 0E+2 87 dqmxg060 maxmag 0E2 0E1 -> 0E+2 88 dqmxg061 maxmag 0E1 0E2 -> 0E+2 89 dqmxg062 maxmag -0E1 -0E1 -> -0E+1 90 dqmxg063 maxmag -0E2 -0E2 -> -0E+2 91 dqmxg064 maxmag -0E2 -0E1 -> -0E+1 92 dqmxg065 maxmag -0E1 -0E2 -> -0E+1 93 94 -- Specials 95 dqmxg090 maxmag Inf -Inf -> Infinity 96 dqmxg091 maxmag Inf -1000 -> Infinity 97 dqmxg092 maxmag Inf -1 -> Infinity 98 dqmxg093 maxmag Inf -0 -> Infinity 99 dqmxg094 maxmag Inf 0 -> Infinity 100 dqmxg095 maxmag Inf 1 -> Infinity 101 dqmxg096 maxmag Inf 1000 -> Infinity 102 dqmxg097 maxmag Inf Inf -> Infinity 103 dqmxg098 maxmag -1000 Inf -> Infinity 104 dqmxg099 maxmag -Inf Inf -> Infinity 105 dqmxg100 maxmag -1 Inf -> Infinity 106 dqmxg101 maxmag -0 Inf -> Infinity 107 dqmxg102 maxmag 0 Inf -> Infinity 108 dqmxg103 maxmag 1 Inf -> Infinity 109 dqmxg104 maxmag 1000 Inf -> Infinity 110 dqmxg105 maxmag Inf Inf -> Infinity 111 112 dqmxg120 maxmag -Inf -Inf -> -Infinity 113 dqmxg121 maxmag -Inf -1000 -> -Infinity 114 dqmxg122 maxmag -Inf -1 -> -Infinity 115 dqmxg123 maxmag -Inf -0 -> -Infinity 116 dqmxg124 maxmag -Inf 0 -> -Infinity 117 dqmxg125 maxmag -Inf 1 -> -Infinity 118 dqmxg126 maxmag -Inf 1000 -> -Infinity 119 dqmxg127 maxmag -Inf Inf -> Infinity 120 dqmxg128 maxmag -Inf -Inf -> -Infinity 121 dqmxg129 maxmag -1000 -Inf -> -Infinity 122 dqmxg130 maxmag -1 -Inf -> -Infinity 123 dqmxg131 maxmag -0 -Inf -> -Infinity 124 dqmxg132 maxmag 0 -Inf -> -Infinity 125 dqmxg133 maxmag 1 -Inf -> -Infinity 126 dqmxg134 maxmag 1000 -Inf -> -Infinity 127 dqmxg135 maxmag Inf -Inf -> Infinity 128 129 -- 2004.08.02 754r chooses number over NaN in mixed cases 130 dqmxg141 maxmag NaN -Inf -> -Infinity 131 dqmxg142 maxmag NaN -1000 -> -1000 132 dqmxg143 maxmag NaN -1 -> -1 133 dqmxg144 maxmag NaN -0 -> -0 134 dqmxg145 maxmag NaN 0 -> 0 135 dqmxg146 maxmag NaN 1 -> 1 136 dqmxg147 maxmag NaN 1000 -> 1000 137 dqmxg148 maxmag NaN Inf -> Infinity 138 dqmxg149 maxmag NaN NaN -> NaN 139 dqmxg150 maxmag -Inf NaN -> -Infinity 140 dqmxg151 maxmag -1000 NaN -> -1000 141 dqmxg152 maxmag -1 NaN -> -1 142 dqmxg153 maxmag -0 NaN -> -0 143 dqmxg154 maxmag 0 NaN -> 0 144 dqmxg155 maxmag 1 NaN -> 1 145 dqmxg156 maxmag 1000 NaN -> 1000 146 dqmxg157 maxmag Inf NaN -> Infinity 147 148 dqmxg161 maxmag sNaN -Inf -> NaN Invalid_operation 149 dqmxg162 maxmag sNaN -1000 -> NaN Invalid_operation 150 dqmxg163 maxmag sNaN -1 -> NaN Invalid_operation 151 dqmxg164 maxmag sNaN -0 -> NaN Invalid_operation 152 dqmxg165 maxmag sNaN 0 -> NaN Invalid_operation 153 dqmxg166 maxmag sNaN 1 -> NaN Invalid_operation 154 dqmxg167 maxmag sNaN 1000 -> NaN Invalid_operation 155 dqmxg168 maxmag sNaN NaN -> NaN Invalid_operation 156 dqmxg169 maxmag sNaN sNaN -> NaN Invalid_operation 157 dqmxg170 maxmag NaN sNaN -> NaN Invalid_operation 158 dqmxg171 maxmag -Inf sNaN -> NaN Invalid_operation 159 dqmxg172 maxmag -1000 sNaN -> NaN Invalid_operation 160 dqmxg173 maxmag -1 sNaN -> NaN Invalid_operation 161 dqmxg174 maxmag -0 sNaN -> NaN Invalid_operation 162 dqmxg175 maxmag 0 sNaN -> NaN Invalid_operation 163 dqmxg176 maxmag 1 sNaN -> NaN Invalid_operation 164 dqmxg177 maxmag 1000 sNaN -> NaN Invalid_operation 165 dqmxg178 maxmag Inf sNaN -> NaN Invalid_operation 166 dqmxg179 maxmag NaN sNaN -> NaN Invalid_operation 167 168 -- propagating NaNs 169 dqmxg181 maxmag NaN9 -Inf -> -Infinity 170 dqmxg182 maxmag NaN8 9 -> 9 171 dqmxg183 maxmag -NaN7 Inf -> Infinity 172 173 dqmxg184 maxmag -NaN1 NaN11 -> -NaN1 174 dqmxg185 maxmag NaN2 NaN12 -> NaN2 175 dqmxg186 maxmag -NaN13 -NaN7 -> -NaN13 176 dqmxg187 maxmag NaN14 -NaN5 -> NaN14 177 178 dqmxg188 maxmag -Inf NaN4 -> -Infinity 179 dqmxg189 maxmag -9 -NaN3 -> -9 180 dqmxg190 maxmag Inf NaN2 -> Infinity 181 182 dqmxg191 maxmag sNaN99 -Inf -> NaN99 Invalid_operation 183 dqmxg192 maxmag sNaN98 -1 -> NaN98 Invalid_operation 184 dqmxg193 maxmag -sNaN97 NaN -> -NaN97 Invalid_operation 185 dqmxg194 maxmag sNaN96 sNaN94 -> NaN96 Invalid_operation 186 dqmxg195 maxmag NaN95 sNaN93 -> NaN93 Invalid_operation 187 dqmxg196 maxmag -Inf sNaN92 -> NaN92 Invalid_operation 188 dqmxg197 maxmag 0 sNaN91 -> NaN91 Invalid_operation 189 dqmxg198 maxmag Inf -sNaN90 -> -NaN90 Invalid_operation 190 dqmxg199 maxmag NaN sNaN89 -> NaN89 Invalid_operation 191 192 -- old rounding checks 193 dqmxg221 maxmag 12345678000 1 -> 12345678000 194 dqmxg222 maxmag 1 12345678000 -> 12345678000 195 dqmxg223 maxmag 1234567800 1 -> 1234567800 196 dqmxg224 maxmag 1 1234567800 -> 1234567800 197 dqmxg225 maxmag 1234567890 1 -> 1234567890 198 dqmxg226 maxmag 1 1234567890 -> 1234567890 199 dqmxg227 maxmag 1234567891 1 -> 1234567891 200 dqmxg228 maxmag 1 1234567891 -> 1234567891 201 dqmxg229 maxmag 12345678901 1 -> 12345678901 202 dqmxg230 maxmag 1 12345678901 -> 12345678901 203 dqmxg231 maxmag 1234567896 1 -> 1234567896 204 dqmxg232 maxmag 1 1234567896 -> 1234567896 205 dqmxg233 maxmag -1234567891 1 -> -1234567891 206 dqmxg234 maxmag 1 -1234567891 -> -1234567891 207 dqmxg235 maxmag -12345678901 1 -> -12345678901 208 dqmxg236 maxmag 1 -12345678901 -> -12345678901 209 dqmxg237 maxmag -1234567896 1 -> -1234567896 210 dqmxg238 maxmag 1 -1234567896 -> -1234567896 211 212 -- from examples 213 dqmxg280 maxmag '3' '2' -> '3' 214 dqmxg281 maxmag '-10' '3' -> '-10' 215 dqmxg282 maxmag '1.0' '1' -> '1' 216 dqmxg283 maxmag '1' '1.0' -> '1' 217 dqmxg284 maxmag '7' 'NaN' -> '7' 218 219 -- expanded list from min/max 754r purple prose 220 -- [explicit tests for exponent ordering] 221 dqmxg401 maxmag Inf 1.1 -> Infinity 222 dqmxg402 maxmag 1.1 1 -> 1.1 223 dqmxg403 maxmag 1 1.0 -> 1 224 dqmxg404 maxmag 1.0 0.1 -> 1.0 225 dqmxg405 maxmag 0.1 0.10 -> 0.1 226 dqmxg406 maxmag 0.10 0.100 -> 0.10 227 dqmxg407 maxmag 0.10 0 -> 0.10 228 dqmxg408 maxmag 0 0.0 -> 0 229 dqmxg409 maxmag 0.0 -0 -> 0.0 230 dqmxg410 maxmag 0.0 -0.0 -> 0.0 231 dqmxg411 maxmag 0.00 -0.0 -> 0.00 232 dqmxg412 maxmag 0.0 -0.00 -> 0.0 233 dqmxg413 maxmag 0 -0.0 -> 0 234 dqmxg414 maxmag 0 -0 -> 0 235 dqmxg415 maxmag -0.0 -0 -> -0.0 236 dqmxg416 maxmag -0 -0.100 -> -0.100 237 dqmxg417 maxmag -0.100 -0.10 -> -0.100 238 dqmxg418 maxmag -0.10 -0.1 -> -0.10 239 dqmxg419 maxmag -0.1 -1.0 -> -1.0 240 dqmxg420 maxmag -1.0 -1 -> -1.0 241 dqmxg421 maxmag -1 -1.1 -> -1.1 242 dqmxg423 maxmag -1.1 -Inf -> -Infinity 243 -- same with operands reversed 244 dqmxg431 maxmag 1.1 Inf -> Infinity 245 dqmxg432 maxmag 1 1.1 -> 1.1 246 dqmxg433 maxmag 1.0 1 -> 1 247 dqmxg434 maxmag 0.1 1.0 -> 1.0 248 dqmxg435 maxmag 0.10 0.1 -> 0.1 249 dqmxg436 maxmag 0.100 0.10 -> 0.10 250 dqmxg437 maxmag 0 0.10 -> 0.10 251 dqmxg438 maxmag 0.0 0 -> 0 252 dqmxg439 maxmag -0 0.0 -> 0.0 253 dqmxg440 maxmag -0.0 0.0 -> 0.0 254 dqmxg441 maxmag -0.0 0.00 -> 0.00 255 dqmxg442 maxmag -0.00 0.0 -> 0.0 256 dqmxg443 maxmag -0.0 0 -> 0 257 dqmxg444 maxmag -0 0 -> 0 258 dqmxg445 maxmag -0 -0.0 -> -0.0 259 dqmxg446 maxmag -0.100 -0 -> -0.100 260 dqmxg447 maxmag -0.10 -0.100 -> -0.100 261 dqmxg448 maxmag -0.1 -0.10 -> -0.10 262 dqmxg449 maxmag -1.0 -0.1 -> -1.0 263 dqmxg450 maxmag -1 -1.0 -> -1.0 264 dqmxg451 maxmag -1.1 -1 -> -1.1 265 dqmxg453 maxmag -Inf -1.1 -> -Infinity 266 -- largies 267 dqmxg460 maxmag 1000 1E+3 -> 1E+3 268 dqmxg461 maxmag 1E+3 1000 -> 1E+3 269 dqmxg462 maxmag 1000 -1E+3 -> 1000 270 dqmxg463 maxmag 1E+3 -1000 -> 1E+3 271 dqmxg464 maxmag -1000 1E+3 -> 1E+3 272 dqmxg465 maxmag -1E+3 1000 -> 1000 273 dqmxg466 maxmag -1000 -1E+3 -> -1000 274 dqmxg467 maxmag -1E+3 -1000 -> -1000 275 276 -- subnormals 277 dqmxg510 maxmag 1.00E-6143 0 -> 1.00E-6143 278 dqmxg511 maxmag 0.1E-6143 0 -> 1E-6144 Subnormal 279 dqmxg512 maxmag 0.10E-6143 0 -> 1.0E-6144 Subnormal 280 dqmxg513 maxmag 0.100E-6143 0 -> 1.00E-6144 Subnormal 281 dqmxg514 maxmag 0.01E-6143 0 -> 1E-6145 Subnormal 282 dqmxg515 maxmag 0.999E-6143 0 -> 9.99E-6144 Subnormal 283 dqmxg516 maxmag 0.099E-6143 0 -> 9.9E-6145 Subnormal 284 dqmxg517 maxmag 0.009E-6143 0 -> 9E-6146 Subnormal 285 dqmxg518 maxmag 0.001E-6143 0 -> 1E-6146 Subnormal 286 dqmxg519 maxmag 0.0009E-6143 0 -> 9E-6147 Subnormal 287 dqmxg520 maxmag 0.0001E-6143 0 -> 1E-6147 Subnormal 288 289 dqmxg530 maxmag -1.00E-6143 0 -> -1.00E-6143 290 dqmxg531 maxmag -0.1E-6143 0 -> -1E-6144 Subnormal 291 dqmxg532 maxmag -0.10E-6143 0 -> -1.0E-6144 Subnormal 292 dqmxg533 maxmag -0.100E-6143 0 -> -1.00E-6144 Subnormal 293 dqmxg534 maxmag -0.01E-6143 0 -> -1E-6145 Subnormal 294 dqmxg535 maxmag -0.999E-6143 0 -> -9.99E-6144 Subnormal 295 dqmxg536 maxmag -0.099E-6143 0 -> -9.9E-6145 Subnormal 296 dqmxg537 maxmag -0.009E-6143 0 -> -9E-6146 Subnormal 297 dqmxg538 maxmag -0.001E-6143 0 -> -1E-6146 Subnormal 298 dqmxg539 maxmag -0.0009E-6143 0 -> -9E-6147 Subnormal 299 dqmxg540 maxmag -0.0001E-6143 0 -> -1E-6147 Subnormal 300 301 -- Null tests 302 dqmxg900 maxmag 10 # -> NaN Invalid_operation 303 dqmxg901 maxmag # 10 -> NaN Invalid_operation 304 305