dqRemainder.decTest 26.3 KB
Newer Older
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 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597
------------------------------------------------------------------------
-- dqRemainder.decTest -- decQuad remainder                           --
-- 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.59

extended:    1
clamp:       1
precision:   34
maxExponent: 6144
minExponent: -6143
rounding:    half_even

-- sanity checks (as base, above)
dqrem001 remainder  1     1    ->  0
dqrem002 remainder  2     1    ->  0
dqrem003 remainder  1     2    ->  1
dqrem004 remainder  2     2    ->  0
dqrem005 remainder  0     1    ->  0
dqrem006 remainder  0     2    ->  0
dqrem007 remainder  1     3    ->  1
dqrem008 remainder  2     3    ->  2
dqrem009 remainder  3     3    ->  0

dqrem010 remainder  2.4   1    ->  0.4
dqrem011 remainder  2.4   -1   ->  0.4
dqrem012 remainder  -2.4  1    ->  -0.4
dqrem013 remainder  -2.4  -1   ->  -0.4
dqrem014 remainder  2.40  1    ->  0.40
dqrem015 remainder  2.400 1    ->  0.400
dqrem016 remainder  2.4   2    ->  0.4
dqrem017 remainder  2.400 2    ->  0.400
dqrem018 remainder  2.    2    ->  0
dqrem019 remainder  20    20   ->  0

dqrem020 remainder  187   187    ->  0
dqrem021 remainder  5     2      ->  1
dqrem022 remainder  5     2.0    ->  1.0
dqrem023 remainder  5     2.000  ->  1.000
dqrem024 remainder  5     0.200  ->  0.000
dqrem025 remainder  5     0.200  ->  0.000

dqrem030 remainder  1     2      ->  1
dqrem031 remainder  1     4      ->  1
dqrem032 remainder  1     8      ->  1

dqrem033 remainder  1     16     ->  1
dqrem034 remainder  1     32     ->  1
dqrem035 remainder  1     64     ->  1
dqrem040 remainder  1    -2      ->  1
dqrem041 remainder  1    -4      ->  1
dqrem042 remainder  1    -8      ->  1
dqrem043 remainder  1    -16     ->  1
dqrem044 remainder  1    -32     ->  1
dqrem045 remainder  1    -64     ->  1
dqrem050 remainder -1     2      ->  -1
dqrem051 remainder -1     4      ->  -1
dqrem052 remainder -1     8      ->  -1
dqrem053 remainder -1     16     ->  -1
dqrem054 remainder -1     32     ->  -1
dqrem055 remainder -1     64     ->  -1
dqrem060 remainder -1    -2      ->  -1
dqrem061 remainder -1    -4      ->  -1
dqrem062 remainder -1    -8      ->  -1
dqrem063 remainder -1    -16     ->  -1
dqrem064 remainder -1    -32     ->  -1
dqrem065 remainder -1    -64     ->  -1

dqrem066 remainder  999999999     1  -> 0
dqrem067 remainder  999999999.4   1  -> 0.4
dqrem068 remainder  999999999.5   1  -> 0.5
dqrem069 remainder  999999999.9   1  -> 0.9
dqrem070 remainder  999999999.999 1  -> 0.999
dqrem071 remainder  999999.999999 1  -> 0.999999
dqrem072 remainder  9             1  -> 0

dqrem080 remainder  0.            1  -> 0
dqrem081 remainder  .0            1  -> 0.0
dqrem082 remainder  0.00          1  -> 0.00
dqrem083 remainder  0.00E+9       1  -> 0
dqrem084 remainder  0.00E+3       1  -> 0
dqrem085 remainder  0.00E+2       1  -> 0
dqrem086 remainder  0.00E+1       1  -> 0.0
dqrem087 remainder  0.00E+0       1  -> 0.00
dqrem088 remainder  0.00E-0       1  -> 0.00
dqrem089 remainder  0.00E-1       1  -> 0.000
dqrem090 remainder  0.00E-2       1  -> 0.0000
dqrem091 remainder  0.00E-3       1  -> 0.00000
dqrem092 remainder  0.00E-4       1  -> 0.000000
dqrem093 remainder  0.00E-5       1  -> 0E-7
dqrem094 remainder  0.00E-6       1  -> 0E-8
dqrem095 remainder  0.0000E-50    1  -> 0E-54

