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
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
|
------------------------------------------------------------------------
-- ddAdd.decTest -- decDouble addition --
-- Copyright (c) IBM Corporation, 1981, 2007. 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.57
-- This set of tests are for decDoubles only; all arguments are
-- representable in a decDouble
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- [first group are 'quick confidence check']
ddadd001 add 1 1 -> 2
ddadd002 add 2 3 -> 5
ddadd003 add '5.75' '3.3' -> 9.05
ddadd004 add '5' '-3' -> 2
ddadd005 add '-5' '-3' -> -8
ddadd006 add '-7' '2.5' -> -4.5
ddadd007 add '0.7' '0.3' -> 1.0
ddadd008 add '1.25' '1.25' -> 2.50
ddadd009 add '1.23456789' '1.00000000' -> '2.23456789'
ddadd010 add '1.23456789' '1.00000011' -> '2.23456800'
-- 1234567890123456 1234567890123456
ddadd011 add '0.4444444444444446' '0.5555555555555555' -> '1.000000000000000' Inexact Rounded
ddadd012 add '0.4444444444444445' '0.5555555555555555' -> '1.000000000000000' Rounded
ddadd013 add '0.4444444444444444' '0.5555555555555555' -> '0.9999999999999999'
ddadd014 add '4444444444444444' '0.49' -> '4444444444444444' Inexact Rounded
ddadd015 add '4444444444444444' '0.499' -> '4444444444444444' Inexact Rounded
ddadd016 add '4444444444444444' '0.4999' -> '4444444444444444' Inexact Rounded
ddadd017 add '4444444444444444' '0.5000' -> '4444444444444444' Inexact Rounded
ddadd018 add '4444444444444444' '0.5001' -> '4444444444444445' Inexact Rounded
ddadd019 add '4444444444444444' '0.501' -> '4444444444444445' Inexact Rounded
ddadd020 add '4444444444444444' '0.51' -> '4444444444444445' Inexact Rounded
ddadd021 add 0 1 -> 1
ddadd022 add 1 1 -> 2
ddadd023 add 2 1 -> 3
ddadd024 add 3 1 -> 4
ddadd025 add 4 1 -> 5
ddadd026 add 5 1 -> 6
ddadd027 add 6 1 -> 7
ddadd028 add 7 1 -> 8
ddadd029 add 8 1 -> 9
ddadd030 add 9 1 -> 10
-- some carrying effects
ddadd031 add '0.9998' '0.0000' -> '0.9998'
ddadd032 add '0.9998' '0.0001' -> '0.9999'
ddadd033 add '0.9998' '0.0002' -> '1.0000'
ddadd034 add '0.9998' '0.0003' -> '1.0001'
ddadd035 add '70' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
ddadd036 add '700' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
ddadd037 add '7000' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
ddadd038 add '70000' '10000e+16' -> '1.000000000000001E+20' Inexact Rounded
ddadd039 add '700000' '10000e+16' -> '1.000000000000007E+20' Rounded
-- symmetry:
ddadd040 add '10000e+16' '70' -> '1.000000000000000E+20' Inexact Rounded
ddadd041 add '10000e+16' '700' -> '1.000000000000000E+20' Inexact Rounded
ddadd042 add '10000e+16' '7000' -> '1.000000000000000E+20' Inexact Rounded
ddadd044 add '10000e+16' '70000' -> '1.000000000000001E+20' Inexact Rounded
ddadd045 add '10000e+16' '700000' -> '1.000000000000007E+20' Rounded
-- same, without rounding
ddadd046 add '10000e+9' '7' -> '10000000000007'
ddadd047 add '10000e+9' '70' -> '10000000000070'
ddadd048 add '10000e+9' '700' -> '10000000000700'
ddadd049 add '10000e+9' '7000' -> '10000000007000'
ddadd050 add '10000e+9' '70000' -> '10000000070000'
ddadd051 add '10000e+9' '700000' -> '10000000700000'
ddadd052 add '10000e+9' '7000000' -> '10000007000000'
-- examples from decarith
ddadd053 add '12' '7.00' -> '19.00'
ddadd054 add '1.3' '-1.07' -> '0.23'
ddadd055 add '1.3' '-1.30' -> '0.00'
ddadd056 add '1.3' '-2.07' -> '-0.77'
ddadd057 add '1E+2' '1E+4' -> '1.01E+4'
-- leading zero preservation
ddadd061 add 1 '0.0001' -> '1.0001'
ddadd062 add 1 '0.00001' -> '1.00001'
ddadd063 add 1 '0.000001' -> '1.000001'
ddadd064 add 1 '0.0000001' -> '1.0000001'
ddadd065 add 1 '0.00000001' -> '1.00000001'
-- some funny zeros [in case of bad signum]
ddadd070 add 1 0 -> 1
ddadd071 add 1 0. -> 1
ddadd072 add 1 .0 -> 1.0
ddadd073 add 1 0.0 -> 1.0
ddadd074 add 1 0.00 -> 1.00
ddadd075 add 0 1 -> 1
ddadd076 add 0. 1 -> 1
ddadd077 add .0 1 -> 1.0
ddadd078 add 0.0 1 -> 1.0
ddadd079 add 0.00 1 -> 1.00
-- some carries
ddadd080 add 999999998 1 -> 999999999
ddadd081 add 999999999 1 -> 1000000000
ddadd082 add 99999999 1 -> 100000000
ddadd083 add 9999999 1 -> 10000000
ddadd084 add 999999 1 -> 1000000
ddadd085 add 99999 1 -> 100000
ddadd086 add 9999 1 -> 10000
ddadd087 add 999 1 -> 1000
ddadd088 add 99 1 -> 100
ddadd089 add 9 1 -> 10
-- more LHS swaps
ddadd090 add '-56267E-10' 0 -> '-0.0000056267'
ddadd091 add '-56267E-6' 0 -> '-0.056267'
ddadd092 add '-56267E-5' 0 -> '-0.56267'
ddadd093 add '-56267E-4' 0 -> '-5.6267'
ddadd094 add '-56267E-3' 0 -> '-56.267'
ddadd095 add '-56267E-2' 0 -> '-562.67'
ddadd096 add '-56267E-1' 0 -> '-5626.7'
ddadd097 add '-56267E-0' 0 -> '-56267'
ddadd098 add '-5E-10' 0 -> '-5E-10'
ddadd099 add '-5E-7' 0 -> '-5E-7'
ddadd100 add '-5E-6' 0 -> '-0.000005'
ddadd101 add '-5E-5' 0 -> '-0.00005'
ddadd102 add '-5E-4' 0 -> '-0.0005'
ddadd103 add '-5E-1' 0 -> '-0.5'
ddadd104 add '-5E0' 0 -> '-5'
ddadd105 add '-5E1' 0 -> '-50'
ddadd106 add '-5E5' 0 -> '-500000'
ddadd107 add '-5E15' 0 -> '-5000000000000000'
ddadd108 add '-5E16' 0 -> '-5.000000000000000E+16' Rounded
ddadd109 add '-5E17' 0 -> '-5.000000000000000E+17' Rounded
ddadd110 add '-5E18' 0 -> '-5.000000000000000E+18' Rounded
ddadd111 add '-5E100' 0 -> '-5.000000000000000E+100' Rounded
-- more RHS swaps
ddadd113 add 0 '-56267E-10' -> '-0.0000056267'
ddadd114 add 0 '-56267E-6' -> '-0.056267'
ddadd116 add 0 '-56267E-5' -> '-0.56267'
ddadd117 add 0 '-56267E-4' -> '-5.6267'
ddadd119 add 0 '-56267E-3' -> '-56.267'
ddadd120 add 0 '-56267E-2' -> '-562.67'
ddadd121 add 0 '-56267E-1' -> '-5626.7'
ddadd122 add 0 '-56267E-0' -> '-56267'
ddadd123 add 0 '-5E-10' -> '-5E-10'
ddadd124 add 0 '-5E-7' -> '-5E-7'
ddadd125 add 0 '-5E-6' -> '-0.000005'
ddadd126 add 0 '-5E-5' -> '-0.00005'
ddadd127 add 0 '-5E-4' -> '-0.0005'
ddadd128 add 0 '-5E-1' -> '-0.5'
ddadd129 add 0 '-5E0' -> '-5'
ddadd130 add 0 '-5E1' -> '-50'
ddadd131 add 0 '-5E5' -> '-500000'
ddadd132 add 0 '-5E15' -> '-5000000000000000'
ddadd133 add 0 '-5E16' -> '-5.000000000000000E+16' Rounded
ddadd134 add 0 '-5E17' -> '-5.000000000000000E+17' Rounded
ddadd135 add 0 '-5E18' -> '-5.000000000000000E+18' Rounded
ddadd136 add 0 '-5E100' -> '-5.000000000000000E+100' Rounded
-- related
ddadd137 add 1 '0E-19' -> '1.000000000000000' Rounded
ddadd138 add -1 '0E-19' -> '-1.000000000000000' Rounded
ddadd139 add '0E-19' 1 -> '1.000000000000000' Rounded
ddadd140 add '0E-19' -1 -> '-1.000000000000000' Rounded
ddadd141 add 1E+11 0.0000 -> '100000000000.0000'
ddadd142 add 1E+11 0.00000 -> '100000000000.0000' Rounded
ddadd143 add 0.000 1E+12 -> '1000000000000.000'
ddadd144 add 0.0000 1E+12 -> '1000000000000.000' Rounded
-- [some of the next group are really constructor tests]
ddadd146 add '00.0' 0 -> '0.0'
ddadd147 add '0.00' 0 -> '0.00'
ddadd148 add 0 '0.00' -> '0.00'
ddadd149 add 0 '00.0' -> '0.0'
ddadd150 add '00.0' '0.00' -> '0.00'
ddadd151 add '0.00' '00.0' -> '0.00'
ddadd152 add '3' '.3' -> '3.3'
ddadd153 add '3.' '.3' -> '3.3'
ddadd154 add '3.0' '.3' -> '3.3'
ddadd155 add '3.00' '.3' -> '3.30'
ddadd156 add '3' '3' -> '6'
ddadd157 add '3' '+3' -> '6'
ddadd158 add '3' '-3' -> '0'
ddadd159 add '0.3' '-0.3' -> '0.0'
ddadd160 add '0.03' '-0.03' -> '0.00'
-- try borderline precision, with carries, etc.
ddadd161 add '1E+12' '-1' -> '999999999999'
ddadd162 add '1E+12' '1.11' -> '1000000000001.11'
ddadd163 add '1.11' '1E+12' -> '1000000000001.11'
ddadd164 add '-1' '1E+12' -> '999999999999'
ddadd165 add '7E+12' '-1' -> '6999999999999'
ddadd166 add '7E+12' '1.11' -> '7000000000001.11'
ddadd167 add '1.11' '7E+12' -> '7000000000001.11'
ddadd168 add '-1' '7E+12' -> '6999999999999'
rounding: half_up
-- 1.234567890123456 1234567890123456 1 234567890123456
ddadd170 add '4.444444444444444' '0.5555555555555567' -> '5.000000000000001' Inexact Rounded
ddadd171 add '4.444444444444444' '0.5555555555555566' -> '5.000000000000001' Inexact Rounded
ddadd172 add '4.444444444444444' '0.5555555555555565' -> '5.000000000000001' Inexact Rounded
ddadd173 add '4.444444444444444' '0.5555555555555564' -> '5.000000000000000' Inexact Rounded
ddadd174 add '4.444444444444444' '0.5555555555555553' -> '4.999999999999999' Inexact Rounded
ddadd175 add '4.444444444444444' '0.5555555555555552' -> '4.999999999999999' Inexact Rounded
ddadd176 add '4.444444444444444' '0.5555555555555551' -> '4.999999999999999' Inexact Rounded
ddadd177 add '4.444444444444444' '0.5555555555555550' -> '4.999999999999999' Rounded
ddadd178 add '4.444444444444444' '0.5555555555555545' -> '4.999999999999999' Inexact Rounded
ddadd179 add '4.444444444444444' '0.5555555555555544' -> '4.999999999999998' Inexact Rounded
ddadd180 add '4.444444444444444' '0.5555555555555543' -> '4.999999999999998' Inexact Rounded
ddadd181 add '4.444444444444444' '0.5555555555555542' -> '4.999999999999998' Inexact Rounded
ddadd182 add '4.444444444444444' '0.5555555555555541' -> '4.999999999999998' Inexact Rounded
ddadd183 add '4.444444444444444' '0.5555555555555540' -> '4.999999999999998' Rounded
-- and some more, including residue effects and different roundings
rounding: half_up
ddadd200 add '1234560123456789' 0 -> '1234560123456789'
ddadd201 add '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded
ddadd202 add '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded
ddadd203 add '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded
ddadd204 add '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded
ddadd205 add '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded
ddadd206 add '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded
ddadd207 add '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded
ddadd208 add '1234560123456789' 0.5 -> '1234560123456790' Inexact Rounded
ddadd209 add '1234560123456789' 0.500000001 -> '1234560123456790' Inexact Rounded
ddadd210 add '1234560123456789' 0.500001 -> '1234560123456790' Inexact Rounded
ddadd211 add '1234560123456789' 0.51 -> '1234560123456790' Inexact Rounded
ddadd212 add '1234560123456789' 0.6 -> '1234560123456790' Inexact Rounded
ddadd213 add '1234560123456789' 0.9 -> '1234560123456790' Inexact Rounded
ddadd214 add '1234560123456789' 0.99999 -> '1234560123456790' Inexact Rounded
ddadd215 add '1234560123456789' 0.999999999 -> '1234560123456790' Inexact Rounded
ddadd216 add '1234560123456789' 1 -> '1234560123456790'
ddadd217 add '1234560123456789' 1.000000001 -> '1234560123456790' Inexact Rounded
ddadd218 add '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded
ddadd219 add '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded
rounding: half_even
ddadd220 add '1234560123456789' 0 -> '1234560123456789'
ddadd221 add '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded
ddadd222 add '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded
ddadd223 add '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded
ddadd224 add '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded
ddadd225 add '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded
ddadd226 add '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded
ddadd227 add '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded
ddadd228 add '1234560123456789' 0.5 -> '1234560123456790' Inexact Rounded
ddadd229 add '1234560123456789' 0.500000001 -> '1234560123456790' Inexact Rounded
ddadd230 add '1234560123456789' 0.500001 -> '1234560123456790' Inexact Rounded
ddadd231 add '1234560123456789' 0.51 -> '1234560123456790' Inexact Rounded
ddadd232 add '1234560123456789' 0.6 -> '1234560123456790' Inexact Rounded
ddadd233 add '1234560123456789' 0.9 -> '1234560123456790' Inexact Rounded
ddadd234 add '1234560123456789' 0.99999 -> '1234560123456790' Inexact Rounded
ddadd235 add '1234560123456789' 0.999999999 -> '1234560123456790' Inexact Rounded
ddadd236 add '1234560123456789' 1 -> '1234560123456790'
ddadd237 add '1234560123456789' 1.00000001 -> '1234560123456790' Inexact Rounded
ddadd238 add '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded
ddadd239 add '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded
-- critical few with even bottom digit...
ddadd240 add '1234560123456788' 0.499999999 -> '1234560123456788' Inexact Rounded
ddadd241 add '1234560123456788' 0.5 -> '1234560123456788' Inexact Rounded
ddadd242 add '1234560123456788' 0.500000001 -> '1234560123456789' Inexact Rounded
rounding: down
ddadd250 add '1234560123456789' 0 -> '1234560123456789'
ddadd251 add '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded
ddadd252 add '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded
ddadd253 add '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded
ddadd254 add '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded
ddadd255 add '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded
ddadd256 add '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded
ddadd257 add '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded
ddadd258 add '1234560123456789' 0.5 -> '1234560123456789' Inexact Rounded
ddadd259 add '1234560123456789' 0.500000001 -> '1234560123456789' Inexact Rounded
ddadd260 add '1234560123456789' 0.500001 -> '1234560123456789' Inexact Rounded
ddadd261 add '1234560123456789' 0.51 -> '1234560123456789' Inexact Rounded
ddadd262 add '1234560123456789' 0.6 -> '1234560123456789' Inexact Rounded
ddadd263 add '1234560123456789' 0.9 -> '1234560123456789' Inexact Rounded
ddadd264 add '1234560123456789' 0.99999 -> '1234560123456789' Inexact Rounded
ddadd265 add '1234560123456789' 0.999999999 -> '1234560123456789' Inexact Rounded
ddadd266 add '1234560123456789' 1 -> '1234560123456790'
ddadd267 add '1234560123456789' 1.00000001 -> '1234560123456790' Inexact Rounded
ddadd268 add '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded
ddadd269 add '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded
-- 1 in last place tests
rounding: half_up
ddadd301 add -1 1 -> 0
ddadd302 add 0 1 -> 1
ddadd303 add 1 1 -> 2
ddadd304 add 12 1 -> 13
ddadd305 add 98 1 -> 99
ddadd306 add 99 1 -> 100
ddadd307 add 100 1 -> 101
ddadd308 add 101 1 -> 102
ddadd309 add -1 -1 -> -2
ddadd310 add 0 -1 -> -1
ddadd311 add 1 -1 -> 0
ddadd312 add 12 -1 -> 11
ddadd313 add 98 -1 -> 97
ddadd314 add 99 -1 -> 98
ddadd315 add 100 -1 -> 99
ddadd316 add 101 -1 -> 100
ddadd321 add -0.01 0.01 -> 0.00
ddadd322 add 0.00 0.01 -> 0.01
ddadd323 add 0.01 0.01 -> 0.02
ddadd324 add 0.12 0.01 -> 0.13
ddadd325 add 0.98 0.01 -> 0.99
ddadd326 add 0.99 0.01 -> 1.00
ddadd327 add 1.00 0.01 -> 1.01
ddadd328 add 1.01 0.01 -> 1.02
ddadd329 add -0.01 -0.01 -> -0.02
ddadd330 add 0.00 -0.01 -> -0.01
ddadd331 add 0.01 -0.01 -> 0.00
ddadd332 add 0.12 -0.01 -> 0.11
ddadd333 add 0.98 -0.01 -> 0.97
ddadd334 add 0.99 -0.01 -> 0.98
ddadd335 add 1.00 -0.01 -> 0.99
ddadd336 add 1.01 -0.01 -> 1.00
-- some more cases where adding 0 affects the coefficient
ddadd340 add 1E+3 0 -> 1000
ddadd341 add 1E+15 0 -> 1000000000000000
ddadd342 add 1E+16 0 -> 1.000000000000000E+16 Rounded
ddadd343 add 1E+20 0 -> 1.000000000000000E+20 Rounded
-- which simply follow from these cases ...
ddadd344 add 1E+3 1 -> 1001
ddadd345 add 1E+15 1 -> 1000000000000001
ddadd346 add 1E+16 1 -> 1.000000000000000E+16 Inexact Rounded
ddadd347 add 1E+20 1 -> 1.000000000000000E+20 Inexact Rounded
ddadd348 add 1E+3 7 -> 1007
ddadd349 add 1E+15 7 -> 1000000000000007
ddadd350 add 1E+16 7 -> 1.000000000000001E+16 Inexact Rounded
ddadd351 add 1E+20 7 -> 1.000000000000000E+20 Inexact Rounded
-- tryzeros cases
rounding: half_up
ddadd360 add 0E+50 10000E+1 -> 1.0000E+5
ddadd361 add 0E-50 10000E+1 -> 100000.0000000000 Rounded
ddadd362 add 10000E+1 0E-50 -> 100000.0000000000 Rounded
ddadd363 add 10000E+1 10000E-50 -> 100000.0000000000 Rounded Inexact
ddadd364 add 9.999999999999999E+384 -9.999999999999999E+384 -> 0E+369
-- a curiosity from JSR 13 testing
rounding: half_down
ddadd370 add 999999999999999 815 -> 1000000000000814
ddadd371 add 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact
rounding: half_up
ddadd372 add 999999999999999 815 -> 1000000000000814
ddadd373 add 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact
rounding: half_even
ddadd374 add 999999999999999 815 -> 1000000000000814
ddadd375 add 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact
-- operands folded
ddadd380 add 1E+384 1E+384 -> 2.000000000000000E+384 Clamped
ddadd381 add 1E+380 1E+380 -> 2.00000000000E+380 Clamped
ddadd382 add 1E+376 1E+376 -> 2.0000000E+376 Clamped
ddadd383 add 1E+372 1E+372 -> 2.000E+372 Clamped
ddadd384 add 1E+370 1E+370 -> 2.0E+370 Clamped
ddadd385 add 1E+369 1E+369 -> 2E+369
ddadd386 add 1E+368 1E+368 -> 2E+368
-- ulp replacement tests
ddadd400 add 1 77e-14 -> 1.00000000000077
ddadd401 add 1 77e-15 -> 1.000000000000077
ddadd402 add 1 77e-16 -> 1.000000000000008 Inexact Rounded
ddadd403 add 1 77e-17 -> 1.000000000000001 Inexact Rounded
ddadd404 add 1 77e-18 -> 1.000000000000000 Inexact Rounded
ddadd405 add 1 77e-19 -> 1.000000000000000 Inexact Rounded
ddadd406 add 1 77e-299 -> 1.000000000000000 Inexact Rounded
ddadd410 add 10 77e-14 -> 10.00000000000077
ddadd411 add 10 77e-15 -> 10.00000000000008 Inexact Rounded
ddadd412 add 10 77e-16 -> 10.00000000000001 Inexact Rounded
ddadd413 add 10 77e-17 -> 10.00000000000000 Inexact Rounded
ddadd414 add 10 77e-18 -> 10.00000000000000 Inexact Rounded
ddadd415 add 10 77e-19 -> 10.00000000000000 Inexact Rounded
ddadd416 add 10 77e-299 -> 10.00000000000000 Inexact Rounded
ddadd420 add 77e-14 1 -> 1.00000000000077
ddadd421 add 77e-15 1 -> 1.000000000000077
ddadd422 add 77e-16 1 -> 1.000000000000008 Inexact Rounded
ddadd423 add 77e-17 1 -> 1.000000000000001 Inexact Rounded
ddadd424 add 77e-18 1 -> 1.000000000000000 Inexact Rounded
ddadd425 add 77e-19 1 -> 1.000000000000000 Inexact Rounded
ddadd426 add 77e-299 1 -> 1.000000000000000 Inexact Rounded
ddadd430 add 77e-14 10 -> 10.00000000000077
ddadd431 add 77e-15 10 -> 10.00000000000008 Inexact Rounded
ddadd432 add 77e-16 10 -> 10.00000000000001 Inexact Rounded
ddadd433 add 77e-17 10 -> 10.00000000000000 Inexact Rounded
ddadd434 add 77e-18 10 -> 10.00000000000000 Inexact Rounded
ddadd435 add 77e-19 10 -> 10.00000000000000 Inexact Rounded
ddadd436 add 77e-299 10 -> 10.00000000000000 Inexact Rounded
-- negative ulps
ddadd6440 add 1 -77e-14 -> 0.99999999999923
ddadd6441 add 1 -77e-15 -> 0.999999999999923
ddadd6442 add 1 -77e-16 -> 0.9999999999999923
ddadd6443 add 1 -77e-17 -> 0.9999999999999992 Inexact Rounded
ddadd6444 add 1 -77e-18 -> 0.9999999999999999 Inexact Rounded
ddadd6445 add 1 -77e-19 -> 1.000000000000000 Inexact Rounded
ddadd6446 add 1 -77e-99 -> 1.000000000000000 Inexact Rounded
ddadd6450 add 10 -77e-14 -> 9.99999999999923
ddadd6451 add 10 -77e-15 -> 9.999999999999923
ddadd6452 add 10 -77e-16 -> 9.999999999999992 Inexact Rounded
ddadd6453 add 10 -77e-17 -> 9.999999999999999 Inexact Rounded
ddadd6454 add 10 -77e-18 -> 10.00000000000000 Inexact Rounded
ddadd6455 add 10 -77e-19 -> 10.00000000000000 Inexact Rounded
ddadd6456 add 10 -77e-99 -> 10.00000000000000 Inexact Rounded
ddadd6460 add -77e-14 1 -> 0.99999999999923
ddadd6461 add -77e-15 1 -> 0.999999999999923
ddadd6462 add -77e-16 1 -> 0.9999999999999923
ddadd6463 add -77e-17 1 -> 0.9999999999999992 Inexact Rounded
ddadd6464 add -77e-18 1 -> 0.9999999999999999 Inexact Rounded
ddadd6465 add -77e-19 1 -> 1.000000000000000 Inexact Rounded
ddadd6466 add -77e-99 1 -> 1.000000000000000 Inexact Rounded
ddadd6470 add -77e-14 10 -> 9.99999999999923
ddadd6471 add -77e-15 10 -> 9.999999999999923
ddadd6472 add -77e-16 10 -> 9.999999999999992 Inexact Rounded
ddadd6473 add -77e-17 10 -> 9.999999999999999 Inexact Rounded
ddadd6474 add -77e-18 10 -> 10.00000000000000 Inexact Rounded
ddadd6475 add -77e-19 10 -> 10.00000000000000 Inexact Rounded
ddadd6476 add -77e-99 10 -> 10.00000000000000 Inexact Rounded
-- negative ulps
ddadd6480 add -1 77e-14 -> -0.99999999999923
ddadd6481 add -1 77e-15 -> -0.999999999999923
ddadd6482 add -1 77e-16 -> -0.9999999999999923
ddadd6483 add -1 77e-17 -> -0.9999999999999992 Inexact Rounded
ddadd6484 add -1 77e-18 -> -0.9999999999999999 Inexact Rounded
ddadd6485 add -1 77e-19 -> -1.000000000000000 Inexact Rounded
ddadd6486 add -1 77e-99 -> -1.000000000000000 Inexact Rounded
ddadd6490 add -10 77e-14 -> -9.99999999999923
ddadd6491 add -10 77e-15 -> -9.999999999999923
ddadd6492 add -10 77e-16 -> -9.999999999999992 Inexact Rounded
ddadd6493 add -10 77e-17 -> -9.999999999999999 Inexact Rounded
ddadd6494 add -10 77e-18 -> -10.00000000000000 Inexact Rounded
ddadd6495 add -10 77e-19 -> -10.00000000000000 Inexact Rounded
ddadd6496 add -10 77e-99 -> -10.00000000000000 Inexact Rounded
ddadd6500 add 77e-14 -1 -> -0.99999999999923
ddadd6501 add 77e-15 -1 -> -0.999999999999923
ddadd6502 add 77e-16 -1 -> -0.9999999999999923
ddadd6503 add 77e-17 -1 -> -0.9999999999999992 Inexact Rounded
ddadd6504 add 77e-18 -1 -> -0.9999999999999999 Inexact Rounded
ddadd6505 add 77e-19 -1 -> -1.000000000000000 Inexact Rounded
ddadd6506 add 77e-99 -1 -> -1.000000000000000 Inexact Rounded
ddadd6510 add 77e-14 -10 -> -9.99999999999923
ddadd6511 add 77e-15 -10 -> -9.999999999999923
ddadd6512 add 77e-16 -10 -> -9.999999999999992 Inexact Rounded
ddadd6513 add 77e-17 -10 -> -9.999999999999999 Inexact Rounded
ddadd6514 add 77e-18 -10 -> -10.00000000000000 Inexact Rounded
ddadd6515 add 77e-19 -10 -> -10.00000000000000 Inexact Rounded
ddadd6516 add 77e-99 -10 -> -10.00000000000000 Inexact Rounded
-- and some more residue effects and different roundings
rounding: half_up
ddadd6540 add '6543210123456789' 0 -> '6543210123456789'
ddadd6541 add '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded
ddadd6542 add '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded
ddadd6543 add '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded
ddadd6544 add '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded
ddadd6545 add '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded
ddadd6546 add '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded
ddadd6547 add '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded
ddadd6548 add '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded
ddadd6549 add '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded
ddadd6550 add '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded
ddadd6551 add '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded
ddadd6552 add '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded
ddadd6553 add '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded
ddadd6554 add '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded
ddadd6555 add '6543210123456789' 0.999999999 -> '6543210123456790' Inexact Rounded
ddadd6556 add '6543210123456789' 1 -> '6543210123456790'
ddadd6557 add '6543210123456789' 1.000000001 -> '6543210123456790' Inexact Rounded
ddadd6558 add '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded
ddadd6559 add '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded
rounding: half_even
ddadd6560 add '6543210123456789' 0 -> '6543210123456789'
ddadd6561 add '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded
ddadd6562 add '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded
ddadd6563 add '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded
ddadd6564 add '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded
ddadd6565 add '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded
ddadd6566 add '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded
ddadd6567 add '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded
ddadd6568 add '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded
ddadd6569 add '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded
ddadd6570 add '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded
ddadd6571 add '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded
ddadd6572 add '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded
ddadd6573 add '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded
ddadd6574 add '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded
ddadd6575 add '6543210123456789' 0.999999999 -> '6543210123456790' Inexact Rounded
ddadd6576 add '6543210123456789' 1 -> '6543210123456790'
ddadd6577 add '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded
ddadd6578 add '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded
ddadd6579 add '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded
-- critical few with even bottom digit...
ddadd7540 add '6543210123456788' 0.499999999 -> '6543210123456788' Inexact Rounded
ddadd7541 add '6543210123456788' 0.5 -> '6543210123456788' Inexact Rounded
ddadd7542 add '6543210123456788' 0.500000001 -> '6543210123456789' Inexact Rounded
rounding: down
ddadd7550 add '6543210123456789' 0 -> '6543210123456789'
ddadd7551 add '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded
ddadd7552 add '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded
ddadd7553 add '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded
ddadd7554 add '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded
ddadd7555 add '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded
ddadd7556 add '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded
ddadd7557 add '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded
ddadd7558 add '6543210123456789' 0.5 -> '6543210123456789' Inexact Rounded
ddadd7559 add '6543210123456789' 0.500000001 -> '6543210123456789' Inexact Rounded
ddadd7560 add '6543210123456789' 0.500001 -> '6543210123456789' Inexact Rounded
ddadd7561 add '6543210123456789' 0.51 -> '6543210123456789' Inexact Rounded
ddadd7562 add '6543210123456789' 0.6 -> '6543210123456789' Inexact Rounded
ddadd7563 add '6543210123456789' 0.9 -> '6543210123456789' Inexact Rounded
ddadd7564 add '6543210123456789' 0.99999 -> '6543210123456789' Inexact Rounded
ddadd7565 add '6543210123456789' 0.999999999 -> '6543210123456789' Inexact Rounded
ddadd7566 add '6543210123456789' 1 -> '6543210123456790'
ddadd7567 add '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded
ddadd7568 add '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded
ddadd7569 add '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded
-- verify a query
rounding: down
ddadd7661 add 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded
ddadd7662 add 0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded
ddadd7663 add 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded
ddadd7664 add 0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded
-- more zeros, etc.
rounding: half_even
ddadd7701 add 5.00 1.00E-3 -> 5.00100
ddadd7702 add 00.00 0.000 -> 0.000
ddadd7703 add 00.00 0E-3 -> 0.000
ddadd7704 add 0E-3 00.00 -> 0.000
ddadd7710 add 0E+3 00.00 -> 0.00
ddadd7711 add 0E+3 00.0 -> 0.0
ddadd7712 add 0E+3 00. -> 0
ddadd7713 add 0E+3 00.E+1 -> 0E+1
ddadd7714 add 0E+3 00.E+2 -> 0E+2
ddadd7715 add 0E+3 00.E+3 -> 0E+3
ddadd7716 add 0E+3 00.E+4 -> 0E+3
ddadd7717 add 0E+3 00.E+5 -> 0E+3
ddadd7718 add 0E+3 -00.0 -> 0.0
ddadd7719 add 0E+3 -00. -> 0
ddadd7731 add 0E+3 -00.E+1 -> 0E+1
ddadd7720 add 00.00 0E+3 -> 0.00
ddadd7721 add 00.0 0E+3 -> 0.0
ddadd7722 add 00. 0E+3 -> 0
ddadd7723 add 00.E+1 0E+3 -> 0E+1
ddadd7724 add 00.E+2 0E+3 -> 0E+2
ddadd7725 add 00.E+3 0E+3 -> 0E+3
ddadd7726 add 00.E+4 0E+3 -> 0E+3
ddadd7727 add 00.E+5 0E+3 -> 0E+3
ddadd7728 add -00.00 0E+3 -> 0.00
ddadd7729 add -00.0 0E+3 -> 0.0
ddadd7730 add -00. 0E+3 -> 0
ddadd7732 add 0 0 -> 0
ddadd7733 add 0 -0 -> 0
ddadd7734 add -0 0 -> 0
ddadd7735 add -0 -0 -> -0 -- IEEE 854 special case
ddadd7736 add 1 -1 -> 0
ddadd7737 add -1 -1 -> -2
ddadd7738 add 1 1 -> 2
ddadd7739 add -1 1 -> 0
ddadd7741 add 0 -1 -> -1
ddadd7742 add -0 -1 -> -1
ddadd7743 add 0 1 -> 1
ddadd7744 add -0 1 -> 1
ddadd7745 add -1 0 -> -1
ddadd7746 add -1 -0 -> -1
ddadd7747 add 1 0 -> 1
ddadd7748 add 1 -0 -> 1
ddadd7751 add 0.0 -1 -> -1.0
ddadd7752 add -0.0 -1 -> -1.0
ddadd7753 add 0.0 1 -> 1.0
ddadd7754 add -0.0 1 -> 1.0
ddadd7755 add -1.0 0 -> -1.0
ddadd7756 add -1.0 -0 -> -1.0
ddadd7757 add 1.0 0 -> 1.0
ddadd7758 add 1.0 -0 -> 1.0
ddadd7761 add 0 -1.0 -> -1.0
ddadd7762 add -0 -1.0 -> -1.0
ddadd7763 add 0 1.0 -> 1.0
ddadd7764 add -0 1.0 -> 1.0
ddadd7765 add -1 0.0 -> -1.0
ddadd7766 add -1 -0.0 -> -1.0
ddadd7767 add 1 0.0 -> 1.0
ddadd7768 add 1 -0.0 -> 1.0
ddadd7771 add 0.0 -1.0 -> -1.0
ddadd7772 add -0.0 -1.0 -> -1.0
ddadd7773 add 0.0 1.0 -> 1.0
ddadd7774 add -0.0 1.0 -> 1.0
ddadd7775 add -1.0 0.0 -> -1.0
ddadd7776 add -1.0 -0.0 -> -1.0
ddadd7777 add 1.0 0.0 -> 1.0
ddadd7778 add 1.0 -0.0 -> 1.0
-- Specials
ddadd7780 add -Inf -Inf -> -Infinity
ddadd7781 add -Inf -1000 -> -Infinity
ddadd7782 add -Inf -1 -> -Infinity
ddadd7783 add -Inf -0 -> -Infinity
ddadd7784 add -Inf 0 -> -Infinity
ddadd7785 add -Inf 1 -> -Infinity
ddadd7786 add -Inf 1000 -> -Infinity
ddadd7787 add -1000 -Inf -> -Infinity
ddadd7788 add -Inf -Inf -> -Infinity
ddadd7789 add -1 -Inf -> -Infinity
ddadd7790 add -0 -Inf -> -Infinity
ddadd7791 add 0 -Inf -> -Infinity
ddadd7792 add 1 -Inf -> -Infinity
ddadd7793 add 1000 -Inf -> -Infinity
ddadd7794 add Inf -Inf -> NaN Invalid_operation
ddadd7800 add Inf -Inf -> NaN Invalid_operation
ddadd7801 add Inf -1000 -> Infinity
ddadd7802 add Inf -1 -> Infinity
ddadd7803 add Inf -0 -> Infinity
ddadd7804 add Inf 0 -> Infinity
ddadd7805 add Inf 1 -> Infinity
ddadd7806 add Inf 1000 -> Infinity
ddadd7807 add Inf Inf -> Infinity
ddadd7808 add -1000 Inf -> Infinity
ddadd7809 add -Inf Inf -> NaN Invalid_operation
ddadd7810 add -1 Inf -> Infinity
ddadd7811 add -0 Inf -> Infinity
ddadd7812 add 0 Inf -> Infinity
ddadd7813 add 1 Inf -> Infinity
ddadd7814 add 1000 Inf -> Infinity
ddadd7815 add Inf Inf -> Infinity
ddadd7821 add NaN -Inf -> NaN
ddadd7822 add NaN -1000 -> NaN
ddadd7823 add NaN -1 -> NaN
ddadd7824 add NaN -0 -> NaN
ddadd7825 add NaN 0 -> NaN
ddadd7826 add NaN 1 -> NaN
ddadd7827 add NaN 1000 -> NaN
ddadd7828 add NaN Inf -> NaN
ddadd7829 add NaN NaN -> NaN
ddadd7830 add -Inf NaN -> NaN
ddadd7831 add -1000 NaN -> NaN
ddadd7832 add -1 NaN -> NaN
ddadd7833 add -0 NaN -> NaN
ddadd7834 add 0 NaN -> NaN
ddadd7835 add 1 NaN -> NaN
ddadd7836 add 1000 NaN -> NaN
ddadd7837 add Inf NaN -> NaN
ddadd7841 add sNaN -Inf -> NaN Invalid_operation
ddadd7842 add sNaN -1000 -> NaN Invalid_operation
ddadd7843 add sNaN -1 -> NaN Invalid_operation
ddadd7844 add sNaN -0 -> NaN Invalid_operation
ddadd7845 add sNaN 0 -> NaN Invalid_operation
ddadd7846 add sNaN 1 -> NaN Invalid_operation
ddadd7847 add sNaN 1000 -> NaN Invalid_operation
ddadd7848 add sNaN NaN -> NaN Invalid_operation
ddadd7849 add sNaN sNaN -> NaN Invalid_operation
ddadd7850 add NaN sNaN -> NaN Invalid_operation
ddadd7851 add -Inf sNaN -> NaN Invalid_operation
ddadd7852 add -1000 sNaN -> NaN Invalid_operation
ddadd7853 add -1 sNaN -> NaN Invalid_operation
ddadd7854 add -0 sNaN -> NaN Invalid_operation
ddadd7855 add 0 sNaN -> NaN Invalid_operation
ddadd7856 add 1 sNaN -> NaN Invalid_operation
ddadd7857 add 1000 sNaN -> NaN Invalid_operation
ddadd7858 add Inf sNaN -> NaN Invalid_operation
ddadd7859 add NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
ddadd7861 add NaN1 -Inf -> NaN1
ddadd7862 add +NaN2 -1000 -> NaN2
ddadd7863 add NaN3 1000 -> NaN3
ddadd7864 add NaN4 Inf -> NaN4
ddadd7865 add NaN5 +NaN6 -> NaN5
ddadd7866 add -Inf NaN7 -> NaN7
ddadd7867 add -1000 NaN8 -> NaN8
ddadd7868 add 1000 NaN9 -> NaN9
ddadd7869 add Inf +NaN10 -> NaN10
ddadd7871 add sNaN11 -Inf -> NaN11 Invalid_operation
ddadd7872 add sNaN12 -1000 -> NaN12 Invalid_operation
ddadd7873 add sNaN13 1000 -> NaN13 Invalid_operation
ddadd7874 add sNaN14 NaN17 -> NaN14 Invalid_operation
ddadd7875 add sNaN15 sNaN18 -> NaN15 Invalid_operation
ddadd7876 add NaN16 sNaN19 -> NaN19 Invalid_operation
ddadd7877 add -Inf +sNaN20 -> NaN20 Invalid_operation
ddadd7878 add -1000 sNaN21 -> NaN21 Invalid_operation
ddadd7879 add 1000 sNaN22 -> NaN22 Invalid_operation
ddadd7880 add Inf sNaN23 -> NaN23 Invalid_operation
ddadd7881 add +NaN25 +sNaN24 -> NaN24 Invalid_operation
ddadd7882 add -NaN26 NaN28 -> -NaN26
ddadd7883 add -sNaN27 sNaN29 -> -NaN27 Invalid_operation
ddadd7884 add 1000 -NaN30 -> -NaN30
ddadd7885 add 1000 -sNaN31 -> -NaN31 Invalid_operation
-- Here we explore near the boundary of rounding a subnormal to Nmin
ddadd7575 add 1E-383 -1E-398 -> 9.99999999999999E-384 Subnormal
ddadd7576 add -1E-383 +1E-398 -> -9.99999999999999E-384 Subnormal
-- check overflow edge case
-- 1234567890123456
ddadd7972 apply 9.999999999999999E+384 -> 9.999999999999999E+384
ddadd7973 add 9.999999999999999E+384 1 -> 9.999999999999999E+384 Inexact Rounded
ddadd7974 add 9999999999999999E+369 1 -> 9.999999999999999E+384 Inexact Rounded
ddadd7975 add 9999999999999999E+369 1E+369 -> Infinity Overflow Inexact Rounded
ddadd7976 add 9999999999999999E+369 9E+368 -> Infinity Overflow Inexact Rounded
ddadd7977 add 9999999999999999E+369 8E+368 -> Infinity Overflow Inexact Rounded
ddadd7978 add 9999999999999999E+369 7E+368 -> Infinity Overflow Inexact Rounded
ddadd7979 add 9999999999999999E+369 6E+368 -> Infinity Overflow Inexact Rounded
ddadd7980 add 9999999999999999E+369 5E+368 -> Infinity Overflow Inexact Rounded
ddadd7981 add 9999999999999999E+369 4E+368 -> 9.999999999999999E+384 Inexact Rounded
ddadd7982 add 9999999999999999E+369 3E+368 -> 9.999999999999999E+384 Inexact Rounded
ddadd7983 add 9999999999999999E+369 2E+368 -> 9.999999999999999E+384 Inexact Rounded
ddadd7984 add 9999999999999999E+369 1E+368 -> 9.999999999999999E+384 Inexact Rounded
ddadd7985 apply -9.999999999999999E+384 -> -9.999999999999999E+384
ddadd7986 add -9.999999999999999E+384 -1 -> -9.999999999999999E+384 Inexact Rounded
ddadd7987 add -9999999999999999E+369 -1 -> -9.999999999999999E+384 Inexact Rounded
ddadd7988 add -9999999999999999E+369 -1E+369 -> -Infinity Overflow Inexact Rounded
ddadd7989 add -9999999999999999E+369 -9E+368 -> -Infinity Overflow Inexact Rounded
ddadd7990 add -9999999999999999E+369 -8E+368 -> -Infinity Overflow Inexact Rounded
ddadd7991 add -9999999999999999E+369 -7E+368 -> -Infinity Overflow Inexact Rounded
ddadd7992 add -9999999999999999E+369 -6E+368 -> -Infinity Overflow Inexact Rounded
ddadd7993 add -9999999999999999E+369 -5E+368 -> -Infinity Overflow Inexact Rounded
ddadd7994 add -9999999999999999E+369 -4E+368 -> -9.999999999999999E+384 Inexact Rounded
ddadd7995 add -9999999999999999E+369 -3E+368 -> -9.999999999999999E+384 Inexact Rounded
ddadd7996 add -9999999999999999E+369 -2E+368 -> -9.999999999999999E+384 Inexact Rounded
ddadd7997 add -9999999999999999E+369 -1E+368 -> -9.999999999999999E+384 Inexact Rounded
-- And for round down full and subnormal results
rounding: down
ddadd71100 add 1e+2 -1e-383 -> 99.99999999999999 Rounded Inexact
ddadd71101 add 1e+1 -1e-383 -> 9.999999999999999 Rounded Inexact
ddadd71103 add +1 -1e-383 -> 0.9999999999999999 Rounded Inexact
ddadd71104 add 1e-1 -1e-383 -> 0.09999999999999999 Rounded Inexact
ddadd71105 add 1e-2 -1e-383 -> 0.009999999999999999 Rounded Inexact
ddadd71106 add 1e-3 -1e-383 -> 0.0009999999999999999 Rounded Inexact
ddadd71107 add 1e-4 -1e-383 -> 0.00009999999999999999 Rounded Inexact
ddadd71108 add 1e-5 -1e-383 -> 0.000009999999999999999 Rounded Inexact
ddadd71109 add 1e-6 -1e-383 -> 9.999999999999999E-7 Rounded Inexact
rounding: ceiling
ddadd71110 add -1e+2 +1e-383 -> -99.99999999999999 Rounded Inexact
ddadd71111 add -1e+1 +1e-383 -> -9.999999999999999 Rounded Inexact
ddadd71113 add -1 +1e-383 -> -0.9999999999999999 Rounded Inexact
ddadd71114 add -1e-1 +1e-383 -> -0.09999999999999999 Rounded Inexact
ddadd71115 add -1e-2 +1e-383 -> -0.009999999999999999 Rounded Inexact
ddadd71116 add -1e-3 +1e-383 -> -0.0009999999999999999 Rounded Inexact
ddadd71117 add -1e-4 +1e-383 -> -0.00009999999999999999 Rounded Inexact
ddadd71118 add -1e-5 +1e-383 -> -0.000009999999999999999 Rounded Inexact
ddadd71119 add -1e-6 +1e-383 -> -9.999999999999999E-7 Rounded Inexact
-- tests based on Gunnar Degnbol's edge case
rounding: half_even
ddadd71300 add 1E16 -0.5 -> 1.000000000000000E+16 Inexact Rounded
ddadd71310 add 1E16 -0.51 -> 9999999999999999 Inexact Rounded
ddadd71311 add 1E16 -0.501 -> 9999999999999999 Inexact Rounded
ddadd71312 add 1E16 -0.5001 -> 9999999999999999 Inexact Rounded
ddadd71313 add 1E16 -0.50001 -> 9999999999999999 Inexact Rounded
ddadd71314 add 1E16 -0.500001 -> 9999999999999999 Inexact Rounded
ddadd71315 add 1E16 -0.5000001 -> 9999999999999999 Inexact Rounded
ddadd71316 add 1E16 -0.50000001 -> 9999999999999999 Inexact Rounded
ddadd71317 add 1E16 -0.500000001 -> 9999999999999999 Inexact Rounded
ddadd71318 add 1E16 -0.5000000001 -> 9999999999999999 Inexact Rounded
ddadd71319 add 1E16 -0.50000000001 -> 9999999999999999 Inexact Rounded
ddadd71320 add 1E16 -0.500000000001 -> 9999999999999999 Inexact Rounded
ddadd71321 add 1E16 -0.5000000000001 -> 9999999999999999 Inexact Rounded
ddadd71322 add 1E16 -0.50000000000001 -> 9999999999999999 Inexact Rounded
ddadd71323 add 1E16 -0.500000000000001 -> 9999999999999999 Inexact Rounded
ddadd71324 add 1E16 -0.5000000000000001 -> 9999999999999999 Inexact Rounded
ddadd71325 add 1E16 -0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71326 add 1E16 -0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71327 add 1E16 -0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71328 add 1E16 -0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71329 add 1E16 -0.500000000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71330 add 1E16 -0.50000000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71331 add 1E16 -0.5000000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71332 add 1E16 -0.500000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71333 add 1E16 -0.50000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71334 add 1E16 -0.5000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71335 add 1E16 -0.500000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71336 add 1E16 -0.50000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71337 add 1E16 -0.5000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71338 add 1E16 -0.500 -> 1.000000000000000E+16 Inexact Rounded
ddadd71339 add 1E16 -0.50 -> 1.000000000000000E+16 Inexact Rounded
ddadd71340 add 1E16 -5000000.000010001 -> 9999999995000000 Inexact Rounded
ddadd71341 add 1E16 -5000000.000000001 -> 9999999995000000 Inexact Rounded
ddadd71349 add 9999999999999999 0.4 -> 9999999999999999 Inexact Rounded
ddadd71350 add 9999999999999999 0.49 -> 9999999999999999 Inexact Rounded
ddadd71351 add 9999999999999999 0.499 -> 9999999999999999 Inexact Rounded
ddadd71352 add 9999999999999999 0.4999 -> 9999999999999999 Inexact Rounded
ddadd71353 add 9999999999999999 0.49999 -> 9999999999999999 Inexact Rounded
ddadd71354 add 9999999999999999 0.499999 -> 9999999999999999 Inexact Rounded
ddadd71355 add 9999999999999999 0.4999999 -> 9999999999999999 Inexact Rounded
ddadd71356 add 9999999999999999 0.49999999 -> 9999999999999999 Inexact Rounded
ddadd71357 add 9999999999999999 0.499999999 -> 9999999999999999 Inexact Rounded
ddadd71358 add 9999999999999999 0.4999999999 -> 9999999999999999 Inexact Rounded
ddadd71359 add 9999999999999999 0.49999999999 -> 9999999999999999 Inexact Rounded
ddadd71360 add 9999999999999999 0.499999999999 -> 9999999999999999 Inexact Rounded
ddadd71361 add 9999999999999999 0.4999999999999 -> 9999999999999999 Inexact Rounded
ddadd71362 add 9999999999999999 0.49999999999999 -> 9999999999999999 Inexact Rounded
ddadd71363 add 9999999999999999 0.499999999999999 -> 9999999999999999 Inexact Rounded
ddadd71364 add 9999999999999999 0.4999999999999999 -> 9999999999999999 Inexact Rounded
ddadd71365 add 9999999999999999 0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71367 add 9999999999999999 0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71368 add 9999999999999999 0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71369 add 9999999999999999 0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71370 add 9999999999999999 0.500000000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71371 add 9999999999999999 0.50000000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71372 add 9999999999999999 0.5000000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71373 add 9999999999999999 0.500000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71374 add 9999999999999999 0.50000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71375 add 9999999999999999 0.5000000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71376 add 9999999999999999 0.500000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71377 add 9999999999999999 0.50000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71378 add 9999999999999999 0.5000 -> 1.000000000000000E+16 Inexact Rounded
ddadd71379 add 9999999999999999 0.500 -> 1.000000000000000E+16 Inexact Rounded
ddadd71380 add 9999999999999999 0.50 -> 1.000000000000000E+16 Inexact Rounded
ddadd71381 add 9999999999999999 0.5 -> 1.000000000000000E+16 Inexact Rounded
ddadd71382 add 9999999999999999 0.5000000000000001 -> 1.000000000000000E+16 Inexact Rounded
ddadd71383 add 9999999999999999 0.500000000000001 -> 1.000000000000000E+16 Inexact Rounded
ddadd71384 add 9999999999999999 0.50000000000001 -> 1.000000000000000E+16 Inexact Rounded
ddadd71385 add 9999999999999999 0.5000000000001 -> 1.000000000000000E+16 Inexact Rounded
ddadd71386 add 9999999999999999 0.500000000001 -> 1.000000000000000E+16 Inexact Rounded
ddadd71387 add 9999999999999999 0.50000000001 -> 1.000000000000000E+16 Inexact Rounded
ddadd71388 add 9999999999999999 0.5000000001 -> 1.000000000000000E+16 Inexact Rounded
ddadd71389 add 9999999999999999 0.500000001 -> 1.000000000000000E+16 Inexact Rounded
ddadd71390 add 9999999999999999 0.50000001 -> 1.000000000000000E+16 Inexact Rounded
ddadd71391 add 9999999999999999 0.5000001 -> 1.000000000000000E+16 Inexact Rounded
ddadd71392 add 9999999999999999 0.500001 -> 1.000000000000000E+16 Inexact Rounded
ddadd71393 add 9999999999999999 0.50001 -> 1.000000000000000E+16 Inexact Rounded
ddadd71394 add 9999999999999999 0.5001 -> 1.000000000000000E+16 Inexact Rounded
ddadd71395 add 9999999999999999 0.501 -> 1.000000000000000E+16 Inexact Rounded
ddadd71396 add 9999999999999999 0.51 -> 1.000000000000000E+16 Inexact Rounded
-- More GD edge cases, where difference between the unadjusted
-- exponents is larger than the maximum precision and one side is 0
ddadd71420 add 0 1.123456789012345 -> 1.123456789012345
ddadd71421 add 0 1.123456789012345E-1 -> 0.1123456789012345
ddadd71422 add 0 1.123456789012345E-2 -> 0.01123456789012345
ddadd71423 add 0 1.123456789012345E-3 -> 0.001123456789012345
ddadd71424 add 0 1.123456789012345E-4 -> 0.0001123456789012345
ddadd71425 add 0 1.123456789012345E-5 -> 0.00001123456789012345
ddadd71426 add 0 1.123456789012345E-6 -> 0.000001123456789012345
ddadd71427 add 0 1.123456789012345E-7 -> 1.123456789012345E-7
ddadd71428 add 0 1.123456789012345E-8 -> 1.123456789012345E-8
ddadd71429 add 0 1.123456789012345E-9 -> 1.123456789012345E-9
ddadd71430 add 0 1.123456789012345E-10 -> 1.123456789012345E-10
ddadd71431 add 0 1.123456789012345E-11 -> 1.123456789012345E-11
ddadd71432 add 0 1.123456789012345E-12 -> 1.123456789012345E-12
ddadd71433 add 0 1.123456789012345E-13 -> 1.123456789012345E-13
ddadd71434 add 0 1.123456789012345E-14 -> 1.123456789012345E-14
ddadd71435 add 0 1.123456789012345E-15 -> 1.123456789012345E-15
ddadd71436 add 0 1.123456789012345E-16 -> 1.123456789012345E-16
ddadd71437 add 0 1.123456789012345E-17 -> 1.123456789012345E-17
ddadd71438 add 0 1.123456789012345E-18 -> 1.123456789012345E-18
ddadd71439 add 0 1.123456789012345E-19 -> 1.123456789012345E-19
-- same, reversed 0
ddadd71440 add 1.123456789012345 0 -> 1.123456789012345
ddadd71441 add 1.123456789012345E-1 0 -> 0.1123456789012345
ddadd71442 add 1.123456789012345E-2 0 -> 0.01123456789012345
ddadd71443 add 1.123456789012345E-3 0 -> 0.001123456789012345
ddadd71444 add 1.123456789012345E-4 0 -> 0.0001123456789012345
ddadd71445 add 1.123456789012345E-5 0 -> 0.00001123456789012345
ddadd71446 add 1.123456789012345E-6 0 -> 0.000001123456789012345
ddadd71447 add 1.123456789012345E-7 0 -> 1.123456789012345E-7
ddadd71448 add 1.123456789012345E-8 0 -> 1.123456789012345E-8
ddadd71449 add 1.123456789012345E-9 0 -> 1.123456789012345E-9
ddadd71450 add 1.123456789012345E-10 0 -> 1.123456789012345E-10
ddadd71451 add 1.123456789012345E-11 0 -> 1.123456789012345E-11
ddadd71452 add 1.123456789012345E-12 0 -> 1.123456789012345E-12
ddadd71453 add 1.123456789012345E-13 0 -> 1.123456789012345E-13
ddadd71454 add 1.123456789012345E-14 0 -> 1.123456789012345E-14
ddadd71455 add 1.123456789012345E-15 0 -> 1.123456789012345E-15
ddadd71456 add 1.123456789012345E-16 0 -> 1.123456789012345E-16
ddadd71457 add 1.123456789012345E-17 0 -> 1.123456789012345E-17
ddadd71458 add 1.123456789012345E-18 0 -> 1.123456789012345E-18
ddadd71459 add 1.123456789012345E-19 0 -> 1.123456789012345E-19
-- same, Es on the 0
ddadd71460 add 1.123456789012345 0E-0 -> 1.123456789012345
ddadd71461 add 1.123456789012345 0E-1 -> 1.123456789012345
ddadd71462 add 1.123456789012345 0E-2 -> 1.123456789012345
ddadd71463 add 1.123456789012345 0E-3 -> 1.123456789012345
ddadd71464 add 1.123456789012345 0E-4 -> 1.123456789012345
ddadd71465 add 1.123456789012345 0E-5 -> 1.123456789012345
ddadd71466 add 1.123456789012345 0E-6 -> 1.123456789012345
ddadd71467 add 1.123456789012345 0E-7 -> 1.123456789012345
ddadd71468 add 1.123456789012345 0E-8 -> 1.123456789012345
ddadd71469 add 1.123456789012345 0E-9 -> 1.123456789012345
ddadd71470 add 1.123456789012345 0E-10 -> 1.123456789012345
ddadd71471 add 1.123456789012345 0E-11 -> 1.123456789012345
ddadd71472 add 1.123456789012345 0E-12 -> 1.123456789012345
ddadd71473 add 1.123456789012345 0E-13 -> 1.123456789012345
ddadd71474 add 1.123456789012345 0E-14 -> 1.123456789012345
ddadd71475 add 1.123456789012345 0E-15 -> 1.123456789012345
-- next four flag Rounded because the 0 extends the result
ddadd71476 add 1.123456789012345 0E-16 -> 1.123456789012345 Rounded
ddadd71477 add 1.123456789012345 0E-17 -> 1.123456789012345 Rounded
ddadd71478 add 1.123456789012345 0E-18 -> 1.123456789012345 Rounded
ddadd71479 add 1.123456789012345 0E-19 -> 1.123456789012345 Rounded
-- sum of two opposite-sign operands is exactly 0 and floor => -0
rounding: half_up
-- exact zeros from zeros
ddadd71500 add 0 0E-19 -> 0E-19
ddadd71501 add -0 0E-19 -> 0E-19
ddadd71502 add 0 -0E-19 -> 0E-19
ddadd71503 add -0 -0E-19 -> -0E-19
-- exact zeros from non-zeros
ddadd71511 add -11 11 -> 0
ddadd71512 add 11 -11 -> 0
rounding: half_down
-- exact zeros from zeros
ddadd71520 add 0 0E-19 -> 0E-19
ddadd71521 add -0 0E-19 -> 0E-19
ddadd71522 add 0 -0E-19 -> 0E-19
ddadd71523 add -0 -0E-19 -> -0E-19
-- exact zeros from non-zeros
ddadd71531 add -11 11 -> 0
ddadd71532 add 11 -11 -> 0
rounding: half_even
-- exact zeros from zeros
ddadd71540 add 0 0E-19 -> 0E-19
ddadd71541 add -0 0E-19 -> 0E-19
ddadd71542 add 0 -0E-19 -> 0E-19
ddadd71543 add -0 -0E-19 -> -0E-19
-- exact zeros from non-zeros
ddadd71551 add -11 11 -> 0
ddadd71552 add 11 -11 -> 0
rounding: up
-- exact zeros from zeros
ddadd71560 add 0 0E-19 -> 0E-19
ddadd71561 add -0 0E-19 -> 0E-19
ddadd71562 add 0 -0E-19 -> 0E-19
ddadd71563 add -0 -0E-19 -> -0E-19
-- exact zeros from non-zeros
ddadd71571 add -11 11 -> 0
ddadd71572 add 11 -11 -> 0
rounding: down
-- exact zeros from zeros
ddadd71580 add 0 0E-19 -> 0E-19
ddadd71581 add -0 0E-19 -> 0E-19
ddadd71582 add 0 -0E-19 -> 0E-19
ddadd71583 add -0 -0E-19 -> -0E-19
-- exact zeros from non-zeros
ddadd71591 add -11 11 -> 0
ddadd71592 add 11 -11 -> 0
rounding: ceiling
-- exact zeros from zeros
ddadd71600 add 0 0E-19 -> 0E-19
ddadd71601 add -0 0E-19 -> 0E-19
ddadd71602 add 0 -0E-19 -> 0E-19
ddadd71603 add -0 -0E-19 -> -0E-19
-- exact zeros from non-zeros
ddadd71611 add -11 11 -> 0
ddadd71612 add 11 -11 -> 0
-- and the extra-special ugly case; unusual minuses marked by -- *
rounding: floor
-- exact zeros from zeros
ddadd71620 add 0 0E-19 -> 0E-19
ddadd71621 add -0 0E-19 -> -0E-19 -- *
ddadd71622 add 0 -0E-19 -> -0E-19 -- *
ddadd71623 add -0 -0E-19 -> -0E-19
-- exact zeros from non-zeros
ddadd71631 add -11 11 -> -0 -- *
ddadd71632 add 11 -11 -> -0 -- *
-- Examples from SQL proposal (Krishna Kulkarni)
ddadd71701 add 130E-2 120E-2 -> 2.50
ddadd71702 add 130E-2 12E-1 -> 2.50
ddadd71703 add 130E-2 1E0 -> 2.30
ddadd71704 add 1E2 1E4 -> 1.01E+4
ddadd71705 add 130E-2 -120E-2 -> 0.10
ddadd71706 add 130E-2 -12E-1 -> 0.10
ddadd71707 add 130E-2 -1E0 -> 0.30
ddadd71708 add 1E2 -1E4 -> -9.9E+3
-- query from Vincent Kulandaisamy
rounding: ceiling
ddadd71801 add 7.8822773805862E+277 -5.1757503820663E-21 -> 7.882277380586200E+277 Inexact Rounded
ddadd71802 add 7.882277380586200E+277 12.341 -> 7.882277380586201E+277 Inexact Rounded
ddadd71803 add 7.882277380586201E+277 2.7270545046613E-31 -> 7.882277380586202E+277 Inexact Rounded
ddadd71811 add 12.341 -5.1757503820663E-21 -> 12.34100000000000 Inexact Rounded
ddadd71812 add 12.34100000000000 2.7270545046613E-31 -> 12.34100000000001 Inexact Rounded
ddadd71813 add 12.34100000000001 7.8822773805862E+277 -> 7.882277380586201E+277 Inexact Rounded
-- Gappy coefficients; check residue handling even with full coefficient gap
rounding: half_even
ddadd75001 add 1234567890123456 1 -> 1234567890123457
ddadd75002 add 1234567890123456 0.6 -> 1234567890123457 Inexact Rounded
ddadd75003 add 1234567890123456 0.06 -> 1234567890123456 Inexact Rounded
ddadd75004 add 1234567890123456 6E-3 -> 1234567890123456 Inexact Rounded
ddadd75005 add 1234567890123456 6E-4 -> 1234567890123456 Inexact Rounded
ddadd75006 add 1234567890123456 6E-5 -> 1234567890123456 Inexact Rounded
ddadd75007 add 1234567890123456 6E-6 -> 1234567890123456 Inexact Rounded
ddadd75008 add 1234567890123456 6E-7 -> 1234567890123456 Inexact Rounded
ddadd75009 add 1234567890123456 6E-8 -> 1234567890123456 Inexact Rounded
ddadd75010 add 1234567890123456 6E-9 -> 1234567890123456 Inexact Rounded
ddadd75011 add 1234567890123456 6E-10 -> 1234567890123456 Inexact Rounded
ddadd75012 add 1234567890123456 6E-11 -> 1234567890123456 Inexact Rounded
ddadd75013 add 1234567890123456 6E-12 -> 1234567890123456 Inexact Rounded
ddadd75014 add 1234567890123456 6E-13 -> 1234567890123456 Inexact Rounded
ddadd75015 add 1234567890123456 6E-14 -> 1234567890123456 Inexact Rounded
ddadd75016 add 1234567890123456 6E-15 -> 1234567890123456 Inexact Rounded
ddadd75017 add 1234567890123456 6E-16 -> 1234567890123456 Inexact Rounded
ddadd75018 add 1234567890123456 6E-17 -> 1234567890123456 Inexact Rounded
ddadd75019 add 1234567890123456 6E-18 -> 1234567890123456 Inexact Rounded
ddadd75020 add 1234567890123456 6E-19 -> 1234567890123456 Inexact Rounded
ddadd75021 add 1234567890123456 6E-20 -> 1234567890123456 Inexact Rounded
-- widening second argument at gap
ddadd75030 add 12345678 1 -> 12345679
ddadd75031 add 12345678 0.1 -> 12345678.1
ddadd75032 add 12345678 0.12 -> 12345678.12
ddadd75033 add 12345678 0.123 -> 12345678.123
ddadd75034 add 12345678 0.1234 -> 12345678.1234
ddadd75035 add 12345678 0.12345 -> 12345678.12345
ddadd75036 add 12345678 0.123456 -> 12345678.123456
ddadd75037 add 12345678 0.1234567 -> 12345678.1234567
ddadd75038 add 12345678 0.12345678 -> 12345678.12345678
ddadd75039 add 12345678 0.123456789 -> 12345678.12345679 Inexact Rounded
ddadd75040 add 12345678 0.123456785 -> 12345678.12345678 Inexact Rounded
ddadd75041 add 12345678 0.1234567850 -> 12345678.12345678 Inexact Rounded
ddadd75042 add 12345678 0.1234567851 -> 12345678.12345679 Inexact Rounded
ddadd75043 add 12345678 0.12345678501 -> 12345678.12345679 Inexact Rounded
ddadd75044 add 12345678 0.123456785001 -> 12345678.12345679 Inexact Rounded
ddadd75045 add 12345678 0.1234567850001 -> 12345678.12345679 Inexact Rounded
ddadd75046 add 12345678 0.12345678500001 -> 12345678.12345679 Inexact Rounded
ddadd75047 add 12345678 0.123456785000001 -> 12345678.12345679 Inexact Rounded
ddadd75048 add 12345678 0.1234567850000001 -> 12345678.12345679 Inexact Rounded
ddadd75049 add 12345678 0.1234567850000000 -> 12345678.12345678 Inexact Rounded
-- 90123456
rounding: half_even
ddadd75050 add 12345678 0.0234567750000000 -> 12345678.02345678 Inexact Rounded
ddadd75051 add 12345678 0.0034567750000000 -> 12345678.00345678 Inexact Rounded
ddadd75052 add 12345678 0.0004567750000000 -> 12345678.00045678 Inexact Rounded
ddadd75053 add 12345678 0.0000567750000000 -> 12345678.00005678 Inexact Rounded
ddadd75054 add 12345678 0.0000067750000000 -> 12345678.00000678 Inexact Rounded
ddadd75055 add 12345678 0.0000007750000000 -> 12345678.00000078 Inexact Rounded
ddadd75056 add 12345678 0.0000000750000000 -> 12345678.00000008 Inexact Rounded
ddadd75057 add 12345678 0.0000000050000000 -> 12345678.00000000 Inexact Rounded
ddadd75060 add 12345678 0.0234567750000001 -> 12345678.02345678 Inexact Rounded
ddadd75061 add 12345678 0.0034567750000001 -> 12345678.00345678 Inexact Rounded
ddadd75062 add 12345678 0.0004567750000001 -> 12345678.00045678 Inexact Rounded
ddadd75063 add 12345678 0.0000567750000001 -> 12345678.00005678 Inexact Rounded
ddadd75064 add 12345678 0.0000067750000001 -> 12345678.00000678 Inexact Rounded
ddadd75065 add 12345678 0.0000007750000001 -> 12345678.00000078 Inexact Rounded
ddadd75066 add 12345678 0.0000000750000001 -> 12345678.00000008 Inexact Rounded
ddadd75067 add 12345678 0.0000000050000001 -> 12345678.00000001 Inexact Rounded
-- far-out residues (full coefficient gap is 16+15 digits)
rounding: up
ddadd75070 add 12345678 1E-8 -> 12345678.00000001
ddadd75071 add 12345678 1E-9 -> 12345678.00000001 Inexact Rounded
ddadd75072 add 12345678 1E-10 -> 12345678.00000001 Inexact Rounded
ddadd75073 add 12345678 1E-11 -> 12345678.00000001 Inexact Rounded
ddadd75074 add 12345678 1E-12 -> 12345678.00000001 Inexact Rounded
ddadd75075 add 12345678 1E-13 -> 12345678.00000001 Inexact Rounded
ddadd75076 add 12345678 1E-14 -> 12345678.00000001 Inexact Rounded
ddadd75077 add 12345678 1E-15 -> 12345678.00000001 Inexact Rounded
ddadd75078 add 12345678 1E-16 -> 12345678.00000001 Inexact Rounded
ddadd75079 add 12345678 1E-17 -> 12345678.00000001 Inexact Rounded
ddadd75080 add 12345678 1E-18 -> 12345678.00000001 Inexact Rounded
ddadd75081 add 12345678 1E-19 -> 12345678.00000001 Inexact Rounded
ddadd75082 add 12345678 1E-20 -> 12345678.00000001 Inexact Rounded
ddadd75083 add 12345678 1E-25 -> 12345678.00000001 Inexact Rounded
ddadd75084 add 12345678 1E-30 -> 12345678.00000001 Inexact Rounded
ddadd75085 add 12345678 1E-31 -> 12345678.00000001 Inexact Rounded
ddadd75086 add 12345678 1E-32 -> 12345678.00000001 Inexact Rounded
ddadd75087 add 12345678 1E-33 -> 12345678.00000001 Inexact Rounded
ddadd75088 add 12345678 1E-34 -> 12345678.00000001 Inexact Rounded
ddadd75089 add 12345678 1E-35 -> 12345678.00000001 Inexact Rounded
-- Punit's
ddadd75100 add 1.000 -200.000 -> -199.000
-- Rounding swathe
rounding: half_even
ddadd81100 add .2300 12345678901234.00 -> 12345678901234.23 Rounded
ddadd81101 add .2301 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81102 add .2310 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81103 add .2350 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81104 add .2351 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81105 add .2450 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81106 add .2451 12345678901234.00 -> 12345678901234.25 Inexact Rounded
ddadd81107 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81108 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81109 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81120 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded
ddadd81121 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded
rounding: half_up
ddadd81200 add .2300 12345678901234.00 -> 12345678901234.23 Rounded
ddadd81201 add .2301 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81202 add .2310 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81203 add .2350 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81204 add .2351 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81205 add .2450 12345678901234.00 -> 12345678901234.25 Inexact Rounded
ddadd81206 add .2451 12345678901234.00 -> 12345678901234.25 Inexact Rounded
ddadd81207 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81208 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81209 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81220 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded
ddadd81221 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded
rounding: half_down
ddadd81300 add .2300 12345678901234.00 -> 12345678901234.23 Rounded
ddadd81301 add .2301 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81302 add .2310 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81303 add .2350 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81304 add .2351 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81305 add .2450 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81306 add .2451 12345678901234.00 -> 12345678901234.25 Inexact Rounded
ddadd81307 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81308 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81309 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81320 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded
ddadd81321 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded
rounding: up
ddadd81400 add .2300 12345678901234.00 -> 12345678901234.23 Rounded
ddadd81401 add .2301 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81402 add .2310 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81403 add .2350 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81404 add .2351 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81405 add .2450 12345678901234.00 -> 12345678901234.25 Inexact Rounded
ddadd81406 add .2451 12345678901234.00 -> 12345678901234.25 Inexact Rounded
ddadd81407 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81408 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81409 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81411 add -.2399 -12345678901234.00 -> -12345678901234.24 Inexact Rounded
ddadd81420 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded
ddadd81421 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded
rounding: down
ddadd81500 add .2300 12345678901234.00 -> 12345678901234.23 Rounded
ddadd81501 add .2301 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81502 add .2310 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81503 add .2350 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81504 add .2351 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81505 add .2450 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81506 add .2451 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81507 add .2360 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81508 add .2370 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81509 add .2399 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81511 add -.2399 -12345678901234.00 -> -12345678901234.23 Inexact Rounded
ddadd81520 add 9999999999999999E+369 9E+369 -> 9.999999999999999E+384 Overflow Inexact Rounded
ddadd81521 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow Inexact Rounded
rounding: ceiling
ddadd81600 add .2300 12345678901234.00 -> 12345678901234.23 Rounded
ddadd81601 add .2301 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81602 add .2310 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81603 add .2350 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81604 add .2351 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81605 add .2450 12345678901234.00 -> 12345678901234.25 Inexact Rounded
ddadd81606 add .2451 12345678901234.00 -> 12345678901234.25 Inexact Rounded
ddadd81607 add .2360 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81608 add .2370 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81609 add .2399 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81611 add -.2399 -12345678901234.00 -> -12345678901234.23 Inexact Rounded
ddadd81620 add 9999999999999999E+369 9E+369 -> Infinity Overflow Inexact Rounded
ddadd81621 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow Inexact Rounded
rounding: floor
ddadd81700 add .2300 12345678901234.00 -> 12345678901234.23 Rounded
ddadd81701 add .2301 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81702 add .2310 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81703 add .2350 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81704 add .2351 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81705 add .2450 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81706 add .2451 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd81707 add .2360 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81708 add .2370 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81709 add .2399 12345678901234.00 -> 12345678901234.23 Inexact Rounded
ddadd81711 add -.2399 -12345678901234.00 -> -12345678901234.24 Inexact Rounded
ddadd81720 add 9999999999999999E+369 9E+369 -> 9.999999999999999E+384 Overflow Inexact Rounded
ddadd81721 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow Inexact Rounded
rounding: 05up
ddadd81800 add .2000 12345678901234.00 -> 12345678901234.20 Rounded
ddadd81801 add .2001 12345678901234.00 -> 12345678901234.21 Inexact Rounded
ddadd81802 add .2010 12345678901234.00 -> 12345678901234.21 Inexact Rounded
ddadd81803 add .2050 12345678901234.00 -> 12345678901234.21 Inexact Rounded
ddadd81804 add .2051 12345678901234.00 -> 12345678901234.21 Inexact Rounded
ddadd81807 add .2060 12345678901234.00 -> 12345678901234.21 Inexact Rounded
ddadd81808 add .2070 12345678901234.00 -> 12345678901234.21 Inexact Rounded
ddadd81809 add .2099 12345678901234.00 -> 12345678901234.21 Inexact Rounded
ddadd81811 add -.2099 -12345678901234.00 -> -12345678901234.21 Inexact Rounded
ddadd81820 add 9999999999999999E+369 9E+369 -> 9.999999999999999E+384 Overflow Inexact Rounded
ddadd81821 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow Inexact Rounded
ddadd81900 add .2100 12345678901234.00 -> 12345678901234.21 Rounded
ddadd81901 add .2101 12345678901234.00 -> 12345678901234.21 Inexact Rounded
ddadd81902 add .2110 12345678901234.00 -> 12345678901234.21 Inexact Rounded
ddadd81903 add .2150 12345678901234.00 -> 12345678901234.21 Inexact Rounded
ddadd81904 add .2151 12345678901234.00 -> 12345678901234.21 Inexact Rounded
ddadd81907 add .2160 12345678901234.00 -> 12345678901234.21 Inexact Rounded
ddadd81908 add .2170 12345678901234.00 -> 12345678901234.21 Inexact Rounded
ddadd81909 add .2199 12345678901234.00 -> 12345678901234.21 Inexact Rounded
ddadd81911 add -.2199 -12345678901234.00 -> -12345678901234.21 Inexact Rounded
ddadd82000 add .2400 12345678901234.00 -> 12345678901234.24 Rounded
ddadd82001 add .2401 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd82002 add .2410 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd82003 add .2450 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd82004 add .2451 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd82007 add .2460 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd82008 add .2470 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd82009 add .2499 12345678901234.00 -> 12345678901234.24 Inexact Rounded
ddadd82011 add -.2499 -12345678901234.00 -> -12345678901234.24 Inexact Rounded
ddadd82100 add .2500 12345678901234.00 -> 12345678901234.25 Rounded
ddadd82101 add .2501 12345678901234.00 -> 12345678901234.26 Inexact Rounded
ddadd82102 add .2510 12345678901234.00 -> 12345678901234.26 Inexact Rounded
ddadd82103 add .2550 12345678901234.00 -> 12345678901234.26 Inexact Rounded
ddadd82104 add .2551 12345678901234.00 -> 12345678901234.26 Inexact Rounded
ddadd82107 add .2560 12345678901234.00 -> 12345678901234.26 Inexact Rounded
ddadd82108 add .2570 12345678901234.00 -> 12345678901234.26 Inexact Rounded
ddadd82109 add .2599 12345678901234.00 -> 12345678901234.26 Inexact Rounded
ddadd82111 add -.2599 -12345678901234.00 -> -12345678901234.26 Inexact Rounded
ddadd82200 add .2600 12345678901234.00 -> 12345678901234.26 Rounded
ddadd82201 add .2601 12345678901234.00 -> 12345678901234.26 Inexact Rounded
ddadd82202 add .2610 12345678901234.00 -> 12345678901234.26 Inexact Rounded
ddadd82203 add .2650 12345678901234.00 -> 12345678901234.26 Inexact Rounded
ddadd82204 add .2651 12345678901234.00 -> 12345678901234.26 Inexact Rounded
ddadd82207 add .2660 12345678901234.00 -> 12345678901234.26 Inexact Rounded
ddadd82208 add .2670 12345678901234.00 -> 12345678901234.26 Inexact Rounded
ddadd82209 add .2699 12345678901234.00 -> 12345678901234.26 Inexact Rounded
ddadd82211 add -.2699 -12345678901234.00 -> -12345678901234.26 Inexact Rounded
ddadd82300 add .2900 12345678901234.00 -> 12345678901234.29 Rounded
ddadd82301 add .2901 12345678901234.00 -> 12345678901234.29 Inexact Rounded
ddadd82302 add .2910 12345678901234.00 -> 12345678901234.29 Inexact Rounded
ddadd82303 add .2950 12345678901234.00 -> 12345678901234.29 Inexact Rounded
ddadd82304 add .2951 12345678901234.00 -> 12345678901234.29 Inexact Rounded
ddadd82307 add .2960 12345678901234.00 -> 12345678901234.29 Inexact Rounded
ddadd82308 add .2970 12345678901234.00 -> 12345678901234.29 Inexact Rounded
ddadd82309 add .2999 12345678901234.00 -> 12345678901234.29 Inexact Rounded
ddadd82311 add -.2999 -12345678901234.00 -> -12345678901234.29 Inexact Rounded
-- Null tests
ddadd9990 add 10 # -> NaN Invalid_operation
ddadd9991 add # 10 -> NaN Invalid_operation
|