summaryrefslogtreecommitdiff
path: root/lib/python2.7/test/decimaltestdata/dqRemainder.decTest
blob: 090d3cf559cdd4fdaf74357a669b7247cc2a9b8c (plain)
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