-- Various flavours of remainder by 0
dqrem101 remainder  0       0   -> NaN Division_undefined
dqrem102 remainder  0      -0   -> NaN Division_undefined
dqrem103 remainder -0       0   -> NaN Division_undefined
dqrem104 remainder -0      -0   -> NaN Division_undefined
dqrem105 remainder  0.0E5   0   -> NaN Division_undefined
dqrem106 remainder  0.000   0   -> NaN Division_undefined
-- [Some think this next group should be Division_by_zero exception, but
-- IEEE 854 is explicit that it is Invalid operation .. for
-- remainder-near, anyway]
dqrem107 remainder  0.0001  0   -> NaN Invalid_operation
dqrem108 remainder  0.01    0   -> NaN Invalid_operation
dqrem109 remainder  0.1     0   -> NaN Invalid_operation
dqrem110 remainder  1       0   -> NaN Invalid_operation
dqrem111 remainder  1       0.0 -> NaN Invalid_operation
dqrem112 remainder 10       0.0 -> NaN Invalid_operation
dqrem113 remainder 1E+100   0.0 -> NaN Invalid_operation
dqrem114 remainder 1E+380   0   -> NaN Invalid_operation
dqrem115 remainder  0.0001 -0   -> NaN Invalid_operation
dqrem116 remainder  0.01   -0   -> NaN Invalid_operation
dqrem119 remainder  0.1    -0   -> NaN Invalid_operation
dqrem120 remainder  1      -0   -> NaN Invalid_operation
dqrem121 remainder  1      -0.0 -> NaN Invalid_operation
dqrem122 remainder 10      -0.0 -> NaN Invalid_operation
dqrem123 remainder 1E+100  -0.0 -> NaN Invalid_operation
dqrem124 remainder 1E+384  -0   -> NaN Invalid_operation
-- and zeros on left
dqrem130 remainder  0      1   ->  0
dqrem131 remainder  0     -1   ->  0
dqrem132 remainder  0.0    1   ->  0.0
dqrem133 remainder  0.0   -1   ->  0.0
dqrem134 remainder -0      1   -> -0
dqrem135 remainder -0     -1   -> -0
dqrem136 remainder -0.0    1   -> -0.0
dqrem137 remainder -0.0   -1   -> -0.0

-- 0.5ers
dqrem143 remainder   0.5  2     ->  0.5
dqrem144 remainder   0.5  2.1   ->  0.5
dqrem145 remainder   0.5  2.01  ->  0.50
dqrem146 remainder   0.5  2.001 ->  0.500
dqrem147 remainder   0.50 2     ->  0.50
dqrem148 remainder   0.50 2.01  ->  0.50
dqrem149 remainder   0.50 2.001 ->  0.500

-- steadies
dqrem150 remainder  1  1   -> 0
dqrem151 remainder  1  2   -> 1
dqrem152 remainder  1  3   -> 1
dqrem153 remainder  1  4   -> 1
dqrem154 remainder  1  5   -> 1
dqrem155 remainder  1  6   -> 1
dqrem156 remainder  1  7   -> 1
dqrem157 remainder  1  8   -> 1
dqrem158 remainder  1  9   -> 1
dqrem159 remainder  1  10  -> 1
dqrem160 remainder  1  1   -> 0
dqrem161 remainder  2  1   -> 0
dqrem162 remainder  3  1   -> 0
dqrem163 remainder  4  1   -> 0
dqrem164 remainder  5  1   -> 0
dqrem165 remainder  6  1   -> 0
dqrem166 remainder  7  1   -> 0
dqrem167 remainder  8  1   -> 0
dqrem168 remainder  9  1   -> 0
dqrem169 remainder  10 1   -> 0

-- some differences from remainderNear
dqrem171 remainder   0.4  1.020 ->  0.400
dqrem172 remainder   0.50 1.020 ->  0.500
dqrem173 remainder   0.51 1.020 ->  0.510
dqrem174 remainder   0.52 1.020 ->  0.520
dqrem175 remainder   0.6  1.020 ->  0.600

