1 ------------------------------------------------------------------------ 2 -- comparetotal.decTest -- decimal comparison using total ordering -- 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 -- Note that we cannot assume add/subtract tests cover paths adequately, 23 -- here, because the code might be quite different (comparison cannot 24 -- overflow or underflow, so actual subtractions are not necessary). 25 -- Similarly, comparetotal will have some radically different paths 26 -- than compare. 27 28 extended: 1 29 precision: 16 30 rounding: half_up 31 maxExponent: 384 32 minExponent: -383 33 34 -- sanity checks 35 cotx001 comparetotal -2 -2 -> 0 36 cotx002 comparetotal -2 -1 -> -1 37 cotx003 comparetotal -2 0 -> -1 38 cotx004 comparetotal -2 1 -> -1 39 cotx005 comparetotal -2 2 -> -1 40 cotx006 comparetotal -1 -2 -> 1 41 cotx007 comparetotal -1 -1 -> 0 42 cotx008 comparetotal -1 0 -> -1 43 cotx009 comparetotal -1 1 -> -1 44 cotx010 comparetotal -1 2 -> -1 45 cotx011 comparetotal 0 -2 -> 1 46 cotx012 comparetotal 0 -1 -> 1 47 cotx013 comparetotal 0 0 -> 0 48 cotx014 comparetotal 0 1 -> -1 49 cotx015 comparetotal 0 2 -> -1 50 cotx016 comparetotal 1 -2 -> 1 51 cotx017 comparetotal 1 -1 -> 1 52 cotx018 comparetotal 1 0 -> 1 53 cotx019 comparetotal 1 1 -> 0 54 cotx020 comparetotal 1 2 -> -1 55 cotx021 comparetotal 2 -2 -> 1 56 cotx022 comparetotal 2 -1 -> 1 57 cotx023 comparetotal 2 0 -> 1 58 cotx025 comparetotal 2 1 -> 1 59 cotx026 comparetotal 2 2 -> 0 60 61 cotx031 comparetotal -20 -20 -> 0 62 cotx032 comparetotal -20 -10 -> -1 63 cotx033 comparetotal -20 00 -> -1 64 cotx034 comparetotal -20 10 -> -1 65 cotx035 comparetotal -20 20 -> -1 66 cotx036 comparetotal -10 -20 -> 1 67 cotx037 comparetotal -10 -10 -> 0 68 cotx038 comparetotal -10 00 -> -1 69 cotx039 comparetotal -10 10 -> -1 70 cotx040 comparetotal -10 20 -> -1 71 cotx041 comparetotal 00 -20 -> 1 72 cotx042 comparetotal 00 -10 -> 1 73 cotx043 comparetotal 00 00 -> 0 74 cotx044 comparetotal 00 10 -> -1 75 cotx045 comparetotal 00 20 -> -1 76 cotx046 comparetotal 10 -20 -> 1 77 cotx047 comparetotal 10 -10 -> 1 78 cotx048 comparetotal 10 00 -> 1 79 cotx049 comparetotal 10 10 -> 0 80 cotx050 comparetotal 10 20 -> -1 81 cotx051 comparetotal 20 -20 -> 1 82 cotx052 comparetotal 20 -10 -> 1 83 cotx053 comparetotal 20 00 -> 1 84 cotx055 comparetotal 20 10 -> 1 85 cotx056 comparetotal 20 20 -> 0 86 87 cotx061 comparetotal -2.0 -2.0 -> 0 88 cotx062 comparetotal -2.0 -1.0 -> -1 89 cotx063 comparetotal -2.0 0.0 -> -1 90 cotx064 comparetotal -2.0 1.0 -> -1 91 cotx065 comparetotal -2.0 2.0 -> -1 92 cotx066 comparetotal -1.0 -2.0 -> 1 93 cotx067 comparetotal -1.0 -1.0 -> 0 94 cotx068 comparetotal -1.0 0.0 -> -1 95 cotx069 comparetotal -1.0 1.0 -> -1 96 cotx070 comparetotal -1.0 2.0 -> -1 97 cotx071 comparetotal 0.0 -2.0 -> 1 98 cotx072 comparetotal 0.0 -1.0 -> 1 99 cotx073 comparetotal 0.0 0.0 -> 0 100 cotx074 comparetotal 0.0 1.0 -> -1 101 cotx075 comparetotal 0.0 2.0 -> -1 102 cotx076 comparetotal 1.0 -2.0 -> 1 103 cotx077 comparetotal 1.0 -1.0 -> 1 104 cotx078 comparetotal 1.0 0.0 -> 1 105 cotx079 comparetotal 1.0 1.0 -> 0 106 cotx080 comparetotal 1.0 2.0 -> -1 107 cotx081 comparetotal 2.0 -2.0 -> 1 108 cotx082 comparetotal 2.0 -1.0 -> 1 109 cotx083 comparetotal 2.0 0.0 -> 1 110 cotx085 comparetotal 2.0 1.0 -> 1 111 cotx086 comparetotal 2.0 2.0 -> 0 112 113 -- now some cases which might overflow if subtract were used 114 maxexponent: 999999999 115 minexponent: -999999999 116 cotx090 comparetotal 9.99999999E+999999999 9.99999999E+999999999 -> 0 117 cotx091 comparetotal -9.99999999E+999999999 9.99999999E+999999999 -> -1 118 cotx092 comparetotal 9.99999999E+999999999 -9.99999999E+999999999 -> 1 119 cotx093 comparetotal -9.99999999E+999999999 -9.99999999E+999999999 -> 0 120 121 -- Examples 122 cotx094 comparetotal 12.73 127.9 -> -1 123 cotx095 comparetotal -127 12 -> -1 124 cotx096 comparetotal 12.30 12.3 -> -1 125 cotx097 comparetotal 12.30 12.30 -> 0 126 cotx098 comparetotal 12.3 12.300 -> 1 127 cotx099 comparetotal 12.3 NaN -> -1 128 129 -- some differing length/exponent cases 130 -- in this first group, compare would compare all equal 131 cotx100 comparetotal 7.0 7.0 -> 0 132 cotx101 comparetotal 7.0 7 -> -1 133 cotx102 comparetotal 7 7.0 -> 1 134 cotx103 comparetotal 7E+0 7.0 -> 1 135 cotx104 comparetotal 70E-1 7.0 -> 0 136 cotx105 comparetotal 0.7E+1 7 -> 0 137 cotx106 comparetotal 70E-1 7 -> -1 138 cotx107 comparetotal 7.0 7E+0 -> -1 139 cotx108 comparetotal 7.0 70E-1 -> 0 140 cotx109 comparetotal 7 0.7E+1 -> 0 141 cotx110 comparetotal 7 70E-1 -> 1 142 143 cotx120 comparetotal 8.0 7.0 -> 1 144 cotx121 comparetotal 8.0 7 -> 1 145 cotx122 comparetotal 8 7.0 -> 1 146 cotx123 comparetotal 8E+0 7.0 -> 1 147 cotx124 comparetotal 80E-1 7.0 -> 1 148 cotx125 comparetotal 0.8E+1 7 -> 1 149 cotx126 comparetotal 80E-1 7 -> 1 150 cotx127 comparetotal 8.0 7E+0 -> 1 151 cotx128 comparetotal 8.0 70E-1 -> 1 152 cotx129 comparetotal 8 0.7E+1 -> 1 153 cotx130 comparetotal 8 70E-1 -> 1 154 155 cotx140 comparetotal 8.0 9.0 -> -1 156 cotx141 comparetotal 8.0 9 -> -1 157 cotx142 comparetotal 8 9.0 -> -1 158 cotx143 comparetotal 8E+0 9.0 -> -1 159 cotx144 comparetotal 80E-1 9.0 -> -1 160 cotx145 comparetotal 0.8E+1 9 -> -1 161 cotx146 comparetotal 80E-1 9 -> -1 162 cotx147 comparetotal 8.0 9E+0 -> -1 163 cotx148 comparetotal 8.0 90E-1 -> -1 164 cotx149 comparetotal 8 0.9E+1 -> -1 165 cotx150 comparetotal 8 90E-1 -> -1 166 167 -- and again, with sign changes -+ .. 168 cotx200 comparetotal -7.0 7.0 -> -1 169 cotx201 comparetotal -7.0 7 -> -1 170 cotx202 comparetotal -7 7.0 -> -1 171 cotx203 comparetotal -7E+0 7.0 -> -1 172 cotx204 comparetotal -70E-1 7.0 -> -1 173 cotx205 comparetotal -0.7E+1 7 -> -1 174 cotx206 comparetotal -70E-1 7 -> -1 175 cotx207 comparetotal -7.0 7E+0 -> -1 176 cotx208 comparetotal -7.0 70E-1 -> -1 177 cotx209 comparetotal -7 0.7E+1 -> -1 178 cotx210 comparetotal -7 70E-1 -> -1 179 180 cotx220 comparetotal -8.0 7.0 -> -1 181 cotx221 comparetotal -8.0 7 -> -1 182 cotx222 comparetotal -8 7.0 -> -1 183 cotx223 comparetotal -8E+0 7.0 -> -1 184 cotx224 comparetotal -80E-1 7.0 -> -1 185 cotx225 comparetotal -0.8E+1 7 -> -1 186 cotx226 comparetotal -80E-1 7 -> -1 187 cotx227 comparetotal -8.0 7E+0 -> -1 188 cotx228 comparetotal -8.0 70E-1 -> -1 189 cotx229 comparetotal -8 0.7E+1 -> -1 190 cotx230 comparetotal -8 70E-1 -> -1 191 192 cotx240 comparetotal -8.0 9.0 -> -1 193 cotx241 comparetotal -8.0 9 -> -1 194 cotx242 comparetotal -8 9.0 -> -1 195 cotx243 comparetotal -8E+0 9.0 -> -1 196 cotx244 comparetotal -80E-1 9.0 -> -1 197 cotx245 comparetotal -0.8E+1 9 -> -1 198 cotx246 comparetotal -80E-1 9 -> -1 199 cotx247 comparetotal -8.0 9E+0 -> -1 200 cotx248 comparetotal -8.0 90E-1 -> -1 201 cotx249 comparetotal -8 0.9E+1 -> -1 202 cotx250 comparetotal -8 90E-1 -> -1 203 204 -- and again, with sign changes +- .. 205 cotx300 comparetotal 7.0 -7.0 -> 1 206 cotx301 comparetotal 7.0 -7 -> 1 207 cotx302 comparetotal 7 -7.0 -> 1 208 cotx303 comparetotal 7E+0 -7.0 -> 1 209 cotx304 comparetotal 70E-1 -7.0 -> 1 210 cotx305 comparetotal .7E+1 -7 -> 1 211 cotx306 comparetotal 70E-1 -7 -> 1 212 cotx307 comparetotal 7.0 -7E+0 -> 1 213 cotx308 comparetotal 7.0 -70E-1 -> 1 214 cotx309 comparetotal 7 -.7E+1 -> 1 215 cotx310 comparetotal 7 -70E-1 -> 1 216 217 cotx320 comparetotal 8.0 -7.0 -> 1 218 cotx321 comparetotal 8.0 -7 -> 1 219 cotx322 comparetotal 8 -7.0 -> 1 220 cotx323 comparetotal 8E+0 -7.0 -> 1 221 cotx324 comparetotal 80E-1 -7.0 -> 1 222 cotx325 comparetotal .8E+1 -7 -> 1 223 cotx326 comparetotal 80E-1 -7 -> 1 224 cotx327 comparetotal 8.0 -7E+0 -> 1 225 cotx328 comparetotal 8.0 -70E-1 -> 1 226 cotx329 comparetotal 8 -.7E+1 -> 1 227 cotx330 comparetotal 8 -70E-1 -> 1 228 229 cotx340 comparetotal 8.0 -9.0 -> 1 230 cotx341 comparetotal 8.0 -9 -> 1 231 cotx342 comparetotal 8 -9.0 -> 1 232 cotx343 comparetotal 8E+0 -9.0 -> 1 233 cotx344 comparetotal 80E-1 -9.0 -> 1 234 cotx345 comparetotal .8E+1 -9 -> 1 235 cotx346 comparetotal 80E-1 -9 -> 1 236 cotx347 comparetotal 8.0 -9E+0 -> 1 237 cotx348 comparetotal 8.0 -90E-1 -> 1 238 cotx349 comparetotal 8 -.9E+1 -> 1 239 cotx350 comparetotal 8 -90E-1 -> 1 240 241 -- and again, with sign changes -- .. 242 cotx400 comparetotal -7.0 -7.0 -> 0 243 cotx401 comparetotal -7.0 -7 -> 1 244 cotx402 comparetotal -7 -7.0 -> -1 245 cotx403 comparetotal -7E+0 -7.0 -> -1 246 cotx404 comparetotal -70E-1 -7.0 -> 0 247 cotx405 comparetotal -.7E+1 -7 -> 0 248 cotx406 comparetotal -70E-1 -7 -> 1 249 cotx407 comparetotal -7.0 -7E+0 -> 1 250 cotx408 comparetotal -7.0 -70E-1 -> 0 251 cotx409 comparetotal -7 -.7E+1 -> 0 252 cotx410 comparetotal -7 -70E-1 -> -1 253 254 cotx420 comparetotal -8.0 -7.0 -> -1 255 cotx421 comparetotal -8.0 -7 -> -1 256 cotx422 comparetotal -8 -7.0 -> -1 257 cotx423 comparetotal -8E+0 -7.0 -> -1 258 cotx424 comparetotal -80E-1 -7.0 -> -1 259 cotx425 comparetotal -.8E+1 -7 -> -1 260 cotx426 comparetotal -80E-1 -7 -> -1 261 cotx427 comparetotal -8.0 -7E+0 -> -1 262 cotx428 comparetotal -8.0 -70E-1 -> -1 263 cotx429 comparetotal -8 -.7E+1 -> -1 264 cotx430 comparetotal -8 -70E-1 -> -1 265 266 cotx440 comparetotal -8.0 -9.0 -> 1 267 cotx441 comparetotal -8.0 -9 -> 1 268 cotx442 comparetotal -8 -9.0 -> 1 269 cotx443 comparetotal -8E+0 -9.0 -> 1 270 cotx444 comparetotal -80E-1 -9.0 -> 1 271 cotx445 comparetotal -.8E+1 -9 -> 1 272 cotx446 comparetotal -80E-1 -9 -> 1 273 cotx447 comparetotal -8.0 -9E+0 -> 1 274 cotx448 comparetotal -8.0 -90E-1 -> 1 275 cotx449 comparetotal -8 -.9E+1 -> 1 276 cotx450 comparetotal -8 -90E-1 -> 1 277 278 279 -- testcases that subtract to lots of zeros at boundaries [pgr] 280 precision: 40 281 cotx470 comparetotal 123.4560000000000000E789 123.456E789 -> -1 282 cotx471 comparetotal 123.456000000000000E-89 123.456E-89 -> -1 283 cotx472 comparetotal 123.45600000000000E789 123.456E789 -> -1 284 cotx473 comparetotal 123.4560000000000E-89 123.456E-89 -> -1 285 cotx474 comparetotal 123.456000000000E789 123.456E789 -> -1 286 cotx475 comparetotal 123.45600000000E-89 123.456E-89 -> -1 287 cotx476 comparetotal 123.4560000000E789 123.456E789 -> -1 288 cotx477 comparetotal 123.456000000E-89 123.456E-89 -> -1 289 cotx478 comparetotal 123.45600000E789 123.456E789 -> -1 290 cotx479 comparetotal 123.4560000E-89 123.456E-89 -> -1 291 cotx480 comparetotal 123.456000E789 123.456E789 -> -1 292 cotx481 comparetotal 123.45600E-89 123.456E-89 -> -1 293 cotx482 comparetotal 123.4560E789 123.456E789 -> -1 294 cotx483 comparetotal 123.456E-89 123.456E-89 -> 0 295 cotx484 comparetotal 123.456E-89 123.4560000000000000E-89 -> 1 296 cotx485 comparetotal 123.456E789 123.456000000000000E789 -> 1 297 cotx486 comparetotal 123.456E-89 123.45600000000000E-89 -> 1 298 cotx487 comparetotal 123.456E789 123.4560000000000E789 -> 1 299 cotx488 comparetotal 123.456E-89 123.456000000000E-89 -> 1 300 cotx489 comparetotal 123.456E789 123.45600000000E789 -> 1 301 cotx490 comparetotal 123.456E-89 123.4560000000E-89 -> 1 302 cotx491 comparetotal 123.456E789 123.456000000E789 -> 1 303 cotx492 comparetotal 123.456E-89 123.45600000E-89 -> 1 304 cotx493 comparetotal 123.456E789 123.4560000E789 -> 1 305 cotx494 comparetotal 123.456E-89 123.456000E-89 -> 1 306 cotx495 comparetotal 123.456E789 123.45600E789 -> 1 307 cotx496 comparetotal 123.456E-89 123.4560E-89 -> 1 308 cotx497 comparetotal 123.456E789 123.456E789 -> 0 309 310 -- wide-ranging, around precision; signs equal 311 precision: 9 312 cotx500 comparetotal 1 1E-15 -> 1 313 cotx501 comparetotal 1 1E-14 -> 1 314 cotx502 comparetotal 1 1E-13 -> 1 315 cotx503 comparetotal 1 1E-12 -> 1 316 cotx504 comparetotal 1 1E-11 -> 1 317 cotx505 comparetotal 1 1E-10 -> 1 318 cotx506 comparetotal 1 1E-9 -> 1 319 cotx507 comparetotal 1 1E-8 -> 1 320 cotx508 comparetotal 1 1E-7 -> 1 321 cotx509 comparetotal 1 1E-6 -> 1 322 cotx510 comparetotal 1 1E-5 -> 1 323 cotx511 comparetotal 1 1E-4 -> 1 324 cotx512 comparetotal 1 1E-3 -> 1 325 cotx513 comparetotal 1 1E-2 -> 1 326 cotx514 comparetotal 1 1E-1 -> 1 327 cotx515 comparetotal 1 1E-0 -> 0 328 cotx516 comparetotal 1 1E+1 -> -1 329 cotx517 comparetotal 1 1E+2 -> -1 330 cotx518 comparetotal 1 1E+3 -> -1 331 cotx519 comparetotal 1 1E+4 -> -1 332 cotx521 comparetotal 1 1E+5 -> -1 333 cotx522 comparetotal 1 1E+6 -> -1 334 cotx523 comparetotal 1 1E+7 -> -1 335 cotx524 comparetotal 1 1E+8 -> -1 336 cotx525 comparetotal 1 1E+9 -> -1 337 cotx526 comparetotal 1 1E+10 -> -1 338 cotx527 comparetotal 1 1E+11 -> -1 339 cotx528 comparetotal 1 1E+12 -> -1 340 cotx529 comparetotal 1 1E+13 -> -1 341 cotx530 comparetotal 1 1E+14 -> -1 342 cotx531 comparetotal 1 1E+15 -> -1 343 -- LR swap 344 cotx540 comparetotal 1E-15 1 -> -1 345 cotx541 comparetotal 1E-14 1 -> -1 346 cotx542 comparetotal 1E-13 1 -> -1 347 cotx543 comparetotal 1E-12 1 -> -1 348 cotx544 comparetotal 1E-11 1 -> -1 349 cotx545 comparetotal 1E-10 1 -> -1 350 cotx546 comparetotal 1E-9 1 -> -1 351 cotx547 comparetotal 1E-8 1 -> -1 352 cotx548 comparetotal 1E-7 1 -> -1 353 cotx549 comparetotal 1E-6 1 -> -1 354 cotx550 comparetotal 1E-5 1 -> -1 355 cotx551 comparetotal 1E-4 1 -> -1 356 cotx552 comparetotal 1E-3 1 -> -1 357 cotx553 comparetotal 1E-2 1 -> -1 358 cotx554 comparetotal 1E-1 1 -> -1 359 cotx555 comparetotal 1E-0 1 -> 0 360 cotx556 comparetotal 1E+1 1 -> 1 361 cotx557 comparetotal 1E+2 1 -> 1 362 cotx558 comparetotal 1E+3 1 -> 1 363 cotx559 comparetotal 1E+4 1 -> 1 364 cotx561 comparetotal 1E+5 1 -> 1 365 cotx562 comparetotal 1E+6 1 -> 1 366 cotx563 comparetotal 1E+7 1 -> 1 367 cotx564 comparetotal 1E+8 1 -> 1 368 cotx565 comparetotal 1E+9 1 -> 1 369 cotx566 comparetotal 1E+10 1 -> 1 370 cotx567 comparetotal 1E+11 1 -> 1 371 cotx568 comparetotal 1E+12 1 -> 1 372 cotx569 comparetotal 1E+13 1 -> 1 373 cotx570 comparetotal 1E+14 1 -> 1 374 cotx571 comparetotal 1E+15 1 -> 1 375 -- similar with an useful coefficient, one side only 376 cotx580 comparetotal 0.000000987654321 1E-15 -> 1 377 cotx581 comparetotal 0.000000987654321 1E-14 -> 1 378 cotx582 comparetotal 0.000000987654321 1E-13 -> 1 379 cotx583 comparetotal 0.000000987654321 1E-12 -> 1 380 cotx584 comparetotal 0.000000987654321 1E-11 -> 1 381 cotx585 comparetotal 0.000000987654321 1E-10 -> 1 382 cotx586 comparetotal 0.000000987654321 1E-9 -> 1 383 cotx587 comparetotal 0.000000987654321 1E-8 -> 1 384 cotx588 comparetotal 0.000000987654321 1E-7 -> 1 385 cotx589 comparetotal 0.000000987654321 1E-6 -> -1 386 cotx590 comparetotal 0.000000987654321 1E-5 -> -1 387 cotx591 comparetotal 0.000000987654321 1E-4 -> -1 388 cotx592 comparetotal 0.000000987654321 1E-3 -> -1 389 cotx593 comparetotal 0.000000987654321 1E-2 -> -1 390 cotx594 comparetotal 0.000000987654321 1E-1 -> -1 391 cotx595 comparetotal 0.000000987654321 1E-0 -> -1 392 cotx596 comparetotal 0.000000987654321 1E+1 -> -1 393 cotx597 comparetotal 0.000000987654321 1E+2 -> -1 394 cotx598 comparetotal 0.000000987654321 1E+3 -> -1 395 cotx599 comparetotal 0.000000987654321 1E+4 -> -1 396 397 -- check some unit-y traps 398 precision: 20 399 cotx600 comparetotal 12 12.2345 -> -1 400 cotx601 comparetotal 12.0 12.2345 -> -1 401 cotx602 comparetotal 12.00 12.2345 -> -1 402 cotx603 comparetotal 12.000 12.2345 -> -1 403 cotx604 comparetotal 12.0000 12.2345 -> -1 404 cotx605 comparetotal 12.00000 12.2345 -> -1 405 cotx606 comparetotal 12.000000 12.2345 -> -1 406 cotx607 comparetotal 12.0000000 12.2345 -> -1 407 cotx608 comparetotal 12.00000000 12.2345 -> -1 408 cotx609 comparetotal 12.000000000 12.2345 -> -1 409 cotx610 comparetotal 12.1234 12 -> 1 410 cotx611 comparetotal 12.1234 12.0 -> 1 411 cotx612 comparetotal 12.1234 12.00 -> 1 412 cotx613 comparetotal 12.1234 12.000 -> 1 413 cotx614 comparetotal 12.1234 12.0000 -> 1 414 cotx615 comparetotal 12.1234 12.00000 -> 1 415 cotx616 comparetotal 12.1234 12.000000 -> 1 416 cotx617 comparetotal 12.1234 12.0000000 -> 1 417 cotx618 comparetotal 12.1234 12.00000000 -> 1 418 cotx619 comparetotal 12.1234 12.000000000 -> 1 419 cotx620 comparetotal -12 -12.2345 -> 1 420 cotx621 comparetotal -12.0 -12.2345 -> 1 421 cotx622 comparetotal -12.00 -12.2345 -> 1 422 cotx623 comparetotal -12.000 -12.2345 -> 1 423 cotx624 comparetotal -12.0000 -12.2345 -> 1 424 cotx625 comparetotal -12.00000 -12.2345 -> 1 425 cotx626 comparetotal -12.000000 -12.2345 -> 1 426 cotx627 comparetotal -12.0000000 -12.2345 -> 1 427 cotx628 comparetotal -12.00000000 -12.2345 -> 1 428 cotx629 comparetotal -12.000000000 -12.2345 -> 1 429 cotx630 comparetotal -12.1234 -12 -> -1 430 cotx631 comparetotal -12.1234 -12.0 -> -1 431 cotx632 comparetotal -12.1234 -12.00 -> -1 432 cotx633 comparetotal -12.1234 -12.000 -> -1 433 cotx634 comparetotal -12.1234 -12.0000 -> -1 434 cotx635 comparetotal -12.1234 -12.00000 -> -1 435 cotx636 comparetotal -12.1234 -12.000000 -> -1 436 cotx637 comparetotal -12.1234 -12.0000000 -> -1 437 cotx638 comparetotal -12.1234 -12.00000000 -> -1 438 cotx639 comparetotal -12.1234 -12.000000000 -> -1 439 precision: 9 440 441 -- extended zeros 442 cotx640 comparetotal 0 0 -> 0 443 cotx641 comparetotal 0 -0 -> 1 444 cotx642 comparetotal 0 -0.0 -> 1 445 cotx643 comparetotal 0 0.0 -> 1 446 cotx644 comparetotal -0 0 -> -1 447 cotx645 comparetotal -0 -0 -> 0 448 cotx646 comparetotal -0 -0.0 -> -1 449 cotx647 comparetotal -0 0.0 -> -1 450 cotx648 comparetotal 0.0 0 -> -1 451 cotx649 comparetotal 0.0 -0 -> 1 452 cotx650 comparetotal 0.0 -0.0 -> 1 453 cotx651 comparetotal 0.0 0.0 -> 0 454 cotx652 comparetotal -0.0 0 -> -1 455 cotx653 comparetotal -0.0 -0 -> 1 456 cotx654 comparetotal -0.0 -0.0 -> 0 457 cotx655 comparetotal -0.0 0.0 -> -1 458 459 cotx656 comparetotal -0E1 0.0 -> -1 460 cotx657 comparetotal -0E2 0.0 -> -1 461 cotx658 comparetotal 0E1 0.0 -> 1 462 cotx659 comparetotal 0E2 0.0 -> 1 463 cotx660 comparetotal -0E1 0 -> -1 464 cotx661 comparetotal -0E2 0 -> -1 465 cotx662 comparetotal 0E1 0 -> 1 466 cotx663 comparetotal 0E2 0 -> 1 467 cotx664 comparetotal -0E1 -0E1 -> 0 468 cotx665 comparetotal -0E2 -0E1 -> -1 469 cotx666 comparetotal 0E1 -0E1 -> 1 470 cotx667 comparetotal 0E2 -0E1 -> 1 471 cotx668 comparetotal -0E1 -0E2 -> 1 472 cotx669 comparetotal -0E2 -0E2 -> 0 473 cotx670 comparetotal 0E1 -0E2 -> 1 474 cotx671 comparetotal 0E2 -0E2 -> 1 475 cotx672 comparetotal -0E1 0E1 -> -1 476 cotx673 comparetotal -0E2 0E1 -> -1 477 cotx674 comparetotal 0E1 0E1 -> 0 478 cotx675 comparetotal 0E2 0E1 -> 1 479 cotx676 comparetotal -0E1 0E2 -> -1 480 cotx677 comparetotal -0E2 0E2 -> -1 481 cotx678 comparetotal 0E1 0E2 -> -1 482 cotx679 comparetotal 0E2 0E2 -> 0 483 484 -- trailing zeros; unit-y 485 precision: 20 486 cotx680 comparetotal 12 12 -> 0 487 cotx681 comparetotal 12 12.0 -> 1 488 cotx682 comparetotal 12 12.00 -> 1 489 cotx683 comparetotal 12 12.000 -> 1 490 cotx684 comparetotal 12 12.0000 -> 1 491 cotx685 comparetotal 12 12.00000 -> 1 492 cotx686 comparetotal 12 12.000000 -> 1 493 cotx687 comparetotal 12 12.0000000 -> 1 494 cotx688 comparetotal 12 12.00000000 -> 1 495 cotx689 comparetotal 12 12.000000000 -> 1 496 cotx690 comparetotal 12 12 -> 0 497 cotx691 comparetotal 12.0 12 -> -1 498 cotx692 comparetotal 12.00 12 -> -1 499 cotx693 comparetotal 12.000 12 -> -1 500 cotx694 comparetotal 12.0000 12 -> -1 501 cotx695 comparetotal 12.00000 12 -> -1 502 cotx696 comparetotal 12.000000 12 -> -1 503 cotx697 comparetotal 12.0000000 12 -> -1 504 cotx698 comparetotal 12.00000000 12 -> -1 505 cotx699 comparetotal 12.000000000 12 -> -1 506 507 -- long operand checks 508 maxexponent: 999 509 minexponent: -999 510 precision: 9 511 cotx701 comparetotal 12345678000 1 -> 1 512 cotx702 comparetotal 1 12345678000 -> -1 513 cotx703 comparetotal 1234567800 1 -> 1 514 cotx704 comparetotal 1 1234567800 -> -1 515 cotx705 comparetotal 1234567890 1 -> 1 516 cotx706 comparetotal 1 1234567890 -> -1 517 cotx707 comparetotal 1234567891 1 -> 1 518 cotx708 comparetotal 1 1234567891 -> -1 519 cotx709 comparetotal 12345678901 1 -> 1 520 cotx710 comparetotal 1 12345678901 -> -1 521 cotx711 comparetotal 1234567896 1 -> 1 522 cotx712 comparetotal 1 1234567896 -> -1 523 cotx713 comparetotal -1234567891 1 -> -1 524 cotx714 comparetotal 1 -1234567891 -> 1 525 cotx715 comparetotal -12345678901 1 -> -1 526 cotx716 comparetotal 1 -12345678901 -> 1 527 cotx717 comparetotal -1234567896 1 -> -1 528 cotx718 comparetotal 1 -1234567896 -> 1 529 530 precision: 15 531 -- same with plenty of precision 532 cotx721 comparetotal 12345678000 1 -> 1 533 cotx722 comparetotal 1 12345678000 -> -1 534 cotx723 comparetotal 1234567800 1 -> 1 535 cotx724 comparetotal 1 1234567800 -> -1 536 cotx725 comparetotal 1234567890 1 -> 1 537 cotx726 comparetotal 1 1234567890 -> -1 538 cotx727 comparetotal 1234567891 1 -> 1 539 cotx728 comparetotal 1 1234567891 -> -1 540 cotx729 comparetotal 12345678901 1 -> 1 541 cotx730 comparetotal 1 12345678901 -> -1 542 cotx731 comparetotal 1234567896 1 -> 1 543 cotx732 comparetotal 1 1234567896 -> -1 544 545 -- residue cases 546 precision: 5 547 cotx740 comparetotal 1 0.9999999 -> 1 548 cotx741 comparetotal 1 0.999999 -> 1 549 cotx742 comparetotal 1 0.99999 -> 1 550 cotx743 comparetotal 1 1.0000 -> 1 551 cotx744 comparetotal 1 1.00001 -> -1 552 cotx745 comparetotal 1 1.000001 -> -1 553 cotx746 comparetotal 1 1.0000001 -> -1 554 cotx750 comparetotal 0.9999999 1 -> -1 555 cotx751 comparetotal 0.999999 1 -> -1 556 cotx752 comparetotal 0.99999 1 -> -1 557 cotx753 comparetotal 1.0000 1 -> -1 558 cotx754 comparetotal 1.00001 1 -> 1 559 cotx755 comparetotal 1.000001 1 -> 1 560 cotx756 comparetotal 1.0000001 1 -> 1 561 562 -- a selection of longies 563 cotx760 comparetotal -36852134.84194296250843579428931 -5830629.8347085025808756560357940 -> -1 564 cotx761 comparetotal -36852134.84194296250843579428931 -36852134.84194296250843579428931 -> 0 565 cotx762 comparetotal -36852134.94194296250843579428931 -36852134.84194296250843579428931 -> -1 566 cotx763 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 567 -- precisions above or below the difference should have no effect 568 precision: 11 569 cotx764 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 570 precision: 10 571 cotx765 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 572 precision: 9 573 cotx766 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 574 precision: 8 575 cotx767 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 576 precision: 7 577 cotx768 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 578 precision: 6 579 cotx769 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 580 precision: 5 581 cotx770 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 582 precision: 4 583 cotx771 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 584 precision: 3 585 cotx772 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 586 precision: 2 587 cotx773 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 588 precision: 1 589 cotx774 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1 590 591 -- Specials 592 precision: 9 593 cotx780 comparetotal Inf -Inf -> 1 594 cotx781 comparetotal Inf -1000 -> 1 595 cotx782 comparetotal Inf -1 -> 1 596 cotx783 comparetotal Inf -0 -> 1 597 cotx784 comparetotal Inf 0 -> 1 598 cotx785 comparetotal Inf 1 -> 1 599 cotx786 comparetotal Inf 1000 -> 1 600 cotx787 comparetotal Inf Inf -> 0 601 cotx788 comparetotal -1000 Inf -> -1 602 cotx789 comparetotal -Inf Inf -> -1 603 cotx790 comparetotal -1 Inf -> -1 604 cotx791 comparetotal -0 Inf -> -1 605 cotx792 comparetotal 0 Inf -> -1 606 cotx793 comparetotal 1 Inf -> -1 607 cotx794 comparetotal 1000 Inf -> -1 608 cotx795 comparetotal Inf Inf -> 0 609 610 cotx800 comparetotal -Inf -Inf -> 0 611 cotx801 comparetotal -Inf -1000 -> -1 612 cotx802 comparetotal -Inf -1 -> -1 613 cotx803 comparetotal -Inf -0 -> -1 614 cotx804 comparetotal -Inf 0 -> -1 615 cotx805 comparetotal -Inf 1 -> -1 616 cotx806 comparetotal -Inf 1000 -> -1 617 cotx807 comparetotal -Inf Inf -> -1 618 cotx808 comparetotal -Inf -Inf -> 0 619 cotx809 comparetotal -1000 -Inf -> 1 620 cotx810 comparetotal -1 -Inf -> 1 621 cotx811 comparetotal -0 -Inf -> 1 622 cotx812 comparetotal 0 -Inf -> 1 623 cotx813 comparetotal 1 -Inf -> 1 624 cotx814 comparetotal 1000 -Inf -> 1 625 cotx815 comparetotal Inf -Inf -> 1 626 627 cotx821 comparetotal NaN -Inf -> 1 628 cotx822 comparetotal NaN -1000 -> 1 629 cotx823 comparetotal NaN -1 -> 1 630 cotx824 comparetotal NaN -0 -> 1 631 cotx825 comparetotal NaN 0 -> 1 632 cotx826 comparetotal NaN 1 -> 1 633 cotx827 comparetotal NaN 1000 -> 1 634 cotx828 comparetotal NaN Inf -> 1 635 cotx829 comparetotal NaN NaN -> 0 636 cotx830 comparetotal -Inf NaN -> -1 637 cotx831 comparetotal -1000 NaN -> -1 638 cotx832 comparetotal -1 NaN -> -1 639 cotx833 comparetotal -0 NaN -> -1 640 cotx834 comparetotal 0 NaN -> -1 641 cotx835 comparetotal 1 NaN -> -1 642 cotx836 comparetotal 1000 NaN -> -1 643 cotx837 comparetotal Inf NaN -> -1 644 cotx838 comparetotal -NaN -NaN -> 0 645 cotx839 comparetotal +NaN -NaN -> 1 646 cotx840 comparetotal -NaN +NaN -> -1 647 648 cotx841 comparetotal sNaN -sNaN -> 1 649 cotx842 comparetotal sNaN -NaN -> 1 650 cotx843 comparetotal sNaN -Inf -> 1 651 cotx844 comparetotal sNaN -1000 -> 1 652 cotx845 comparetotal sNaN -1 -> 1 653 cotx846 comparetotal sNaN -0 -> 1 654 cotx847 comparetotal sNaN 0 -> 1 655 cotx848 comparetotal sNaN 1 -> 1 656 cotx849 comparetotal sNaN 1000 -> 1 657 cotx850 comparetotal sNaN NaN -> -1 658 cotx851 comparetotal sNaN sNaN -> 0 659 660 cotx852 comparetotal -sNaN sNaN -> -1 661 cotx853 comparetotal -NaN sNaN -> -1 662 cotx854 comparetotal -Inf sNaN -> -1 663 cotx855 comparetotal -1000 sNaN -> -1 664 cotx856 comparetotal -1 sNaN -> -1 665 cotx857 comparetotal -0 sNaN -> -1 666 cotx858 comparetotal 0 sNaN -> -1 667 cotx859 comparetotal 1 sNaN -> -1 668 cotx860 comparetotal 1000 sNaN -> -1 669 cotx861 comparetotal Inf sNaN -> -1 670 cotx862 comparetotal NaN sNaN -> 1 671 cotx863 comparetotal sNaN sNaN -> 0 672 673 cotx871 comparetotal -sNaN -sNaN -> 0 674 cotx872 comparetotal -sNaN -NaN -> 1 675 cotx873 comparetotal -sNaN -Inf -> -1 676 cotx874 comparetotal -sNaN -1000 -> -1 677 cotx875 comparetotal -sNaN -1 -> -1 678 cotx876 comparetotal -sNaN -0 -> -1 679 cotx877 comparetotal -sNaN 0 -> -1 680 cotx878 comparetotal -sNaN 1 -> -1 681 cotx879 comparetotal -sNaN 1000 -> -1 682 cotx880 comparetotal -sNaN NaN -> -1 683 cotx881 comparetotal -sNaN sNaN -> -1 684 685 cotx882 comparetotal -sNaN -sNaN -> 0 686 cotx883 comparetotal -NaN -sNaN -> -1 687 cotx884 comparetotal -Inf -sNaN -> 1 688 cotx885 comparetotal -1000 -sNaN -> 1 689 cotx886 comparetotal -1 -sNaN -> 1 690 cotx887 comparetotal -0 -sNaN -> 1 691 cotx888 comparetotal 0 -sNaN -> 1 692 cotx889 comparetotal 1 -sNaN -> 1 693 cotx890 comparetotal 1000 -sNaN -> 1 694 cotx891 comparetotal Inf -sNaN -> 1 695 cotx892 comparetotal NaN -sNaN -> 1 696 cotx893 comparetotal sNaN -sNaN -> 1 697 698 -- NaNs with payload 699 cotx960 comparetotal NaN9 -Inf -> 1 700 cotx961 comparetotal NaN8 999 -> 1 701 cotx962 comparetotal NaN77 Inf -> 1 702 cotx963 comparetotal -NaN67 NaN5 -> -1 703 cotx964 comparetotal -Inf -NaN4 -> 1 704 cotx965 comparetotal -999 -NaN33 -> 1 705 cotx966 comparetotal Inf NaN2 -> -1 706 707 cotx970 comparetotal -NaN41 -NaN42 -> 1 708 cotx971 comparetotal +NaN41 -NaN42 -> 1 709 cotx972 comparetotal -NaN41 +NaN42 -> -1 710 cotx973 comparetotal +NaN41 +NaN42 -> -1 711 cotx974 comparetotal -NaN42 -NaN01 -> -1 712 cotx975 comparetotal +NaN42 -NaN01 -> 1 713 cotx976 comparetotal -NaN42 +NaN01 -> -1 714 cotx977 comparetotal +NaN42 +NaN01 -> 1 715 716 cotx980 comparetotal -sNaN771 -sNaN772 -> 1 717 cotx981 comparetotal +sNaN771 -sNaN772 -> 1 718 cotx982 comparetotal -sNaN771 +sNaN772 -> -1 719 cotx983 comparetotal +sNaN771 +sNaN772 -> -1 720 cotx984 comparetotal -sNaN772 -sNaN771 -> -1 721 cotx985 comparetotal +sNaN772 -sNaN771 -> 1 722 cotx986 comparetotal -sNaN772 +sNaN771 -> -1 723 cotx987 comparetotal +sNaN772 +sNaN771 -> 1 724 725 cotx991 comparetotal -sNaN99 -Inf -> -1 726 cotx992 comparetotal sNaN98 -11 -> 1 727 cotx993 comparetotal sNaN97 NaN -> -1 728 cotx994 comparetotal sNaN16 sNaN94 -> -1 729 cotx995 comparetotal NaN85 sNaN83 -> 1 730 cotx996 comparetotal -Inf sNaN92 -> -1 731 cotx997 comparetotal 088 sNaN81 -> -1 732 cotx998 comparetotal Inf sNaN90 -> -1 733 cotx999 comparetotal NaN -sNaN89 -> 1 734 735 -- overflow and underflow tests .. subnormal results now allowed 736 maxExponent: 999999999 737 minexponent: -999999999 738 cotx1080 comparetotal +1.23456789012345E-0 9E+999999999 -> -1 739 cotx1081 comparetotal 9E+999999999 +1.23456789012345E-0 -> 1 740 cotx1082 comparetotal +0.100 9E-999999999 -> 1 741 cotx1083 comparetotal 9E-999999999 +0.100 -> -1 742 cotx1085 comparetotal -1.23456789012345E-0 9E+999999999 -> -1 743 cotx1086 comparetotal 9E+999999999 -1.23456789012345E-0 -> 1 744 cotx1087 comparetotal -0.100 9E-999999999 -> -1 745 cotx1088 comparetotal 9E-999999999 -0.100 -> 1 746 747 cotx1089 comparetotal 1e-599999999 1e-400000001 -> -1 748 cotx1090 comparetotal 1e-599999999 1e-400000000 -> -1 749 cotx1091 comparetotal 1e-600000000 1e-400000000 -> -1 750 cotx1092 comparetotal 9e-999999998 0.01 -> -1 751 cotx1093 comparetotal 9e-999999998 0.1 -> -1 752 cotx1094 comparetotal 0.01 9e-999999998 -> 1 753 cotx1095 comparetotal 1e599999999 1e400000001 -> 1 754 cotx1096 comparetotal 1e599999999 1e400000000 -> 1 755 cotx1097 comparetotal 1e600000000 1e400000000 -> 1 756 cotx1098 comparetotal 9e999999998 100 -> 1 757 cotx1099 comparetotal 9e999999998 10 -> 1 758 cotx1100 comparetotal 100 9e999999998 -> -1 759 -- signs 760 cotx1101 comparetotal 1e+777777777 1e+411111111 -> 1 761 cotx1102 comparetotal 1e+777777777 -1e+411111111 -> 1 762 cotx1103 comparetotal -1e+777777777 1e+411111111 -> -1 763 cotx1104 comparetotal -1e+777777777 -1e+411111111 -> -1 764 cotx1105 comparetotal 1e-777777777 1e-411111111 -> -1 765 cotx1106 comparetotal 1e-777777777 -1e-411111111 -> 1 766 cotx1107 comparetotal -1e-777777777 1e-411111111 -> -1 767 cotx1108 comparetotal -1e-777777777 -1e-411111111 -> 1 768 769 -- spread zeros 770 cotx1110 comparetotal 0E-383 0 -> -1 771 cotx1111 comparetotal 0E-383 -0 -> 1 772 cotx1112 comparetotal -0E-383 0 -> -1 773 cotx1113 comparetotal -0E-383 -0 -> 1 774 cotx1114 comparetotal 0E-383 0E+384 -> -1 775 cotx1115 comparetotal 0E-383 -0E+384 -> 1 776 cotx1116 comparetotal -0E-383 0E+384 -> -1 777 cotx1117 comparetotal -0E-383 -0E+384 -> 1 778 cotx1118 comparetotal 0 0E+384 -> -1 779 cotx1119 comparetotal 0 -0E+384 -> 1 780 cotx1120 comparetotal -0 0E+384 -> -1 781 cotx1121 comparetotal -0 -0E+384 -> 1 782 783 cotx1130 comparetotal 0E+384 0 -> 1 784 cotx1131 comparetotal 0E+384 -0 -> 1 785 cotx1132 comparetotal -0E+384 0 -> -1 786 cotx1133 comparetotal -0E+384 -0 -> -1 787 cotx1134 comparetotal 0E+384 0E-383 -> 1 788 cotx1135 comparetotal 0E+384 -0E-383 -> 1 789 cotx1136 comparetotal -0E+384 0E-383 -> -1 790 cotx1137 comparetotal -0E+384 -0E-383 -> -1 791 cotx1138 comparetotal 0 0E-383 -> 1 792 cotx1139 comparetotal 0 -0E-383 -> 1 793 cotx1140 comparetotal -0 0E-383 -> -1 794 cotx1141 comparetotal -0 -0E-383 -> -1 795 796 -- Null tests 797 cotx9990 comparetotal 10 # -> NaN Invalid_operation 798 cotx9991 comparetotal # 10 -> NaN Invalid_operation 799