-- More flavours of remainder by 0
dqrem201 remainder  0      0   -> NaN Division_undefined
dqrem202 remainder  0.0E5  0   -> NaN Division_undefined
dqrem203 remainder  0.000  0   -> NaN Division_undefined
dqrem204 remainder  0.0001 0   -> NaN Invalid_operation
dqrem205 remainder  0.01   0   -> NaN Invalid_operation
dqrem206 remainder  0.1    0   -> NaN Invalid_operation
dqrem207 remainder  1      0   -> NaN Invalid_operation
dqrem208 remainder  1      0.0 -> NaN Invalid_operation
dqrem209 remainder 10      0.0 -> NaN Invalid_operation
dqrem210 remainder 1E+100  0.0 -> NaN Invalid_operation
dqrem211 remainder 1E+380  0   -> NaN Invalid_operation

-- some differences from remainderNear
dqrem231 remainder  -0.4  1.020 -> -0.400
dqrem232 remainder  -0.50 1.020 -> -0.500
dqrem233 remainder  -0.51 1.020 -> -0.510
dqrem234 remainder  -0.52 1.020 -> -0.520
dqrem235 remainder  -0.6  1.020 -> -0.600

-- high Xs
dqrem240 remainder  1E+2  1.00  ->  0.00

-- dqrem3xx are from DiagBigDecimal
dqrem301 remainder   1    3     ->  1
dqrem302 remainder   5    5     ->  0
dqrem303 remainder   13   10    ->  3
dqrem304 remainder   13   50    ->  13
dqrem305 remainder   13   100   ->  13
dqrem306 remainder   13   1000  ->  13
dqrem307 remainder   .13    1   ->  0.13
dqrem308 remainder   0.133  1   ->  0.133
dqrem309 remainder   0.1033 1   ->  0.1033
dqrem310 remainder   1.033  1   ->  0.033
dqrem311 remainder   10.33  1   ->  0.33
dqrem312 remainder   10.33 10   ->  0.33
dqrem313 remainder   103.3  1   ->  0.3
dqrem314 remainder   133   10   ->  3
dqrem315 remainder   1033  10   ->  3
dqrem316 remainder   1033  50   ->  33
dqrem317 remainder   101.0  3   ->  2.0
dqrem318 remainder   102.0  3   ->  0.0
dqrem319 remainder   103.0  3   ->  1.0
dqrem320 remainder   2.40   1   ->  0.40
dqrem321 remainder   2.400  1   ->  0.400
dqrem322 remainder   2.4    1   ->  0.4
dqrem323 remainder   2.4    2   ->  0.4
dqrem324 remainder   2.400  2   ->  0.400
dqrem325 remainder   1   0.3    ->  0.1
dqrem326 remainder   1   0.30   ->  0.10
dqrem327 remainder   1   0.300  ->  0.100
dqrem328 remainder   1   0.3000 ->  0.1000
dqrem329 remainder   1.0    0.3 ->  0.1
dqrem330 remainder   1.00   0.3 ->  0.10
dqrem331 remainder   1.000  0.3 ->  0.100
dqrem332 remainder   1.0000 0.3 ->  0.1000
dqrem333 remainder   0.5  2     ->  0.5
dqrem334 remainder   0.5  2.1   ->  0.5
dqrem335 remainder   0.5  2.01  ->  0.50
dqrem336 remainder   0.5  2.001 ->  0.500
dqrem337 remainder   0.50 2     ->  0.50
dqrem338 remainder   0.50 2.01  ->  0.50
dqrem339 remainder   0.50 2.001 ->  0.500

dqrem340 remainder   0.5   0.5000001    ->  0.5000000
dqrem341 remainder   0.5   0.50000001    ->  0.50000000
dqrem342 remainder   0.5   0.500000001    ->  0.500000000
dqrem343 remainder   0.5   0.5000000001    ->  0.5000000000
dqrem344 remainder   0.5   0.50000000001    ->  0.50000000000
dqrem345 remainder   0.5   0.4999999    ->  1E-7
dqrem346 remainder   0.5   0.49999999    ->  1E-8
dqrem347 remainder   0.5   0.499999999    ->  1E-9
dqrem348 remainder   0.5   0.4999999999    ->  1E-10
dqrem349 remainder   0.5   0.49999999999    ->  1E-11
dqrem350 remainder   0.5   0.499999999999    ->  1E-12

dqrem351 remainder   0.03  7  ->  0.03
dqrem352 remainder   5   2    ->  1
dqrem353 remainder   4.1   2    ->  0.1
dqrem354 remainder   4.01   2    ->  0.01
dqrem355 remainder   4.001   2    ->  0.001
dqrem356 remainder   4.0001   2    ->  0.0001
dqrem357 remainder   4.00001   2    ->  0.00001
dqrem358 remainder   4.000001   2    ->  0.000001
dqrem359 remainder   4.0000001   2    ->  1E-7

dqrem360 remainder   1.2   0.7345 ->  0.4655
dqrem361 remainder   0.8   12     ->  0.8
dqrem362 remainder   0.8   0.2    ->  0.0
dqrem363 remainder   0.8   0.3    ->  0.2
dqrem364 remainder   0.800   12   ->  0.800
dqrem365 remainder   0.800   1.7  ->  0.800
dqrem366 remainder   2.400   2    ->  0.400

dqrem371 remainder   2.400  2        ->  0.400

dqrem381 remainder 12345  1         ->  0
dqrem382 remainder 12345  1.0001    ->  0.7657
dqrem383 remainder 12345  1.001     ->  0.668
dqrem384 remainder 12345  1.01      ->  0.78
dqrem385 remainder 12345  1.1       ->  0.8
dqrem386 remainder 12355  4         ->  3
dqrem387 remainder 12345  4         ->  1
dqrem388 remainder 12355  4.0001    ->  2.6912
dqrem389 remainder 12345  4.0001    ->  0.6914
dqrem390 remainder 12345  4.9       ->  1.9
dqrem391 remainder 12345  4.99      ->  4.73
dqrem392 remainder 12345  4.999     ->  2.469
dqrem393 remainder 12345  4.9999    ->  0.2469
dqrem394 remainder 12345  5         ->  0
dqrem395 remainder 12345  5.0001    ->  4.7532
dqrem396 remainder 12345  5.001     ->  2.532
dqrem397 remainder 12345  5.01      ->  0.36
dqrem398 remainder 12345  5.1       ->  3.0

-- the nasty division-by-1 cases
dqrem401 remainder   0.5         1   ->  0.5
dqrem402 remainder   0.55        1   ->  0.55
dqrem403 remainder   0.555       1   ->  0.555
dqrem404 remainder   0.5555      1   ->  0.5555
dqrem405 remainder   0.55555     1   ->  0.55555
dqrem406 remainder   0.555555    1   ->  0.555555
dqrem407 remainder   0.5555555   1   ->  0.5555555
dqrem408 remainder   0.55555555  1   ->  0.55555555
dqrem409 remainder   0.555555555 1   ->  0.555555555

-- folddowns
dqrem421 remainder   1E+6144        1  ->   NaN Division_impossible
dqrem422 remainder   1E+6144  1E+6143  ->   0E+6111 Clamped
dqrem423 remainder   1E+6144  2E+6143  ->   0E+6111 Clamped
dqrem424 remainder   1E+6144  3E+6143  ->   1.00000000000000000000000000000000E+6143 Clamped
dqrem425 remainder   1E+6144  4E+6143  ->   2.00000000000000000000000000000000E+6143 Clamped
dqrem426 remainder   1E+6144  5E+6143  ->   0E+6111 Clamped
dqrem427 remainder   1E+6144  6E+6143  ->   4.00000000000000000000000000000000E+6143 Clamped
dqrem428 remainder   1E+6144  7E+6143  ->   3.00000000000000000000000000000000E+6143 Clamped
dqrem429 remainder   1E+6144  8E+6143  ->   2.00000000000000000000000000000000E+6143 Clamped
dqrem430 remainder   1E+6144  9E+6143  ->   1.00000000000000000000000000000000E+6143 Clamped
-- tinies
dqrem431 remainder   1E-6175  1E-6176  ->   0E-6176
dqrem432 remainder   1E-6175  2E-6176  ->   0E-6176
dqrem433 remainder   1E-6175  3E-6176  ->   1E-6176 Subnormal
dqrem434 remainder   1E-6175  4E-6176  ->   2E-6176 Subnormal
dqrem435 remainder   1E-6175  5E-6176  ->   0E-6176
dqrem436 remainder   1E-6175  6E-6176  ->   4E-6176 Subnormal
dqrem437 remainder   1E-6175  7E-6176  ->   3E-6176 Subnormal
dqrem438 remainder   1E-6175  8E-6176  ->   2E-6176 Subnormal
dqrem439 remainder   1E-6175  9E-6176  ->   1E-6176 Subnormal
dqrem440 remainder   1E-6175 10E-6176  ->   0E-6176
dqrem441 remainder   1E-6175 11E-6176  -> 1.0E-6175 Subnormal
dqrem442 remainder 100E-6175 11E-6176  -> 1.0E-6175 Subnormal
dqrem443 remainder 100E-6175 20E-6176  ->   0E-6176
dqrem444 remainder 100E-6175 21E-6176  -> 1.3E-6175 Subnormal
dqrem445 remainder 100E-6175 30E-6176  -> 1.0E-6175 Subnormal

-- zero signs
dqrem650 remainder  1  1 ->  0
dqrem651 remainder -1  1 -> -0
dqrem652 remainder  1 -1 ->  0
dqrem653 remainder -1 -1 -> -0
dqrem654 remainder  0  1 ->  0
dqrem655 remainder -0  1 -> -0
dqrem656 remainder  0 -1 ->  0
dqrem657 remainder -0 -1 -> -0
dqrem658 remainder  0.00  1  ->  0.00
dqrem659 remainder -0.00  1  -> -0.00

-- Specials
dqrem680 remainder  Inf  -Inf   ->  NaN Invalid_operation
dqrem681 remainder  Inf  -1000  ->  NaN Invalid_operation
dqrem682 remainder  Inf  -1     ->  NaN Invalid_operation
dqrem683 remainder  Inf   0     ->  NaN Invalid_operation
dqrem684 remainder  Inf  -0     ->  NaN Invalid_operation
dqrem685 remainder  Inf   1     ->  NaN Invalid_operation
dqrem686 remainder  Inf   1000  ->  NaN Invalid_operation
dqrem687 remainder  Inf   Inf   ->  NaN Invalid_operation
dqrem688 remainder -1000  Inf   -> -1000
dqrem689 remainder -Inf   Inf   ->  NaN Invalid_operation
dqrem691 remainder -1     Inf   -> -1
dqrem692 remainder  0     Inf   ->  0
dqrem693 remainder -0     Inf   -> -0
dqrem694 remainder  1     Inf   ->  1
dqrem695 remainder  1000  Inf   ->  1000
dqrem696 remainder  Inf   Inf   ->  NaN Invalid_operation

dqrem700 remainder -Inf  -Inf   ->  NaN Invalid_operation
dqrem701 remainder -Inf  -1000  ->  NaN Invalid_operation
dqrem702 remainder -Inf  -1     ->  NaN Invalid_operation
dqrem703 remainder -Inf  -0     ->  NaN Invalid_operation
dqrem704 remainder -Inf   0     ->  NaN Invalid_operation
dqrem705 remainder -Inf   1     ->  NaN Invalid_operation
dqrem706 remainder -Inf   1000  ->  NaN Invalid_operation
dqrem707 remainder -Inf   Inf   ->  NaN Invalid_operation
dqrem708 remainder -Inf  -Inf   ->  NaN Invalid_operation
dqrem709 remainder -1000  Inf   -> -1000
dqrem710 remainder -1    -Inf   -> -1
dqrem711 remainder -0    -Inf   -> -0
dqrem712 remainder  0    -Inf   ->  0
dqrem713 remainder  1    -Inf   ->  1
dqrem714 remainder  1000 -Inf   ->  1000
dqrem715 remainder  Inf  -Inf   ->  NaN Invalid_operation

dqrem721 remainder  NaN -Inf    ->  NaN
dqrem722 remainder  NaN -1000   ->  NaN
dqrem723 remainder  NaN -1      ->  NaN
dqrem724 remainder  NaN -0      ->  NaN
dqrem725 remainder -NaN  0      -> -NaN
dqrem726 remainder  NaN  1      ->  NaN
dqrem727 remainder  NaN  1000   ->  NaN
dqrem728 remainder  NaN  Inf    ->  NaN
dqrem729 remainder  NaN -NaN    ->  NaN
dqrem730 remainder -Inf  NaN    ->  NaN
dqrem731 remainder -1000 NaN    ->  NaN
dqrem732 remainder -1    NaN    ->  NaN
dqrem733 remainder -0   -NaN    -> -NaN
dqrem734 remainder  0    NaN    ->  NaN
dqrem735 remainder  1   -NaN    -> -NaN
dqrem736 remainder  1000 NaN    ->  NaN
dqrem737 remainder  Inf  NaN    ->  NaN

dqrem741 remainder  sNaN -Inf   ->  NaN  Invalid_operation
dqrem742 remainder  sNaN -1000  ->  NaN  Invalid_operation
dqrem743 remainder -sNaN -1     -> -NaN  Invalid_operation
dqrem744 remainder  sNaN -0     ->  NaN  Invalid_operation
dqrem745 remainder  sNaN  0     ->  NaN  Invalid_operation
dqrem746 remainder  sNaN  1     ->  NaN  Invalid_operation
dqrem747 remainder  sNaN  1000  ->  NaN  Invalid_operation
dqrem749 remainder  sNaN  NaN   ->  NaN  Invalid_operation
dqrem750 remainder  sNaN sNaN   ->  NaN  Invalid_operation
dqrem751 remainder  NaN  sNaN   ->  NaN  Invalid_operation
dqrem752 remainder -Inf  sNaN   ->  NaN  Invalid_operation
dqrem753 remainder -1000 sNaN   ->  NaN  Invalid_operation
dqrem754 remainder -1    sNaN   ->  NaN  Invalid_operation
dqrem755 remainder -0    sNaN   ->  NaN  Invalid_operation
dqrem756 remainder  0    sNaN   ->  NaN  Invalid_operation
dqrem757 remainder  1    sNaN   ->  NaN  Invalid_operation
dqrem758 remainder  1000 sNaN   ->  NaN  Invalid_operation
dqrem759 remainder  Inf -sNaN   -> -NaN  Invalid_operation

-- propaging NaNs
dqrem760 remainder  NaN1   NaN7   ->  NaN1
dqrem761 remainder sNaN2   NaN8   ->  NaN2 Invalid_operation
dqrem762 remainder  NaN3  sNaN9   ->  NaN9 Invalid_operation
dqrem763 remainder sNaN4  sNaN10  ->  NaN4 Invalid_operation
dqrem764 remainder    15   NaN11  ->  NaN11
dqrem765 remainder  NaN6   NaN12  ->  NaN6
dqrem766 remainder  Inf    NaN13  ->  NaN13
dqrem767 remainder  NaN14  -Inf   ->  NaN14
dqrem768 remainder    0    NaN15  ->  NaN15
dqrem769 remainder  NaN16   -0    ->  NaN16

-- edge cases of impossible
dqrem770  remainder  1234568888888887777777777890123456  10    ->  6
dqrem771  remainder  1234568888888887777777777890123456   1    ->  0
dqrem772  remainder  1234568888888887777777777890123456   0.1  ->  NaN Division_impossible
dqrem773  remainder  1234568888888887777777777890123456   0.01 ->  NaN Division_impossible

-- long operand checks
dqrem801 remainder 12345678000 100 -> 0
dqrem802 remainder 1 12345678000   -> 1
dqrem803 remainder 1234567800  10  -> 0
dqrem804 remainder 1 1234567800    -> 1
dqrem805 remainder 1234567890  10  -> 0
dqrem806 remainder 1 1234567890    -> 1
dqrem807 remainder 1234567891  10  -> 1
dqrem808 remainder 1 1234567891    -> 1
dqrem809 remainder 12345678901 100 -> 1
dqrem810 remainder 1 12345678901   -> 1
dqrem811 remainder 1234567896  10  -> 6
dqrem812 remainder 1 1234567896    -> 1

dqrem821 remainder 12345678000 100 -> 0
dqrem822 remainder 1 12345678000   -> 1
dqrem823 remainder 1234567800  10  -> 0
dqrem824 remainder 1 1234567800    -> 1
dqrem825 remainder 1234567890  10  -> 0
dqrem826 remainder 1 1234567890    -> 1
dqrem827 remainder 1234567891  10  -> 1
dqrem828 remainder 1 1234567891    -> 1
dqrem829 remainder 12345678901 100 -> 1
dqrem830 remainder 1 12345678901   -> 1
dqrem831 remainder 1234567896  10  -> 6
dqrem832 remainder 1 1234567896    -> 1

-- from divideint
dqrem840 remainder  100000000.0   1  ->  0.0
dqrem841 remainder  100000000.4   1  ->  0.4
dqrem842 remainder  100000000.5   1  ->  0.5
dqrem843 remainder  100000000.9   1  ->  0.9
dqrem844 remainder  100000000.999 1  ->  0.999
dqrem850 remainder  100000003     5  ->  3
dqrem851 remainder  10000003      5  ->  3
dqrem852 remainder  1000003       5  ->  3
dqrem853 remainder  100003        5  ->  3
dqrem854 remainder  10003         5  ->  3
dqrem855 remainder  1003          5  ->  3
dqrem856 remainder  103           5  ->  3
dqrem857 remainder  13            5  ->  3
dqrem858 remainder  1             5  ->  1

-- Vladimir's cases         1234567890123456
dqrem860 remainder 123.0e1 1000000000000000  -> 1230
dqrem861 remainder 1230    1000000000000000  -> 1230
dqrem862 remainder 12.3e2  1000000000000000  -> 1230
dqrem863 remainder 1.23e3  1000000000000000  -> 1230
dqrem864 remainder 123e1   1000000000000000  -> 1230
dqrem870 remainder 123e1    1000000000000000 -> 1230
dqrem871 remainder 123e1     100000000000000 -> 1230
dqrem872 remainder 123e1      10000000000000 -> 1230
dqrem873 remainder 123e1       1000000000000 -> 1230
dqrem874 remainder 123e1        100000000000 -> 1230
dqrem875 remainder 123e1         10000000000 -> 1230
dqrem876 remainder 123e1          1000000000 -> 1230
dqrem877 remainder 123e1           100000000 -> 1230
dqrem878 remainder 1230            100000000 -> 1230
dqrem879 remainder 123e1            10000000 -> 1230
dqrem880 remainder 123e1             1000000 -> 1230
dqrem881 remainder 123e1              100000 -> 1230
dqrem882 remainder 123e1               10000 -> 1230
dqrem883 remainder 123e1                1000 ->  230
dqrem884 remainder 123e1                 100 ->   30
dqrem885 remainder 123e1                  10 ->    0
dqrem886 remainder 123e1                   1 ->    0

dqrem890 remainder 123e1    2000000000000000 -> 1230
dqrem891 remainder 123e1     200000000000000 -> 1230
dqrem892 remainder 123e1      20000000000000 -> 1230
dqrem893 remainder 123e1       2000000000000 -> 1230
dqrem894 remainder 123e1        200000000000 -> 1230
dqrem895 remainder 123e1         20000000000 -> 1230
dqrem896 remainder 123e1          2000000000 -> 1230
dqrem897 remainder 123e1           200000000 -> 1230
dqrem899 remainder 123e1            20000000 -> 1230
dqrem900 remainder 123e1             2000000 -> 1230
dqrem901 remainder 123e1              200000 -> 1230
dqrem902 remainder 123e1               20000 -> 1230
dqrem903 remainder 123e1                2000 -> 1230
dqrem904 remainder 123e1                 200 ->   30
dqrem905 remainder 123e1                  20 ->   10
dqrem906 remainder 123e1                   2 ->    0

dqrem910 remainder 123e1    5000000000000000 -> 1230
dqrem911 remainder 123e1     500000000000000 -> 1230
dqrem912 remainder 123e1      50000000000000 -> 1230
dqrem913 remainder 123e1       5000000000000 -> 1230
dqrem914 remainder 123e1        500000000000 -> 1230
dqrem915 remainder 123e1         50000000000 -> 1230
dqrem916 remainder 123e1          5000000000 -> 1230
dqrem917 remainder 123e1           500000000 -> 1230
dqrem919 remainder 123e1            50000000 -> 1230
dqrem920 remainder 123e1             5000000 -> 1230
dqrem921 remainder 123e1              500000 -> 1230
dqrem922 remainder 123e1               50000 -> 1230
dqrem923 remainder 123e1                5000 -> 1230
dqrem924 remainder 123e1                 500 ->  230
dqrem925 remainder 123e1                  50 ->   30
dqrem926 remainder 123e1                   5 ->    0

dqrem930 remainder 123e1    9000000000000000 -> 1230
dqrem931 remainder 123e1     900000000000000 -> 1230
dqrem932 remainder 123e1      90000000000000 -> 1230
dqrem933 remainder 123e1       9000000000000 -> 1230
dqrem934 remainder 123e1        900000000000 -> 1230
dqrem935 remainder 123e1         90000000000 -> 1230
dqrem936 remainder 123e1          9000000000 -> 1230
dqrem937 remainder 123e1           900000000 -> 1230
dqrem939 remainder 123e1            90000000 -> 1230
dqrem940 remainder 123e1             9000000 -> 1230
dqrem941 remainder 123e1              900000 -> 1230
dqrem942 remainder 123e1               90000 -> 1230
dqrem943 remainder 123e1                9000 -> 1230
dqrem944 remainder 123e1                 900 ->  330
dqrem945 remainder 123e1                  90 ->   60
dqrem946 remainder 123e1                   9 ->    6

dqrem950 remainder 123e1   1000000000000000 -> 1230
dqrem961 remainder 123e1   2999999999999999 -> 1230
dqrem962 remainder 123e1   3999999999999999 -> 1230
dqrem963 remainder 123e1   4999999999999999 -> 1230
dqrem964 remainder 123e1   5999999999999999 -> 1230
dqrem965 remainder 123e1   6999999999999999 -> 1230
dqrem966 remainder 123e1   7999999999999999 -> 1230
dqrem967 remainder 123e1   8999999999999999 -> 1230
dqrem968 remainder 123e1   9999999999999999 -> 1230
dqrem969 remainder 123e1   9876543210987654 -> 1230

dqrem980 remainder 123e1 1000E299 -> 1.23E+3  -- 123E+1 internally

-- overflow and underflow tests [from divide]
dqrem1051 remainder  1e+277  1e-311 ->  NaN Division_impossible
dqrem1052 remainder  1e+277 -1e-311 ->  NaN Division_impossible
dqrem1053 remainder -1e+277  1e-311 ->  NaN Division_impossible
dqrem1054 remainder -1e+277 -1e-311 ->  NaN Division_impossible
dqrem1055 remainder  1e-277  1e+311 ->  1E-277
dqrem1056 remainder  1e-277 -1e+311 ->  1E-277
dqrem1057 remainder -1e-277  1e+311 -> -1E-277
dqrem1058 remainder -1e-277 -1e+311 -> -1E-277

-- Gyuris example
dqrem1070 remainder 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 8.336804418094040989630006819881709E-6143

-- destructive subtract
dqrem1120  remainder  1234567890123456789012345678901234  1.000000000000000000000000000000001  ->  0.765432109876543210987654321098768
dqrem1121  remainder  1234567890123456789012345678901234   1.00000000000000000000000000000001  ->   0.65432109876543210987654321098779
dqrem1122  remainder  1234567890123456789012345678901234    1.0000000000000000000000000000001  ->    0.5432109876543210987654321098890
dqrem1123  remainder  1234567890123456789012345678901255  4.000000000000000000000000000000001  ->  2.691358027469135802746913580274687
dqrem1124  remainder  1234567890123456789012345678901234  4.000000000000000000000000000000001  ->  1.691358027469135802746913580274692
dqrem1125  remainder  1234567890123456789012345678901234    4.9999999999999999999999999999999  ->    3.6913578024691357802469135780251
dqrem1126  remainder  1234567890123456789012345678901234   4.99999999999999999999999999999999  ->   1.46913578024691357802469135780247
dqrem1127  remainder  1234567890123456789012345678901234  4.999999999999999999999999999999999  ->  4.246913578024691357802469135780246
dqrem1128  remainder  1234567890123456789012345678901234    5.0000000000000000000000000000001  ->    4.3086421975308642197530864219759

-- Null tests
dqrem1000 remainder 10  # -> NaN Invalid_operation
dqrem1001 remainder  # 10 -> NaN Invalid_operation