decmathlib-rs 0.4.0

Port of the Intel Decimal Floating-Point Math Library decimal128 type to Rust.
Documentation
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
/* -------------------------------------------------------------------------------------------------- */
/* Port of the Intel Decimal Floating-Point Math Library decimal128 type to Rust.                     */
/* decmathlib-rs - Copyright (C) 2023-2024 Carlos Guzmán Álvarez                                      */
/* -------------------------------------------------------------------------------------------------- */
/* Licensed under the MIT license. See LICENSE file in the project root for full license information. */
/* -------------------------------------------------------------------------------------------------- */
/* Intel® Decimal Floating-Point Math Library - Copyright (c) 2018, Intel Corp.                       */
/* -------------------------------------------------------------------------------------------------- */

mod common;

#[test]
fn add_binop() {
    let a = decmathlib_rs::d128::ONE;
    let b = decmathlib_rs::d128::ONE;
    let e = decmathlib_rs::d128::d128::from(2);

    assert_eq!(e, a + b);
    assert_eq!(e, &a + b);
    assert_eq!(e, a + &b);
    assert_eq!(e, &a + &b);
}

#[test]
fn add_assign_op() {
    let mut a1 = decmathlib_rs::d128::ONE.clone();
    let mut a2 = decmathlib_rs::d128::ONE.clone();
    let mut a3 = decmathlib_rs::d128::ONE.clone();
    let mut a4 = decmathlib_rs::d128::ONE.clone();
    let b      = decmathlib_rs::d128::ONE.clone();
    let e      = decmathlib_rs::d128::d128::from(2);

    a1 += b;
    assert_eq!(e, a1);
    a2 += b;
    assert_eq!(e, a2);
    a3 += b;
    assert_eq!(e, a3);
    a4 += b;
    assert_eq!(e, a4);
}

dec_test!(bid128_add_001, bid128_add, 0, 0x00000000000000005dfecf59bad3acaau128         , 0x4014d000d4008a04ffffffddfdfdfeffu128           , 0x4014d000d4008a04ffffffddfdfdfeffu128, 0x20);
dec_test!(bid128_add_003, bid128_add, 0, 0x0000000000000000cfefffff1f5fb6ebu128         , 0x4441ca6997b33fa3a1f5f866809b3dc6u128           , 0x4441ca6997b33fa3a1f5f866809b3dc6u128, 0x20);
dec_test!(bid128_add_004, bid128_add, 0, 0x0000000000008000004910c400000000u128         , 0x5fe5f9ffd9ebcf7f000404e2000600a0u128           , 0x0000000000008000004910c400000000u128, 0x00);
dec_test!(bid128_add_005, bid128_add, 0, 0x00000004000000018000060240234080u128         , 0x0000000000000000f77afdfffb7fefffu128           , 0x0000000400000002777b04023ba3307fu128, 0x00);
dec_test!(bid128_add_006, bid128_add, 0, 0x0000000800001000e7f4747527f3fb0au128         , 0x0040010000000028ebffffbeffddbf7fu128           , 0x003c640000000ffc2fffe69bf29ecd9du128, 0x20);
dec_test!(bid128_add_007, bid128_add, 0, 0x00000040002001801122b18887a0e944u128         , 0x8001040000000000ffffffffffffffffu128           , 0x800103bfffdffe80eedd4e77785f16bbu128, 0x00);
dec_test!(bid128_add_008, bid128_add, 0, 0x00000200040102080010000001000001u128         , 0x800300a0400000000018680082802400u128           , 0x8003006d0c664c98cce39b33b599bd9au128, 0x20);
dec_test!(bid128_add_009, bid128_add, 0, 0x0000064408a94080ffffffff7fffffffu128         , 0x8002888000800040a00016a400020010u128           , 0x800287df993be033b999b03da6686676u128, 0x20);
dec_test!(bid128_add_010, bid128_add, 0, 0x0000910104000000dffdf7ebffffff9fu128         , 0x00300800002400606093740152912720u128           , 0x002e5000016803c3c5c2881412a9121au128, 0x20);
dec_test!(bid128_add_011, bid128_add, 0, 0x0000c108000504000000000000000040u128         , 0x000800080000000079ffffffeffeffdfu128           , 0x0002328d999a1bdc8fffffc17c177f1eu128, 0x20);
dec_test!(bid128_add_012, bid128_add, 0, 0x0001000828000002fdfffffefffffdfbu128         , 0x000128c0448002042000200a40000000u128           , 0x000237473e0ccd00b633366753333300u128, 0x20);
dec_test!(bid128_add_013, bid128_add, 0, 0x0001ed09bead87c0378d8e62ffffffffu128         , 0x0001ed09bead87c0378d8e62ffffffffu128           , 0x0002629b8c891b267182b613cccccccdu128, 0x20);
dec_test!(bid128_add_014, bid128_add, 0, 0x0001ed09bead87c0378d8e62ffffffffu128         , 0x0001ed09bead87c0378d8e64ffffffffu128           , 0x0001ed09bead87c0378d8e62ffffffffu128, 0x00);
dec_test!(bid128_add_015, bid128_add, 0, 0x0001ed09bead87c0378d8e62ffffffffu128         , 0x7c003fffffffffff38c15b08ffffffffu128           , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_016, bid128_add, 0, 0x0001ed09bead87c0378d8e62ffffffffu128         , 0x7c003fffffffffff38c15b0affffffffu128           , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_017, bid128_add, 0, 0x0001ed09bead87c0378d8e64ffffffffu128         , 0x0001ed09bead87c0378d8e62ffffffffu128           , 0x0001ed09bead87c0378d8e62ffffffffu128, 0x00);
dec_test!(bid128_add_018, bid128_add, 0, 0x0001ed09bead87c0378d8e64ffffffffu128         , 0x0001ed09bead87c0378d8e64ffffffffu128           , 0x00000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_019, bid128_add, 0, 0x0001ed09bead87c0378d8e64ffffffffu128         , 0x7c003fffffffffff38c15b08ffffffffu128           , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_020, bid128_add, 0, 0x0001ed09bead87c0378d8e64ffffffffu128         , 0x7c003fffffffffff38c15b0affffffffu128           , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_021, bid128_add, 0, 0x00020000000000004e57c463086d76fcu128         , 0x000000000000000075f7dfbf8b4127ebu128           , 0x000000000000000385658b9ddf87cdc3u128, 0x00);
dec_test!(bid128_add_022, bid128_add, 0, 0x00020250388004100100000000100000u128         , 0x8000033800144c1303c68221012c3f5eu128           , 0x000013ea34ebdc8d06397ddeff73c0a2u128, 0x00);
dec_test!(bid128_add_023, bid128_add, 0, 0x0002c47000040650fff6fffdffdfffffu128         , 0x0000040000000000ac46ec75e0295a33u128           , 0x0002c4d6666a6cb77797b13cfcb0ef6au128, 0x20);
dec_test!(bid128_add_024, bid128_add, 0, 0x0004200080040000dbef7abfffd7bfffu128         , 0x00000000000000007bfffffdfffebf9fu128           , 0x0003400500280008a3c131e631a09320u128, 0x20);
dec_test!(bid128_add_025, bid128_add, 0, 0x000470109064802172ad0c485e796963u128         , 0x00000000000000000000020028140000u128           , 0x000470109064802172ad0c4d7d9854e8u128, 0x20);
dec_test!(bid128_add_026, bid128_add, 0, 0x0009000002080300415686c8259c1f86u128         , 0x80080814810000009642b65b40a018cau128           , 0x0008f7eb810802ffab13d06ce4fc06bcu128, 0x00);
dec_test!(bid128_add_027, bid128_add, 0, 0x0010000000000000fff7fbfeafffffdfu128         , 0x6000c1d51b4e93c909bf3511b5ce6975u128           , 0x00020000009891b8e8ddba77ec549980u128, 0x00);
dec_test!(bid128_add_028, bid128_add, 0, 0x0010000008000400c66e5f0e6e4c75e7u128         , 0x80080a0c5017e6160000000000000000u128           , 0x800808d3cf7b87cec89edc4b75427090u128, 0x00);
dec_test!(bid128_add_029, bid128_add, 0, 0x00100022001008022008001100ca2010u128         , 0x00200000000000007d0409164401a0f3u128           , 0x0010002202f92eeccda7af8a36ceb310u128, 0x00);
dec_test!(bid128_add_030, bid128_add, 0, 0x00102408020420004000001000088004u128         , 0x00108c244812a208fffbdbfeaffdfdffu128           , 0x0010b02c4a16c2093ffbdc0eb0067e03u128, 0x00);
dec_test!(bid128_add_031, bid128_add, 0, 0x0018d000104820287ee3f3f9e2f8e01du128         , 0x00600082000084a0c733567c3655897eu128           , 0x005c32c80033cecdd00dc8853969b538u128, 0x20);
dec_test!(bid128_add_032, bid128_add, 0, 0x0020828000000010cf88020652208000u128         , 0x00000000000000000010000000220000u128           , 0x0020828000000010cf88020652208000u128, 0x20);
dec_test!(bid128_add_033, bid128_add, 0, 0x0022100020000001f000051104440000u128         , 0x00000000000100002d2100c91840cb06u128           , 0x0020a00140000013600032aa31dcadebu128, 0x20);
dec_test!(bid128_add_034, bid128_add, 0, 0x0040000000000010e9ff78174c3776f1u128         , 0x000000000000000056f2fcf9ca1139efu128           , 0x002699d51a0ab0775709062b0fa8a001u128, 0x20);
dec_test!(bid128_add_035, bid128_add, 0, 0x0042c3060c120840030a000039015120u128         , 0x000204840079605d022a424000209030u128           , 0x0042c3060c120840030a000039015121u128, 0x20);
dec_test!(bid128_add_036, bid128_add, 0, 0x00460000000000000000300004000001u128         , 0x0009000080000000a9250288def74442u128           , 0x001f04357757ab0fe6c3bad8135cd874u128, 0x20);
dec_test!(bid128_add_037, bid128_add, 0, 0x01090012e000400077d8fde799df72c7u128         , 0x010be56d4769821f269f45de0b5c11b2u128           , 0x010c331a7a056eeea3c7db721ed5ae70u128, 0x20);
dec_test!(bid128_add_038, bid128_add, 0, "+0.1E2453"                                    , "-276.64595434738648E2415"                       , 0x4326314dc6448d9338c15b0a00000000u128, 0x20);
dec_test!(bid128_add_039, bid128_add, 0, 0x02180020541408107ddcf0a7626a78b1u128         , 0x1506002a0a00a840bd0ccd70841ed9a5u128           , 0x1500a43712913ce27a027f8418822c88u128, 0x20);
dec_test!(bid128_add_040, bid128_add, 0, 0x0fd9fefad9460f22bf188cb59cc2e86fu128         , 0x104200c084a00007d5efd0836b76cfd4u128           , 0x103e4b33ce80030f91ad7355fa692ed0u128, 0x00);
dec_test!(bid128_add_041, bid128_add, 0, "0"                                            , "QNaN"                                           , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_042, bid128_add, 0, "+100000000000.000000000011100000E535"         , "-10.E579"                                       , 0xb485ed09bead87c0378d8e63ffffffffu128, 0x20);
dec_test!(bid128_add_043, bid128_add, 0, "+100000.00000000E6107"                        , "+5695567.598669978987E6134"                     , 0x5ff718d02b771ae1f14f07d33b7906a0u128, 0x00);
dec_test!(bid128_add_044, bid128_add, 0, "+1001000000000000000000.00000E3899"           , "-0.001E3958"                                    , 0xcee4314dc6448d9338c15b0a00000000u128, 0x20);
dec_test!(bid128_add_045, bid128_add, 0, "+1.00101011001100101E6131"                    , "-98697989675958559.6755E6101"                   , 0x5fe4315a861bf878b4305be78d569c44u128, 0x20);
dec_test!(bid128_add_046, bid128_add, 0, "-1001100.E6103"                               , "+76675966976599977.8786866E6115"                , 0x5fee0000f7c0df92ac3e3aec4c25c4b4u128, 0x00);
dec_test!(bid128_add_047, bid128_add, 0, "-1010000000000100.E-6008"                     , "-8.E-6083"                                      , 0x812c31cbfe02adbb651a045de3100000u128, 0x20);
dec_test!(bid128_add_048, bid128_add, 0, "+101001100000101.000000E6138"                 , "-7695957767658598867966685688.99E6120"          , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_049, bid128_add, 0, "+101010111000001011101000100100000010.E6111"  , "-75.59599E6145"                                 , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_050, bid128_add, 0, "-10.11000000110000E6142"                      , "-1010000.10000000E6100"                         , 0xdffc31d89d2f61d15c703f2068c00000u128, 0x20);
dec_test!(bid128_add_051, bid128_add, 0, "-1011.000011100100000001000110E-6050"         , "-899998998989888989988.888898898E-6112"         , 0x80c031d89d38790fe039a2b1dfc38780u128, 0x20);
dec_test!(bid128_add_052, bid128_add, 0, "+1100111110010000101100.00111E-6148"          , "-0.E-6012"                                      , 0x002e0000005affc246f94b02529cdbefu128, 0x00);
dec_test!(bid128_add_053, bid128_add, 0, "+11011000100110.0000001001001111E-6070"       , "-111100101.001E-6037"                           , 0x80e436c6cde001d19539cedba43e51e2u128, 0x20);
dec_test!(bid128_add_054, bid128_add, 0, "+1.10110010100000011010100000E6117"           , "-0.E6139"                                       , 0x5fd60000005b14b39baf21a04e72cb20u128, 0x00);
dec_test!(bid128_add_055, bid128_add, 0, "-111110011011.0110000100E6105"                , "+11000100110.00000110010010E6121"               , 0x5fe4363c140ab6a4209184fd9dc6d2d0u128, 0x20);
dec_test!(bid128_add_056, bid128_add, 0, 0x1392280b19d70c0b2041039000096101u128         , 0xf65addcfbf5fa71de3dfffffb7fdfebfu128           , 0x1392280b19d70c0b2041039000096101u128, 0x00);
dec_test!(bid128_add_057, bid128_add, 0, 0x1b8960050102708031000a54db202481u128         , 0x200000000000000005001420c300c265u128           , 0x1fe0b1a58745a3eeb187f95659250000u128, 0x20);
dec_test!(bid128_add_058, bid128_add, 0, 0x1c4dddec6a7a1c60fb50c15771b095e3u128         , 0x7c000fea63a9224b3d4501def3959458u128           , 0x7c000fea63a9224b3d4501def3959458u128, 0x00);
dec_test!(bid128_add_059, bid128_add, 0, 0x1e5fffaa4f778d668638a51f121c7501u128         , 0x2f5143fc06ccef43fe74ffcbfb1bf955u128           , 0x2f5143fc06ccef43fe74ffcbfb1bf955u128, 0x00);
dec_test!(bid128_add_060, bid128_add, 0, "1E+6110"                                      , "-1.000000000000000000000000000000000E+6144"     , 0xdffded09bead87c0378d8e63ffffffffu128, 0x00);
dec_test!(bid128_add_061, bid128_add, 0, 0x2002000108002000fffbfffbfffeffffu128         , 0x9ffddf5a3d0bae3afeeffefff6fba9ecu128           , 0x9ffddb52fc8eaa530e900e9ffae3add4u128, 0x00);
dec_test!(bid128_add_062, bid128_add, 0, "-263422633844658.928332597223469897E6134"     , "+747.E6145"                                     , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_063, bid128_add, 0, 0x28400000000000000000000000000000u128         , 0x59364b22e2d719b8fc26061748ffb476u128           , 0x59364b22e2d719b8fc26061748ffb476u128, 0x00);
dec_test!(bid128_add_064, bid128_add, 0, 0x287d9153bfab1034ffffffffffffffffu128         , 0x2838ffa84c36170b48d13d861726ad32u128           , 0x287d9153bfab10350000000000000000u128, 0x20);
dec_test!(bid128_add_065, bid128_add, 0, "+2997.653489948889292735459468782643377E6108" , "+9278673824.6482453738329E6133"                 , 0x5ffbc9795419f3c89a4a228d118ea92cu128, 0x20);
dec_test!(bid128_add_066, bid128_add, 0, 0x2ad6d9d6d46be91ca79f9078ce846e2au128         , 0x5a231792da18902dfa74ba0bb2f2a9d2u128           , 0x5a231792da18902dfa74ba0bb2f2a9d2u128, 0x20);
dec_test!(bid128_add_067, bid128_add, 0, 0x2b4ed27250ae592981da062276e0d757u128         , 0xfe000aca05f2778b5f0172fb73aa63b4u128           , 0xfc000aca05f2778b5f0172fb73aa63b4u128, 0x01);
dec_test!(bid128_add_068, bid128_add, 0, "+3624659768534336587.96423867374255653E6150"  , "-10010001111100011101010101110.0110000011E6141" , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_069, bid128_add, 0, 0x38a80000000000000000000000000000u128         , 0x5489c7f28d0c759c797749662afbfd8cu128           , 0x5489c7f28d0c759c797749662afbfd8cu128, 0x00);
dec_test!(bid128_add_070, bid128_add, 0, "-394.678E6139"                                , "+55.3696E6105"                                  , 0xdff8c2975dfa0314f5a1f65160000000u128, 0x20);
dec_test!(bid128_add_071, bid128_add, 0, 0x3995cbcb047d4fa7ba8b599a2b9a29b0u128         , 0xb954de8830f75de315dba9afc74d2e9du128           , 0x3995cbcb047d4fa7ba8b599a2b9a2983u128, 0x20);
dec_test!(bid128_add_072, bid128_add, 0, 0x3ace37c3c58167a3deeb321af15fa934u128         , 0xfbbfc1edffbfaed3156f000680a4da4du128           , 0xf8000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_073, bid128_add, 0, 0x40000000000000000000000400880000u128         , 0xbcfd37a9d788c8740000000000000000u128           , 0x3fd254bf4b08ff5b89d2f40000000000u128, 0x20);
dec_test!(bid128_add_074, bid128_add, 0, 0x4010010181c34860fdff7fffff6fbffdu128         , 0xbfefdffffffef9df47110206edc04446u128           , 0x400c6496b04845e2b0b25ad84a69a9a1u128, 0x20);
dec_test!(bid128_add_075, bid128_add, 0, 0x440240000b453910ba32b0a371116c10u128         , 0xc41956990f59b903d01704083ce3e1d7u128           , 0xc41956990f59b6441f9ee97f259182d9u128, 0x20);
dec_test!(bid128_add_076, bid128_add, 0, 0x5427fa3453dd57e02d7637578567237bu128         , 0x753212496f15732fb7c2f13c3f832325u128           , 0x54260000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_077, bid128_add, 0, "+55689855855588879577565566.7587E6118"        , "+9988989988.888898899999E6135"                  , 0x78000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_078, bid128_add, 0, "-5.995688758689789876988877865667857E6127"    , "-8989899999.E6126"                              , 0xdfedbb3c7dbd8ef718864a2b3a96360bu128, 0x20);
dec_test!(bid128_add_079, bid128_add, 0, 0x5bd3458aeeff67525c9f9a12f343e352u128         , 0xd00e0000000000000000000000000000u128           , 0x5bd3458aeeff67525c9f9a12f343e352u128, 0x00);
dec_test!(bid128_add_080, bid128_add, 0, 0x5bfa8cbdca7fcb87648dc41959d132d0u128         , 0x0000000000000000ff39bfddedf3ee57u128           , 0x5bfa8cbdca7fcb87648dc41959d132d0u128, 0x20);
dec_test!(bid128_add_081, bid128_add, 0, 0x5d96fd0743f21d05b7a1ffdfb7773fefu128         , 0x00000000000000000001041400020049u128           , 0x5d96fd0743f21d05b7a1ffdfb7773fefu128, 0x20);
dec_test!(bid128_add_082, bid128_add, 0, 0x5f1e0000000000000000000000000000u128         , 0xd74b90398df0d2800b222a8e8514f3eeu128           , 0xd74b90398df0d2800b222a8e8514f3eeu128, 0x00);
dec_test!(bid128_add_083, bid128_add, 0, 0x60c576c216be289c96014a8de04ea49cu128         , 0xaa2405ca2fd85dcbfe1240c113db4074u128           , 0xaa2239e5de73a9f7ecb6878ac6908488u128, 0x00);
dec_test!(bid128_add_084, bid128_add, 0, 0x60cdd8bdc022ddebf3d7fffb6ffdddbfu128         , 0x18000000000000000201080000000240u128           , 0x17e047328809853f57efa17b72400000u128, 0x00);
dec_test!(bid128_add_085, bid128_add, 0, "+6667779.8796559657568566E6121"               , "-1.E6129"                                       , 0xdff200000000c5a37f76f1936e1a76cau128, 0x00);
dec_test!(bid128_add_086, bid128_add, 0, "-67742893945653349875463748543548.9E-6184"    , "+1100.0100110001101010E-6045"                   , 0x00ca363c140ab6aa266b6f4aea488000u128, 0x20);
dec_test!(bid128_add_087, bid128_add, 0, "-68488695427246.927E6129"                     , "-999899889999998899988988988888.9E6115"         , 0xf8000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_088, bid128_add, 0, "+6875897.879876979566658996675E6133"          , "+8.464777979989329969757976492E6138"            , 0x5ffe0000f985fe9359e4745fb3d1594au128, 0x00);
dec_test!(bid128_add_089, bid128_add, 0, 0x6db0895fbd218a59479097715441cb4bu128         , 0xf7efffdffffffff6c6a9b3d5b6ebfba9u128           , 0x36c20000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_090, bid128_add, 0, 0x73f27f9b3729b02142cfe66b6de3fd07u128         , 0x1b7b8a5727f02fa8e5a78e7d04a3355cu128           , 0x1b7b8a5727f02fa8e5a78e7d04a3355cu128, 0x00);
dec_test!(bid128_add_091, bid128_add, 0, "+7597756576.869587795965598779879969E-6070"   , "-8.E-6021"                                      , 0x80f58a6e32246c99c60ad85000000000u128, 0x20);
dec_test!(bid128_add_092, bid128_add, 0, 0x796032cbd6307a4af0cf042fc41e34c2u128         , 0xfb7bdb7ffbe77ffbd5fdff9afcdfaa4du128           , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_093, bid128_add, 0, 0x7c003fffffffffff38c15b08ffffffffu128         , 0x0001ed09bead87c0378d8e62ffffffffu128           , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_094, bid128_add, 0, 0x7c003fffffffffff38c15b08ffffffffu128         , 0x0001ed09bead87c0378d8e64ffffffffu128           , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_095, bid128_add, 0, 0x7c003fffffffffff38c15b08ffffffffu128         , 0x7c003fffffffffff38c15b08ffffffffu128           , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_096, bid128_add, 0, 0x7c003fffffffffff38c15b08ffffffffu128         , 0x7c003fffffffffff38c15b0affffffffu128           , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_097, bid128_add, 0, 0x7c003fffffffffff38c15b0affffffffu128         , 0x0001ed09bead87c0378d8e62ffffffffu128           , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_098, bid128_add, 0, 0x7c003fffffffffff38c15b0affffffffu128         , 0x0001ed09bead87c0378d8e64ffffffffu128           , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_099, bid128_add, 0, 0x7c003fffffffffff38c15b0affffffffu128         , 0x7c003fffffffffff38c15b08ffffffffu128           , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_100, bid128_add, 0, 0x7c003fffffffffff38c15b0affffffffu128         , 0x7c003fffffffffff38c15b0affffffffu128           , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_101, bid128_add, 0, 0x7c36d997f8b0b0597ae13e777a16f050u128         , 0x8bb6f1a6e3a3bd1ae424521a46fdc6d1u128           , 0x7c001997f8b0b0597ae13e777a16f050u128, 0x00);
dec_test!(bid128_add_102, bid128_add, 0, 0x7d10b0e971a5f4614d85007ab72ecfebu128         , 0xfffbfffffedacced7ffcfbfffbffebddu128           , 0x7c0030e971a5f4614d85007ab72ecfebu128, 0x01);
dec_test!(bid128_add_103, bid128_add, 0, 0x7e0006dd5267cd437cd23844b6d6a4eau128         , 0x9f65abe576e0df8e4506a13d63599947u128           , 0x7c0006dd5267cd437cd23844b6d6a4eau128, 0x01);
dec_test!(bid128_add_104, bid128_add, 0, 0x7e00149c7f5e6b773ff5188ebbb4795au128         , 0x37fe0000000000000000000000000000u128           , 0x7c00149c7f5e6b773ff5188ebbb4795au128, 0x01);
dec_test!(bid128_add_105, bid128_add, 0, 0x7e002cf4e6e4ac9dab55920b2c709cecu128         , 0x78000000000000000000000000000000u128           , 0x7c002cf4e6e4ac9dab55920b2c709cecu128, 0x01);
dec_test!(bid128_add_106, bid128_add, 0, 0x7ffff7ffffffffff9de20851b887be40u128         , 0x960f4d1c81ebee82a07b5e241da76150u128           , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_107, bid128_add, 0, 0x8000015004000002ffffffffffffcfffu128         , 0x0040830502000080553debe2f9cc3fd5u128           , 0x0040830502000080553debe2f9cc3fd5u128, 0x20);
dec_test!(bid128_add_108, bid128_add, 0, 0x8000400080402000ffe7fffffffbffffu128         , 0x0000110a210840010840000200000800u128           , 0x80002ef65f37dffff7a7fffdfffbf7ffu128, 0x00);
dec_test!(bid128_add_109, bid128_add, 0, 0x80022000095c01900410200010660020u128         , 0x000001000800800905a7b07ad6480e74u128           , 0x80013f0055978f9722f98f85cdb3f2ccu128, 0x00);
dec_test!(bid128_add_110, bid128_add, 0, 0x80100000008001118498563480440020u128         , 0x00004891000401209a1b9d433d9f9e78u128           , 0x8002450a2fd3ed30480a760e2082d9c1u128, 0x20);
dec_test!(bid128_add_111, bid128_add, 0, 0x80c4406dc0588060b2fdbf3bdb5ff6ddu128         , 0x00c00898001a2c83840d29ad07020d26u128           , 0x80c44057c0583d5f624f890e9b4e0618u128, 0x20);
dec_test!(bid128_add_112, bid128_add, 0, 0x8120010573c46493016006c040d09002u128         , 0xe047ff59432e7f32ff7ff7bfdffaafb6u128           , 0x811e0a3685abedbe0dc043828825a014u128, 0x00);
dec_test!(bid128_add_113, bid128_add, 0, 0x84848448bb86cdea47a3f05555554266u128         , 0xfe0016d3cfe15dc13ab1a1ea168bccd5u128           , 0xfc0016d3cfe15dc13ab1a1ea168bccd5u128, 0x01);
dec_test!(bid128_add_114, bid128_add, 0, "-86.96E-6051"                                 , "+6262839768259358968798.482E-6125"              , 0x80bbacbef36ec2d953f1ad2e00000000u128, 0x20);
dec_test!(bid128_add_115, bid128_add, 0, "-88.E6128"                                    , "+1001100110110.E6131"                           , 0x5ffe04ef90e43b1338b16e0304700000u128, 0x00);
dec_test!(bid128_add_116, bid128_add, 0, "-89.689988889E-6076"                          , "-9899.98898989888988898E-6079"                  , 0x80a000000000021be0dbab0ddddd0ee2u128, 0x00);
dec_test!(bid128_add_117, bid128_add, 0, "+89797785599559975.97E6141"                   , "-10011100011110110.1111010001E6132"             , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_118, bid128_add, 0, "-8989899.889889998E6139"                      , "+1010010011101.001000010E6140"                  , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_119, bid128_add, 0, "+8999.88999E4401"                             , "-10.0E4437"                                     , 0xd2a9ed09bead87c0378d8e63fffffff7u128, 0x20);
dec_test!(bid128_add_120, bid128_add, 0, "+8999898889.898889988998988899899988E-6113"   , "-98.E-6015"                                     , 0x8103e32d63d305092c33af6200000000u128, 0x20);
dec_test!(bid128_add_121, bid128_add, 0, "+899999.899988899889999988888E3058"           , "-0.001000000000000E3101"                        , 0xc831ed09bead87c0378d8e63ffffffffu128, 0x20);
dec_test!(bid128_add_122, bid128_add, 0, 0x8b71ea085f35078380db0ca76e5b0d32u128         , 0xf8000000000000000000000000000000u128           , 0xf8000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_123, bid128_add, 0, 0x8cc2400a6777e47df08a14c25761bb67u128         , 0xff6bfffffff7fffe3ddfbdf9bbfd7fe7u128           , 0xfc000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_124, bid128_add, 0, 0x90223048060280408a92a2103e3c0106u128         , 0x106411e5c230c10c0221008000010020u128           , 0x1062b2f995e78a78154a0500000a0136u128, 0x20);
dec_test!(bid128_add_125, bid128_add, 0, "-911011001111110.01111E-6035"                 , "+7757.85756877599677796689977E-6050"            , 0x80f5c129c10b6a95e248c238835bfeb0u128, 0x20);
dec_test!(bid128_add_126, bid128_add, 0, 0x94560000000000000000000000000000u128         , 0xfe000000000000000000000000000000u128           , 0xfc000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_127, bid128_add, 0, "-9596859585978896957666.8999678658685898E6123", "-855789958.556566566858E6136"                   , 0xf8000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_128, bid128_add, 0, "-986.7998E6137"                               , "-28399226863623.4336534472E6122"                , 0xdffe00013edc83f35bce6e5a0186fdd0u128, 0x00);
dec_test!(bid128_add_129, bid128_add, 0, "-9888988988.8899888988E6150"                  , "+88887766666797.9757555E6150"                   , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_130, bid128_add, 0, 0x988b7659e5f6fef5bbefd56f4df6eadfu128         , 0x18d094c77aae85e6097015184038a053u128           , 0x18d094c77aae85e6097015184038a053u128, 0x20);
dec_test!(bid128_add_131, bid128_add, 0, "+98988.E6140"                                 , "+5758859.7585E6137"                             , 0x78000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_132, bid128_add, 0, "+989.89E6147"                                 , "-11011101001010.001110000001E6145"              , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_133, bid128_add, 0, "+98998899988998.899898899998999E6141"         , "-99898899999898899998999998988899.E6130"        , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_134, bid128_add, 0, "+9976878.E6138"                               , "+688895688756979657657.6957987659886589697E6123", 0x78000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_135, bid128_add, 0, "+99888989988898888988999.989998988E-5834"     , "-10000.000E-5782"                               , 0x82d9ed09bead87c0378d8e63fffffff6u128, 0x20);
dec_test!(bid128_add_136, bid128_add, 0, "-99898888.8899899989989999988898989888E6106"  , "-58975778987588776588859.6877656E6124"          , 0xf8000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_137, bid128_add, 0, "+9989989898899.999889E6132"                   , "+10100000010000110100111011.1010101101E6119"    , 0x78000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_138, bid128_add, 0, "+9.9E6144"                                    , "+1100010.111001111011011101010E6138"            , 0x78000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_139, bid128_add, 0, 0x9cd80000000000000000000000000000u128         , 0x16909df1f48b315f9e82e8740fb93bfdu128           , 0x16909df1f48b315f9e82e8740fb93bfdu128, 0x00);
dec_test!(bid128_add_140, bid128_add, 0, "-9.E-6155"                                    , "-958896965.958776968777978E-6196"               , 0x80000000000001e7e4171bf4d3a00000u128, 0x00);
dec_test!(bid128_add_141, bid128_add, 0, 0xa1c40000000000000000000000000000u128         , 0x5522c0c11492e428f7d822a92f1a5ef3u128           , 0x5522c0c11492e428f7d822a92f1a5ef3u128, 0x00);
dec_test!(bid128_add_142, bid128_add, 0, 0xa5675120625b0a3552d5eeecb6df98dfu128         , 0xdf69ff7fefbbff770440008082050202u128           , 0xa5675120625b0a3552d5eeecb6df98dfu128, 0x00);
dec_test!(bid128_add_143, bid128_add, 0, 0xa9481e81f1ac7df596dcd9baa6738f4au128         , 0xfe000ded30995e2c2a18fde4c3b4c242u128           , 0xfc000ded30995e2c2a18fde4c3b4c242u128, 0x01);
dec_test!(bid128_add_144, bid128_add, 0, 0xab5b7f8969162c5f9951aecf3b28ba61u128         , 0xfe001538549b96bcd8bac0361145a524u128           , 0xfc001538549b96bcd8bac0361145a524u128, 0x01);
dec_test!(bid128_add_145, bid128_add, 0, 0xbee1c676f1afe3cf09f61de91e262588u128         , 0x561ceab945062f0a24c48dc78dbedb6au128           , 0x561ceab945062f0a24c48dc78dbedb6au128, 0x20);
dec_test!(bid128_add_146, bid128_add, 0, 0xbffffffffffffff7f08986080004d1cdu128         , 0x40000042000800027ffffdffffffffffu128           , 0x3ffe029400500018ffffebfffffffff6u128, 0x00);
dec_test!(bid128_add_147, bid128_add, 0, 0xc00000000000440038468869f58dd715u128         , 0x6dd892ebafa7e61efbfffff7fefffffeu128           , 0xbfec9e53ab96d2bd5dba24877575b400u128, 0x00);
dec_test!(bid128_add_148, bid128_add, 0, 0xc0c47de8bb8a81caa1571e2bdc47b401u128         , 0x40810000040200000000205500000000u128           , 0xc0c47de8bb8a81caa1571e2bdc47b400u128, 0x20);
dec_test!(bid128_add_149, bid128_add, 0, 0xc22c376ce5daf960bd3e3776d9e9504au128         , 0x0006110100018010efdf793269fddbd4u128           , 0xc22c376ce5daf960bd3e3776d9e9504au128, 0x20);
dec_test!(bid128_add_150, bid128_add, 0, 0xd75c0000000000000000000000000000u128         , 0x132efa1ddf2a72991ec77faa102b45cau128           , 0x132efa1ddf2a72991ec77faa102b45cau128, 0x00);
dec_test!(bid128_add_151, bid128_add, 0, 0xdb38f659937507f252e4eff58d12043fu128         , 0x7e7116ffb6ec8cf709108044000080c5u128           , 0x7c0016ffb6ec8cf709108044000080c5u128, 0x01);
dec_test!(bid128_add_152, bid128_add, 0, 0xdcafa178675629f3f3c9d62ab84aa7c4u128         , 0x5cd45cf7c92aae7d48c5a096fa24e498u128           , 0x5cd45cf7c92aae7d48c29e7e3072303bu128, 0x20);
dec_test!(bid128_add_153, bid128_add, 0, 0xdfff7ffef7f2ffff8008020011020080u128         , 0xdfff6f5eae73ffef8040001401410208u128           , 0xf8000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_154, bid128_add, 0, 0xe7f4dfff7b6e9c42ff7dfffd2fff7fffu128         , 0x48000000000000000000043484020008u128           , 0x47d6e3f607d6ce8ac923ab6ef5000000u128, 0x00);
dec_test!(bid128_add_155, bid128_add, 0, 0xf5ef6c66d631163c68f56fcf4f7dad4du128         , 0xb623ff3fb2fbfd745b07b2a2f292df1eu128           , 0xb6220000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_156, bid128_add, 0, 0xf8000000000000000000000000000000u128         , 0x2ca1915e9c65355f6a9dd26fcb0633aeu128           , 0xf8000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_157, bid128_add, 0, 0xfbffff7dfdfffff5bfecfa9fff6ef7feu128         , 0xfa8cecc783de4f64f014aefd02ac1108u128           , 0xf8000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_158, bid128_add, 0, 0xfe000000000000000000000000000000u128         , 0x1f0cabc46692f05e44e49d8f9551660cu128           , 0xfc000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_159, bid128_add, 0, "Infinity"                                     , "-0"                                             , 0x78000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_160, bid128_add, 0, "-Infinity"                                    , "Infinity"                                       , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_161, bid128_add, 0, "-Infinity"                                    , "QNaN"                                           , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_162, bid128_add, 0, "Infinity"                                     , "SNaN"                                           , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_163, bid128_add, 0, "QNaN"                                         , "-Infinity"                                      , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_164, bid128_add, 0, "SNaN"                                         , "-Infinity"                                      , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_165, bid128_add, 0, "SNaN"                                         , "SNaN"                                           , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_166, bid128_add, 1, 0x0001ed09bead87c0378d8e62ffffffffu128         , 0x0001ed09bead87c0378d8e62ffffffffu128           , 0x0002629b8c891b267182b613ccccccccu128, 0x20);
dec_test!(bid128_add_167, bid128_add, 1, 0x0001ed09bead87c0378d8e62ffffffffu128         , 0x0001ed09bead87c0378d8e64ffffffffu128           , 0x0001ed09bead87c0378d8e62ffffffffu128, 0x00);
dec_test!(bid128_add_168, bid128_add, 1, 0x0001ed09bead87c0378d8e64ffffffffu128         , 0x0001ed09bead87c0378d8e62ffffffffu128           , 0x0001ed09bead87c0378d8e62ffffffffu128, 0x00);
dec_test!(bid128_add_169, bid128_add, 1, 0x0001ed09bead87c0378d8e64ffffffffu128         , 0x0001ed09bead87c0378d8e64ffffffffu128           , 0x00000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_170, bid128_add, 1, "0"                                            , "QNaN"                                           , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_171, bid128_add, 1, "+100000.00000000E6107"                        , "+5695567.598669978987E6134"                     , 0x5ff718d02b771ae1f14f07d33b7906a0u128, 0x00);
dec_test!(bid128_add_172, bid128_add, 1, "+1.00101011001100101E6131"                    , "-98697989675958559.6755E6101"                   , 0x5fe4315a861bf878b4305be78d569c44u128, 0x20);
dec_test!(bid128_add_173, bid128_add, 1, "-1001100.E6103"                               , "+76675966976599977.8786866E6115"                , 0x5fee0000f7c0df92ac3e3aec4c25c4b4u128, 0x00);
dec_test!(bid128_add_174, bid128_add, 1, "-1010000000000100.E-6008"                     , "-8.E-6083"                                      , 0x812c31cbfe02adbb651a045de3100001u128, 0x20);
dec_test!(bid128_add_175, bid128_add, 1, "+101001100000101.000000E6138"                 , "-7695957767658598867966685688.99E6120"          , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_176, bid128_add, 1, "+101010111000001011101000100100000010.E6111"  , "-75.59599E6145"                                 , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_177, bid128_add, 1, "-10.11000000110000E6142"                      , "-1010000.10000000E6100"                         , 0xdffc31d89d2f61d15c703f2068c00001u128, 0x20);
dec_test!(bid128_add_178, bid128_add, 1, "-1011.000011100100000001000110E-6050"         , "-899998998989888989988.888898898E-6112"         , 0x80c031d89d38790fe039a2b1dfc38781u128, 0x20);
dec_test!(bid128_add_179, bid128_add, 1, "+1100111110010000101100.00111E-6148"          , "-0.E-6012"                                      , 0x002e0000005affc246f94b02529cdbefu128, 0x00);
dec_test!(bid128_add_180, bid128_add, 1, "+11011000100110.0000001001001111E-6070"       , "-111100101.001E-6037"                           , 0x80e436c6cde001d19539cedba43e51e2u128, 0x20);
dec_test!(bid128_add_181, bid128_add, 1, "+1.10110010100000011010100000E6117"           , "-0.E6139"                                       , 0x5fd60000005b14b39baf21a04e72cb20u128, 0x00);
dec_test!(bid128_add_182, bid128_add, 1, "-111110011011.0110000100E6105"                , "+11000100110.00000110010010E6121"               , 0x5fe4363c140ab6a4209184fd9dc6d2cfu128, 0x20);
dec_test!(bid128_add_183, bid128_add, 1, 0x1c4dddec6a7a1c60fb50c15771b095e3u128         , 0x7c000fea63a9224b3d4501def3959458u128           , 0x7c000fea63a9224b3d4501def3959458u128, 0x00);
dec_test!(bid128_add_184, bid128_add, 1, "-263422633844658.928332597223469897E6134"     , "+747.E6145"                                     , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_185, bid128_add, 1, 0x28400000000000000000000000000000u128         , 0x59364b22e2d719b8fc26061748ffb476u128            , 0x59364b22e2d719b8fc26061748ffb476u128, 0x00);
dec_test!(bid128_add_186, bid128_add, 1, "+2997.653489948889292735459468782643377E6108" , "+9278673824.6482453738329E6133"                  , 0x5ffbc9795419f3c89a4a228d118ea92bu128, 0x20);
dec_test!(bid128_add_187, bid128_add, 1, 0x2b4ed27250ae592981da062276e0d757u128         , 0xfe000aca05f2778b5f0172fb73aa63b4u128            , 0xfc000aca05f2778b5f0172fb73aa63b4u128, 0x01);
dec_test!(bid128_add_188, bid128_add, 1, "+3624659768534336587.96423867374255653E6150"  , "-10010001111100011101010101110.0110000011E6141"  , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_189, bid128_add, 1, 0x38a80000000000000000000000000000u128         , 0x5489c7f28d0c759c797749662afbfd8cu128            , 0x5489c7f28d0c759c797749662afbfd8cu128, 0x00);
dec_test!(bid128_add_190, bid128_add, 1, "-394.678E6139"                                , "+55.3696E6105"                                   , 0xdff8c2975dfa0314f5a1f65160000000u128, 0x20);
dec_test!(bid128_add_191, bid128_add, 1, "+55689855855588879577565566.7587E6118"        , "+9988989988.888898899999E6135"                   , 0x5fffed09bead87c0378d8e63ffffffffu128, 0x28);
dec_test!(bid128_add_192, bid128_add, 1, "-5.995688758689789876988877865667857E6127"    , "-8989899999.E6126"                               , 0xdfedbb3c7dbd8ef718864a2b3a96360bu128, 0x20);
dec_test!(bid128_add_193, bid128_add, 1, 0x5bd3458aeeff67525c9f9a12f343e352u128         , 0xd00e0000000000000000000000000000u128            , 0x5bd3458aeeff67525c9f9a12f343e352u128, 0x00);
dec_test!(bid128_add_194, bid128_add, 1, 0x5f1e0000000000000000000000000000u128         , 0xd74b90398df0d2800b222a8e8514f3eeu128            , 0xd74b90398df0d2800b222a8e8514f3eeu128, 0x00);
dec_test!(bid128_add_195, bid128_add, 1, "+6667779.8796559657568566E6121"               , "-1.E6129"                                        , 0xdff200000000c5a37f76f1936e1a76cau128, 0x00);
dec_test!(bid128_add_196, bid128_add, 1, "-67742893945653349875463748543548.9E-6184"    , "+1100.0100110001101010E-6045"                    , 0x00ca363c140ab6aa266b6f4aea487fffu128, 0x20);
dec_test!(bid128_add_197, bid128_add, 1, "-68488695427246.927E6129"                     , "-999899889999998899988988988888.9E6115"          , 0xf8000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_198, bid128_add, 1, "+6875897.879876979566658996675E6133"          , "+8.464777979989329969757976492E6138"             , 0x5ffe0000f985fe9359e4745fb3d1594au128, 0x00);
dec_test!(bid128_add_199, bid128_add, 1, 0x6db0895fbd218a59479097715441cb4bu128         , 0xf7efffdffffffff6c6a9b3d5b6ebfba9u128            , 0xb6c20000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_200, bid128_add, 1, "+7597756576.869587795965598779879969E-6070"   , "-8.E-6021"                                       , 0x80f58a6e32246c99c60ad85000000000u128, 0x20);
dec_test!(bid128_add_201, bid128_add, 1, 0x7e0006dd5267cd437cd23844b6d6a4eau128         , 0x9f65abe576e0df8e4506a13d63599947u128            , 0x7c0006dd5267cd437cd23844b6d6a4eau128, 0x01);
dec_test!(bid128_add_202, bid128_add, 1, 0x7e00149c7f5e6b773ff5188ebbb4795au128         , 0x37fe0000000000000000000000000000u128            , 0x7c00149c7f5e6b773ff5188ebbb4795au128, 0x01);
dec_test!(bid128_add_203, bid128_add, 1, 0x7e002cf4e6e4ac9dab55920b2c709cecu128         , 0x78000000000000000000000000000000u128            , 0x7c002cf4e6e4ac9dab55920b2c709cecu128, 0x01);
dec_test!(bid128_add_204, bid128_add, 1, 0x84848448bb86cdea47a3f05555554266u128         , 0xfe0016d3cfe15dc13ab1a1ea168bccd5u128            , 0xfc0016d3cfe15dc13ab1a1ea168bccd5u128, 0x01);
dec_test!(bid128_add_205, bid128_add, 1, "-86.96E-6051"                                 , "+6262839768259358968798.482E-6125"               , 0x80bbacbef36ec2d953f1ad2e00000000u128, 0x20);
dec_test!(bid128_add_206, bid128_add, 1, "-88.E6128"                                    , "+1001100110110.E6131"                            , 0x5ffe04ef90e43b1338b16e0304700000u128, 0x00);
dec_test!(bid128_add_207, bid128_add, 1, "-89.689988889E-6076"                          , "-9899.98898989888988898E-6079"                   , 0x80a000000000021be0dbab0ddddd0ee2u128, 0x00);
dec_test!(bid128_add_208, bid128_add, 1, "+89797785599559975.97E6141"                   , "-10011100011110110.1111010001E6132"              , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_209, bid128_add, 1, "-8989899.889889998E6139"                      , "+1010010011101.001000010E6140"                   , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_210, bid128_add, 1, "+8999898889.898889988998988899899988E-6113"   , "-98.E-6015"                                      , 0x8103e32d63d305092c33af6200000000u128, 0x20);
dec_test!(bid128_add_211, bid128_add, 1, "+899999.899988899889999988888E3058"           , "-0.001000000000000E3101"                         , 0xc832314dc6448d9338c15b0a00000000u128, 0x20);
dec_test!(bid128_add_212, bid128_add, 1, 0x8b71ea085f35078380db0ca76e5b0d32u128         , 0xf8000000000000000000000000000000u128            , 0xf8000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_213, bid128_add, 1, "-911011001111110.01111E-6035"                 , "+7757.85756877599677796689977E-6050"             , 0x80f5c129c10b6a95e248c238835bfeb1u128, 0x20);
dec_test!(bid128_add_214, bid128_add, 1, 0x94560000000000000000000000000000u128         , 0xfe000000000000000000000000000000u128            , 0xfc000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_215, bid128_add, 1, "-9596859585978896957666.8999678658685898E6123", "-855789958.556566566858E6136"                    , 0xf8000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_216, bid128_add, 1, "-986.7998E6137"                               , "-28399226863623.4336534472E6122"                 , 0xdffe00013edc83f35bce6e5a0186fdd0u128, 0x00);
dec_test!(bid128_add_217, bid128_add, 1, "-9888988988.8899888988E6150"                  , "+88887766666797.9757555E6150"                    , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_218, bid128_add, 1, "+98988.E6140"                                 , "+5758859.7585E6137"                              , 0x5fffed09bead87c0378d8e63ffffffffu128, 0x28);
dec_test!(bid128_add_219, bid128_add, 1, "+989.89E6147"                                 , "-11011101001010.001110000001E6145"               , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_220, bid128_add, 1, "+98998899988998.899898899998999E6141"         , "-99898899999898899998999998988899.E6130"         , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_221, bid128_add, 1, "+9976878.E6138"                               , "+688895688756979657657.6957987659886589697E6123" , 0x5fffed09bead87c0378d8e63ffffffffu128, 0x28);
dec_test!(bid128_add_222, bid128_add, 1, "-99898888.8899899989989999988898989888E6106"  , "-58975778987588776588859.6877656E6124"           , 0xf8000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_223, bid128_add, 1, "+9989989898899.999889E6132"                   , "+10100000010000110100111011.1010101101E6119"     , 0x5fffed09bead87c0378d8e63ffffffffu128, 0x28);
dec_test!(bid128_add_224, bid128_add, 1, "+9.9E6144"                                    , "+1100010.111001111011011101010E6138"             , 0x5fffed09bead87c0378d8e63ffffffffu128, 0x28);
dec_test!(bid128_add_225, bid128_add, 1, 0x9cd80000000000000000000000000000u128         , 0x16909df1f48b315f9e82e8740fb93bfdu128            , 0x16909df1f48b315f9e82e8740fb93bfdu128, 0x00);
dec_test!(bid128_add_226, bid128_add, 1, 0xa1c40000000000000000000000000000u128         , 0x5522c0c11492e428f7d822a92f1a5ef3u128            , 0x5522c0c11492e428f7d822a92f1a5ef3u128, 0x00);
dec_test!(bid128_add_227, bid128_add, 1, 0xa9481e81f1ac7df596dcd9baa6738f4au128         , 0xfe000ded30995e2c2a18fde4c3b4c242u128            , 0xfc000ded30995e2c2a18fde4c3b4c242u128, 0x01);
dec_test!(bid128_add_228, bid128_add, 1, 0xab5b7f8969162c5f9951aecf3b28ba61u128         , 0xfe001538549b96bcd8bac0361145a524u128            , 0xfc001538549b96bcd8bac0361145a524u128, 0x01);
dec_test!(bid128_add_229, bid128_add, 1, 0xb4aa76100d8209a41e2b14bb6e5f767fu128         , 0x3c471d89c66add613f08dd78ee62f56fu128            , 0x3c471d89c66add613f08dd78ee62f56eu128, 0x20);
dec_test!(bid128_add_230, bid128_add, 1, 0xbee1c676f1afe3cf09f61de91e262588u128         , 0x561ceab945062f0a24c48dc78dbedb6au128            , 0x561ceab945062f0a24c48dc78dbedb69u128, 0x20);
dec_test!(bid128_add_231, bid128_add, 1, 0xc884367ed0de6951ffffffffffffffffu128         , 0x8c811be268d6f9a05916aa0ba9e7dc22u128            , 0xc884367ed0de69520000000000000000u128, 0x20);
dec_test!(bid128_add_232, bid128_add, 1, 0xd75c0000000000000000000000000000u128         , 0x132efa1ddf2a72991ec77faa102b45cau128            , 0x132efa1ddf2a72991ec77faa102b45cau128, 0x00);
dec_test!(bid128_add_233, bid128_add, 1, 0xf8000000000000000000000000000000u128         , 0x2ca1915e9c65355f6a9dd26fcb0633aeu128            , 0xf8000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_234, bid128_add, 1, 0xfe000000000000000000000000000000u128         , 0x1f0cabc46692f05e44e49d8f9551660cu128            , 0xfc000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_235, bid128_add, 1, "Infinity"                                     , "-0"                                              , 0x78000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_236, bid128_add, 1, "-Infinity"                                    , "Infinity"                                        , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_237, bid128_add, 1, "-Infinity"                                    , "QNaN"                                            , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_238, bid128_add, 1, "Infinity"                                     , "SNaN"                                            , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_239, bid128_add, 1, "QNaN"                                         , "-Infinity"                                       , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_240, bid128_add, 1, "SNaN"                                         , "-Infinity"                                       , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_241, bid128_add, 1, "SNaN"                                         , "SNaN"                                            , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_242, bid128_add, 2, 0x00008420a00002000a80008002a35040u128         , 0x8045c945a31d6f328cb7a8b66cfac3fdu128            , 0x8045c945a31d6f328cb7a8b66cfac3fcu128, 0x20);
dec_test!(bid128_add_243, bid128_add, 2, 0x0001ed09bead87c0378d8e62ffffffffu128         , 0x0001ed09bead87c0378d8e62ffffffffu128            , 0x0002629b8c891b267182b613cccccccdu128, 0x20);
dec_test!(bid128_add_244, bid128_add, 2, 0x0001ed09bead87c0378d8e62ffffffffu128         , 0x0001ed09bead87c0378d8e64ffffffffu128            , 0x0001ed09bead87c0378d8e62ffffffffu128, 0x00);
dec_test!(bid128_add_245, bid128_add, 2, 0x0001ed09bead87c0378d8e64ffffffffu128         , 0x0001ed09bead87c0378d8e62ffffffffu128            , 0x0001ed09bead87c0378d8e62ffffffffu128, 0x00);
dec_test!(bid128_add_246, bid128_add, 2, 0x0001ed09bead87c0378d8e64ffffffffu128         , 0x0001ed09bead87c0378d8e64ffffffffu128            , 0x00000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_247, bid128_add, 2, 0x0018d000104820287ee3f3f9e2f8e01du128         , 0x00600082000084a0c733567c3655897eu128            , 0x005c32c80033cecdd00dc8853969b539u128, 0x20);
dec_test!(bid128_add_248, bid128_add, 2, "0"                                            , "QNaN"                                            , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_249, bid128_add, 2, "+100000.00000000E6107"                        , "+5695567.598669978987E6134"                      , 0x5ff718d02b771ae1f14f07d33b7906a0u128, 0x00);
dec_test!(bid128_add_250, bid128_add, 2, "+1.00101011001100101E6131"                    , "-98697989675958559.6755E6101"                    , 0x5fe4315a861bf878b4305be78d569c45u128, 0x20);
dec_test!(bid128_add_251, bid128_add, 2, "-1001100.E6103"                               , "+76675966976599977.8786866E6115"                 , 0x5fee0000f7c0df92ac3e3aec4c25c4b4u128, 0x00);
dec_test!(bid128_add_252, bid128_add, 2, "-1010000000000100.E-6008"                     , "-8.E-6083"                                       , 0x812c31cbfe02adbb651a045de3100000u128, 0x20);
dec_test!(bid128_add_253, bid128_add, 2, "+101001100000101.000000E6138"                 , "-7695957767658598867966685688.99E6120"           , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_254, bid128_add, 2, "+101010111000001011101000100100000010.E6111"  , "-75.59599E6145"                                  , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_255, bid128_add, 2, "-10.11000000110000E6142"                      , "-1010000.10000000E6100"                          , 0xdffc31d89d2f61d15c703f2068c00000u128, 0x20);
dec_test!(bid128_add_256, bid128_add, 2, "-1011.000011100100000001000110E-6050"         , "-899998998989888989988.888898898E-6112"          , 0x80c031d89d38790fe039a2b1dfc38780u128, 0x20);
dec_test!(bid128_add_257, bid128_add, 2, "+1100111110010000101100.00111E-6148"          , "-0.E-6012"                                       , 0x002e0000005affc246f94b02529cdbefu128, 0x00);
dec_test!(bid128_add_258, bid128_add, 2, "+11011000100110.0000001001001111E-6070"       , "-111100101.001E-6037"                            , 0x80e436c6cde001d19539cedba43e51e1u128, 0x20);
dec_test!(bid128_add_259, bid128_add, 2, "+1.10110010100000011010100000E6117"           , "-0.E6139"                                        , 0x5fd60000005b14b39baf21a04e72cb20u128, 0x00);
dec_test!(bid128_add_260, bid128_add, 2, "-111110011011.0110000100E6105"                , "+11000100110.00000110010010E6121"                , 0x5fe4363c140ab6a4209184fd9dc6d2d0u128, 0x20);
dec_test!(bid128_add_261, bid128_add, 2, 0x1c4dddec6a7a1c60fb50c15771b095e3u128         , 0x7c000fea63a9224b3d4501def3959458u128            , 0x7c000fea63a9224b3d4501def3959458u128, 0x00);
dec_test!(bid128_add_262, bid128_add, 2, "1E+367"                                       , "9.999999999999999999999999999999999E+6144"       , 0x78000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_263, bid128_add, 2, "1E+6110"                                      , "9.999999999999999999999999999999999E+6144"       , 0x78000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_264, bid128_add, 2, "-263422633844658.928332597223469897E6134"     , "+747.E6145"                                      , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_265, bid128_add, 2, 0x28400000000000000000000000000000u128         , 0x59364b22e2d719b8fc26061748ffb476u128            , 0x59364b22e2d719b8fc26061748ffb476u128, 0x00);
dec_test!(bid128_add_266, bid128_add, 2, "+2997.653489948889292735459468782643377E6108" , "+9278673824.6482453738329E6133"                  , 0x5ffbc9795419f3c89a4a228d118ea92cu128, 0x20);
dec_test!(bid128_add_267, bid128_add, 2, 0x2ad6d9d6d46be91ca79f9078ce846e2au128         , 0x5a231792da18902dfa74ba0bb2f2a9d2u128            , 0x5a231792da18902dfa74ba0bb2f2a9d3u128, 0x20);
dec_test!(bid128_add_268, bid128_add, 2, 0x2b4ed27250ae592981da062276e0d757u128         , 0xfe000aca05f2778b5f0172fb73aa63b4u128            , 0xfc000aca05f2778b5f0172fb73aa63b4u128, 0x01);
dec_test!(bid128_add_269, bid128_add, 2, "+3624659768534336587.96423867374255653E6150"  , "-10010001111100011101010101110.0110000011E6141"  , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_270, bid128_add, 2, 0x38a80000000000000000000000000000u128         , 0x5489c7f28d0c759c797749662afbfd8cu128            , 0x5489c7f28d0c759c797749662afbfd8cu128, 0x00);
dec_test!(bid128_add_271, bid128_add, 2, "-394.678E6139"                                , "+55.3696E6105"                                   , 0xdff8c2975dfa0314f5a1f6515fffffffu128, 0x20);
dec_test!(bid128_add_272, bid128_add, 2, 0x42425fc86bc4410360dac4d2074b5f1eu128         , 0x4286719aa03a2cb2ffffffffffffffffu128            , 0x4286719aa03a2cb30000000000000000u128, 0x20);
dec_test!(bid128_add_273, bid128_add, 2, "+55689855855588879577565566.7587E6118"        , "+9988989988.888898899999E6135"                   , 0x78000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_274, bid128_add, 2, "-5.995688758689789876988877865667857E6127"    , "-8989899999.E6126"                               , 0xdfedbb3c7dbd8ef718864a2b3a96360au128, 0x20);
dec_test!(bid128_add_275, bid128_add, 2, 0x5bd3458aeeff67525c9f9a12f343e352u128         , 0xd00e0000000000000000000000000000u128            , 0x5bd3458aeeff67525c9f9a12f343e352u128, 0x00);
dec_test!(bid128_add_276, bid128_add, 2, 0x5f1e0000000000000000000000000000u128         , 0xd74b90398df0d2800b222a8e8514f3eeu128            , 0xd74b90398df0d2800b222a8e8514f3eeu128, 0x00);
dec_test!(bid128_add_277, bid128_add, 2, "+6667779.8796559657568566E6121"               , "-1.E6129"                                        , 0xdff200000000c5a37f76f1936e1a76cau128, 0x00);
dec_test!(bid128_add_278, bid128_add, 2, "-67742893945653349875463748543548.9E-6184"    , "+1100.0100110001101010E-6045"                    , 0x00ca363c140ab6aa266b6f4aea488000u128, 0x20);
dec_test!(bid128_add_279, bid128_add, 2, "-68488695427246.927E6129"                     , "-999899889999998899988988988888.9E6115"          , 0xdfffed09bead87c0378d8e63ffffffffu128, 0x28);
dec_test!(bid128_add_280, bid128_add, 2, "+6875897.879876979566658996675E6133"          , "+8.464777979989329969757976492E6138"             , 0x5ffe0000f985fe9359e4745fb3d1594au128, 0x00);
dec_test!(bid128_add_281, bid128_add, 2, "+7597756576.869587795965598779879969E-6070"   , "-8.E-6021"                                       , 0x80f58a6e32246c99c60ad84fffffffffu128, 0x20);
dec_test!(bid128_add_282, bid128_add, 2, 0x7e0006dd5267cd437cd23844b6d6a4eau128         , 0x9f65abe576e0df8e4506a13d63599947u128            , 0x7c0006dd5267cd437cd23844b6d6a4eau128, 0x01);
dec_test!(bid128_add_283, bid128_add, 2, 0x7e00149c7f5e6b773ff5188ebbb4795au128         , 0x37fe0000000000000000000000000000u128            , 0x7c00149c7f5e6b773ff5188ebbb4795au128, 0x01);
dec_test!(bid128_add_284, bid128_add, 2, 0x7e002cf4e6e4ac9dab55920b2c709cecu128         , 0x78000000000000000000000000000000u128            , 0x7c002cf4e6e4ac9dab55920b2c709cecu128, 0x01);
dec_test!(bid128_add_285, bid128_add, 2, 0x80236f1181464c675f86f5a3d472ea30u128         , 0x0000000000000000008c865000000001u128            , 0x80236f1181464c675f86f5a3d472ea2fu128, 0x20);
dec_test!(bid128_add_286, bid128_add, 2, 0x84848448bb86cdea47a3f05555554266u128         , 0xfe0016d3cfe15dc13ab1a1ea168bccd5u128            , 0xfc0016d3cfe15dc13ab1a1ea168bccd5u128, 0x01);
dec_test!(bid128_add_287, bid128_add, 2, "-86.96E-6051"                                 , "+6262839768259358968798.482E-6125"               , 0x80bbacbef36ec2d953f1ad2dffffffffu128, 0x20);
dec_test!(bid128_add_288, bid128_add, 2, "-88.E6128"                                    , "+1001100110110.E6131"                            , 0x5ffe04ef90e43b1338b16e0304700000u128, 0x00);
dec_test!(bid128_add_289, bid128_add, 2, "-89.689988889E-6076"                          , "-9899.98898989888988898E-6079"                   , 0x80a000000000021be0dbab0ddddd0ee2u128, 0x00);
dec_test!(bid128_add_290, bid128_add, 2, "+89797785599559975.97E6141"                   , "-10011100011110110.1111010001E6132"              , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_291, bid128_add, 2, "-8989899.889889998E6139"                      , "+1010010011101.001000010E6140"                   , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_292, bid128_add, 2, "+8999898889.898889988998988899899988E-6113"   , "-98.E-6015"                                      , 0x8103e32d63d305092c33af61ffffffffu128, 0x20);
dec_test!(bid128_add_293, bid128_add, 2, 0x8b71ea085f35078380db0ca76e5b0d32u128         , 0xf8000000000000000000000000000000u128            , 0xf8000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_294, bid128_add, 2, "-911011001111110.01111E-6035"                 , "+7757.85756877599677796689977E-6050"             , 0x80f5c129c10b6a95e248c238835bfeb0u128, 0x20);
dec_test!(bid128_add_295, bid128_add, 2, 0x94560000000000000000000000000000u128         , 0xfe000000000000000000000000000000u128            , 0xfc000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_296, bid128_add, 2, "-9596859585978896957666.8999678658685898E6123", "-855789958.556566566858E6136"                    , 0xdfffed09bead87c0378d8e63ffffffffu128, 0x28);
dec_test!(bid128_add_297, bid128_add, 2, "-986.7998E6137"                               , "-28399226863623.4336534472E6122"                 , 0xdffe00013edc83f35bce6e5a0186fdd0u128, 0x00);
dec_test!(bid128_add_298, bid128_add, 2, "-9888988988.8899888988E6150"                  , "+88887766666797.9757555E6150"                    , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_299, bid128_add, 2, "+98988.E6140"                                 , "+5758859.7585E6137"                              , 0x78000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_300, bid128_add, 2, "+989.89E6147"                                 , "-11011101001010.001110000001E6145"               , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_301, bid128_add, 2, "+98998899988998.899898899998999E6141"         , "-99898899999898899998999998988899.E6130"         , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_302, bid128_add, 2, "+9976878.E6138"                               , "+688895688756979657657.6957987659886589697E6123" , 0x78000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_303, bid128_add, 2, "-99898888.8899899989989999988898989888E6106"  , "-58975778987588776588859.6877656E6124"           , 0xf8000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_304, bid128_add, 2, "+9989989898899.999889E6132"                   , "+10100000010000110100111011.1010101101E6119"     , 0x78000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_305, bid128_add, 2, "+9.9E6144"                                    , "+1100010.111001111011011101010E6138"             , 0x78000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_306, bid128_add, 2, 0x9cd80000000000000000000000000000u128         , 0x16909df1f48b315f9e82e8740fb93bfdu128            , 0x16909df1f48b315f9e82e8740fb93bfdu128, 0x00);
dec_test!(bid128_add_307, bid128_add, 2, 0xa1c40000000000000000000000000000u128         , 0x5522c0c11492e428f7d822a92f1a5ef3u128            , 0x5522c0c11492e428f7d822a92f1a5ef3u128, 0x00);
dec_test!(bid128_add_308, bid128_add, 2, 0xa9481e81f1ac7df596dcd9baa6738f4au128         , 0xfe000ded30995e2c2a18fde4c3b4c242u128            , 0xfc000ded30995e2c2a18fde4c3b4c242u128, 0x01);
dec_test!(bid128_add_309, bid128_add, 2, 0xab5b7f8969162c5f9951aecf3b28ba61u128         , 0xfe001538549b96bcd8bac0361145a524u128            , 0xfc001538549b96bcd8bac0361145a524u128, 0x01);
dec_test!(bid128_add_310, bid128_add, 2, 0xbee1c676f1afe3cf09f61de91e262588u128         , 0x561ceab945062f0a24c48dc78dbedb6au128            , 0x561ceab945062f0a24c48dc78dbedb6au128, 0x20);
dec_test!(bid128_add_311, bid128_add, 2, 0xc8508282088604800000000000000000u128         , 0x100018000200000070b7486738c0cf39u128            , 0xc85082820886047fffffffffffffffffu128, 0x20);
dec_test!(bid128_add_312, bid128_add, 2, 0xd75c0000000000000000000000000000u128         , 0x132efa1ddf2a72991ec77faa102b45cau128            , 0x132efa1ddf2a72991ec77faa102b45cau128, 0x00);
dec_test!(bid128_add_313, bid128_add, 2, 0xf8000000000000000000000000000000u128         , 0x2ca1915e9c65355f6a9dd26fcb0633aeu128            , 0xf8000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_314, bid128_add, 2, 0xfe000000000000000000000000000000u128         , 0x1f0cabc46692f05e44e49d8f9551660cu128            , 0xfc000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_315, bid128_add, 2,  "Infinity"                                    ,        "-0"                                       , 0x78000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_316, bid128_add, 2, "-Infinity"                                    ,  "Infinity"                                       , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_317, bid128_add, 2, "-Infinity"                                    ,      "QNaN"                                       , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_318, bid128_add, 2,  "Infinity"                                    ,      "SNaN"                                       , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_319, bid128_add, 2,      "QNaN"                                    , "-Infinity"                                       , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_320, bid128_add, 2,      "SNaN"                                    , "-Infinity"                                       , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_321, bid128_add, 2,      "SNaN"                                    ,      "SNaN"                                       , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_322, bid128_add, 3, 0x0001ed09bead87c0378d8e62ffffffffu128         , 0x0001ed09bead87c0378d8e62ffffffffu128            , 0x0002629b8c891b267182b613ccccccccu128, 0x20);
dec_test!(bid128_add_323, bid128_add, 3, 0x0001ed09bead87c0378d8e62ffffffffu128         , 0x0001ed09bead87c0378d8e64ffffffffu128            , 0x0001ed09bead87c0378d8e62ffffffffu128, 0x00);
dec_test!(bid128_add_324, bid128_add, 3, 0x0001ed09bead87c0378d8e64ffffffffu128         , 0x0001ed09bead87c0378d8e62ffffffffu128            , 0x0001ed09bead87c0378d8e62ffffffffu128, 0x00);
dec_test!(bid128_add_325, bid128_add, 3, 0x0001ed09bead87c0378d8e64ffffffffu128         , 0x0001ed09bead87c0378d8e64ffffffffu128            , 0x00000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_326, bid128_add, 3, "0"                                            , "QNaN"                                            , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_327, bid128_add, 3, "+100000.00000000E6107"                        , "+5695567.598669978987E6134"                      , 0x5ff718d02b771ae1f14f07d33b7906a0u128, 0x00);
dec_test!(bid128_add_328, bid128_add, 3, "+1.00101011001100101E6131"                    , "-98697989675958559.6755E6101"                    , 0x5fe4315a861bf878b4305be78d569c44u128, 0x20);
dec_test!(bid128_add_329, bid128_add, 3, "-1001100.E6103"                               , "+76675966976599977.8786866E6115"                 , 0x5fee0000f7c0df92ac3e3aec4c25c4b4u128, 0x00);
dec_test!(bid128_add_330, bid128_add, 3, "-1010000000000100.E-6008"                     , "-8.E-6083"                                       , 0x812c31cbfe02adbb651a045de3100000u128, 0x20);
dec_test!(bid128_add_331, bid128_add, 3, "+101001100000101.000000E6138"                 , "-7695957767658598867966685688.99E6120"           , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_332, bid128_add, 3, "+101010111000001011101000100100000010.E6111"  , "-75.59599E6145"                                  , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_333, bid128_add, 3, "-10.11000000110000E6142"                      , "-1010000.10000000E6100"                          , 0xdffc31d89d2f61d15c703f2068c00000u128, 0x20);
dec_test!(bid128_add_334, bid128_add, 3, "-1011.000011100100000001000110E-6050"         , "-899998998989888989988.888898898E-6112"          , 0x80c031d89d38790fe039a2b1dfc38780u128, 0x20);
dec_test!(bid128_add_335, bid128_add, 3, "+1100111110010000101100.00111E-6148"          , "-0.E-6012"                                       , 0x002e0000005affc246f94b02529cdbefu128, 0x00);
dec_test!(bid128_add_336, bid128_add, 3, "+11011000100110.0000001001001111E-6070"       , "-111100101.001E-6037"                            , 0x80e436c6cde001d19539cedba43e51e1u128, 0x20);
dec_test!(bid128_add_337, bid128_add, 3, "+1.10110010100000011010100000E6117"           , "-0.E6139"                                        , 0x5fd60000005b14b39baf21a04e72cb20u128, 0x00);
dec_test!(bid128_add_338, bid128_add, 3, "-111110011011.0110000100E6105"                , "+11000100110.00000110010010E6121"                , 0x5fe4363c140ab6a4209184fd9dc6d2cfu128, 0x20);
dec_test!(bid128_add_339, bid128_add, 3, 0x1c4dddec6a7a1c60fb50c15771b095e3u128         , 0x7c000fea63a9224b3d4501def3959458u128            , 0x7c000fea63a9224b3d4501def3959458u128, 0x00);
dec_test!(bid128_add_340, bid128_add, 3, "-263422633844658.928332597223469897E6134"     , "+747.E6145"                                      , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_341, bid128_add, 3, 0x28400000000000000000000000000000u128         , 0x59364b22e2d719b8fc26061748ffb476u128            , 0x59364b22e2d719b8fc26061748ffb476u128, 0x00);
dec_test!(bid128_add_342, bid128_add, 3, "+2997.653489948889292735459468782643377E6108" , "+9278673824.6482453738329E6133"                  , 0x5ffbc9795419f3c89a4a228d118ea92bu128, 0x20);
dec_test!(bid128_add_343, bid128_add, 3, 0x2b4ed27250ae592981da062276e0d757u128         , 0xfe000aca05f2778b5f0172fb73aa63b4u128            , 0xfc000aca05f2778b5f0172fb73aa63b4u128, 0x01);
dec_test!(bid128_add_344, bid128_add, 3, "+3624659768534336587.96423867374255653E6150"  , "-10010001111100011101010101110.0110000011E6141"  , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_345, bid128_add, 3, 0x38a80000000000000000000000000000u128         , 0x5489c7f28d0c759c797749662afbfd8cu128            , 0x5489c7f28d0c759c797749662afbfd8cu128, 0x00);
dec_test!(bid128_add_346, bid128_add, 3, "-394.678E6139"                                , "+55.3696E6105"                                   , 0xdff8c2975dfa0314f5a1f6515fffffffu128, 0x20);
dec_test!(bid128_add_347, bid128_add, 3, "+55689855855588879577565566.7587E6118"        , "+9988989988.888898899999E6135"                   , 0x5fffed09bead87c0378d8e63ffffffffu128, 0x28);
dec_test!(bid128_add_348, bid128_add, 3, "-5.995688758689789876988877865667857E6127"    , "-8989899999.E6126"                               , 0xdfedbb3c7dbd8ef718864a2b3a96360au128, 0x20);
dec_test!(bid128_add_349, bid128_add, 3, 0x5bd3458aeeff67525c9f9a12f343e352u128         , 0xd00e0000000000000000000000000000u128            , 0x5bd3458aeeff67525c9f9a12f343e352u128, 0x00);
dec_test!(bid128_add_350, bid128_add, 3, 0x5f1e0000000000000000000000000000u128         , 0xd74b90398df0d2800b222a8e8514f3eeu128            , 0xd74b90398df0d2800b222a8e8514f3eeu128, 0x00);
dec_test!(bid128_add_351, bid128_add, 3, "+6667779.8796559657568566E6121"               , "-1.E6129"                                        , 0xdff200000000c5a37f76f1936e1a76cau128, 0x00);
dec_test!(bid128_add_352, bid128_add, 3, "-67742893945653349875463748543548.9E-6184"    , "+1100.0100110001101010E-6045"                    , 0x00ca363c140ab6aa266b6f4aea487fffu128, 0x20);
dec_test!(bid128_add_353, bid128_add, 3, "-68488695427246.927E6129"                     , "-999899889999998899988988988888.9E6115"          , 0xdfffed09bead87c0378d8e63ffffffffu128, 0x28);
dec_test!(bid128_add_354, bid128_add, 3, "+6875897.879876979566658996675E6133"          , "+8.464777979989329969757976492E6138"             , 0x5ffe0000f985fe9359e4745fb3d1594au128, 0x00);
dec_test!(bid128_add_355, bid128_add, 3, "+7597756576.869587795965598779879969E-6070"   , "-8.E-6021"                                       , 0x80f58a6e32246c99c60ad84fffffffffu128, 0x20);
dec_test!(bid128_add_356, bid128_add, 3, 0x7e0006dd5267cd437cd23844b6d6a4eau128         , 0x9f65abe576e0df8e4506a13d63599947u128            , 0x7c0006dd5267cd437cd23844b6d6a4eau128, 0x01);
dec_test!(bid128_add_357, bid128_add, 3, 0x7e00149c7f5e6b773ff5188ebbb4795au128         , 0x37fe0000000000000000000000000000u128            , 0x7c00149c7f5e6b773ff5188ebbb4795au128, 0x01);
dec_test!(bid128_add_358, bid128_add, 3, 0x7e002cf4e6e4ac9dab55920b2c709cecu128         , 0x78000000000000000000000000000000u128            , 0x7c002cf4e6e4ac9dab55920b2c709cecu128, 0x01);
dec_test!(bid128_add_359, bid128_add, 3, 0x84848448bb86cdea47a3f05555554266u128         , 0xfe0016d3cfe15dc13ab1a1ea168bccd5u128            , 0xfc0016d3cfe15dc13ab1a1ea168bccd5u128, 0x01);
dec_test!(bid128_add_360, bid128_add, 3, "-86.96E-6051"                                 , "+6262839768259358968798.482E-6125"               , 0x80bbacbef36ec2d953f1ad2dffffffffu128, 0x20);
dec_test!(bid128_add_361, bid128_add, 3, "-88.E6128"                                    , "+1001100110110.E6131"                            , 0x5ffe04ef90e43b1338b16e0304700000u128, 0x00);
dec_test!(bid128_add_362, bid128_add, 3, "-89.689988889E-6076"                          , "-9899.98898989888988898E-6079"                   , 0x80a000000000021be0dbab0ddddd0ee2u128, 0x00);
dec_test!(bid128_add_363, bid128_add, 3, "+89797785599559975.97E6141"                   , "-10011100011110110.1111010001E6132"              , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_364, bid128_add, 3, "-8989899.889889998E6139"                      , "+1010010011101.001000010E6140"                   , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_365, bid128_add, 3, "+8999898889.898889988998988899899988E-6113"   , "-98.E-6015"                                      , 0x8103e32d63d305092c33af61ffffffffu128, 0x20);
dec_test!(bid128_add_366, bid128_add, 3, 0x8b71ea085f35078380db0ca76e5b0d32u128         , 0xf8000000000000000000000000000000u128            , 0xf8000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_367, bid128_add, 3, "-911011001111110.01111E-6035"                 , "+7757.85756877599677796689977E-6050"             , 0x80f5c129c10b6a95e248c238835bfeb0u128, 0x20);
dec_test!(bid128_add_368, bid128_add, 3, 0x94560000000000000000000000000000u128         , 0xfe000000000000000000000000000000u128            , 0xfc000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_369, bid128_add, 3, "-9596859585978896957666.8999678658685898E6123", "-855789958.556566566858E6136"                    , 0xdfffed09bead87c0378d8e63ffffffffu128, 0x28);
dec_test!(bid128_add_370, bid128_add, 3, "-986.7998E6137"                               , "-28399226863623.4336534472E6122"                 , 0xdffe00013edc83f35bce6e5a0186fdd0u128, 0x00);
dec_test!(bid128_add_371, bid128_add, 3, "-9888988988.8899888988E6150"                  , "+88887766666797.9757555E6150"                    , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_372, bid128_add, 3, "+98988.E6140"                                 , "+5758859.7585E6137"                              , 0x5fffed09bead87c0378d8e63ffffffffu128, 0x28);
dec_test!(bid128_add_373, bid128_add, 3, "+989.89E6147"                                 , "-11011101001010.001110000001E6145"               , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_374, bid128_add, 3, "+98998899988998.899898899998999E6141"         , "-99898899999898899998999998988899.E6130"         , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_375, bid128_add, 3, "+9976878.E6138"                               , "+688895688756979657657.6957987659886589697E6123" , 0x5fffed09bead87c0378d8e63ffffffffu128, 0x28);
dec_test!(bid128_add_376, bid128_add, 3, "-99898888.8899899989989999988898989888E6106"  , "-58975778987588776588859.6877656E6124"           , 0xf8000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_377, bid128_add, 3, "+9989989898899.999889E6132"                   , "+10100000010000110100111011.1010101101E6119"     , 0x5fffed09bead87c0378d8e63ffffffffu128, 0x28);
dec_test!(bid128_add_378, bid128_add, 3, "+9.9E6144"                                    , "+1100010.111001111011011101010E6138"             , 0x5fffed09bead87c0378d8e63ffffffffu128, 0x28);
dec_test!(bid128_add_379, bid128_add, 3, 0x9cd80000000000000000000000000000u128         , 0x16909df1f48b315f9e82e8740fb93bfdu128            , 0x16909df1f48b315f9e82e8740fb93bfdu128, 0x00);
dec_test!(bid128_add_380, bid128_add, 3, 0xa1c40000000000000000000000000000u128         , 0x5522c0c11492e428f7d822a92f1a5ef3u128            , 0x5522c0c11492e428f7d822a92f1a5ef3u128, 0x00);
dec_test!(bid128_add_381, bid128_add, 3, 0xa9481e81f1ac7df596dcd9baa6738f4au128         , 0xfe000ded30995e2c2a18fde4c3b4c242u128            , 0xfc000ded30995e2c2a18fde4c3b4c242u128, 0x01);
dec_test!(bid128_add_382, bid128_add, 3, 0xab5b7f8969162c5f9951aecf3b28ba61u128         , 0xfe001538549b96bcd8bac0361145a524u128            , 0xfc001538549b96bcd8bac0361145a524u128, 0x01);
dec_test!(bid128_add_383, bid128_add, 3, 0xbee1c676f1afe3cf09f61de91e262588u128         , 0x561ceab945062f0a24c48dc78dbedb6au128            , 0x561ceab945062f0a24c48dc78dbedb69u128, 0x20);
dec_test!(bid128_add_384, bid128_add, 3, 0xd75c0000000000000000000000000000u128         , 0x132efa1ddf2a72991ec77faa102b45cau128            , 0x132efa1ddf2a72991ec77faa102b45cau128, 0x00);
dec_test!(bid128_add_385, bid128_add, 3, 0xf8000000000000000000000000000000u128         , 0x2ca1915e9c65355f6a9dd26fcb0633aeu128            , 0xf8000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_386, bid128_add, 3, 0xfe000000000000000000000000000000u128         , 0x1f0cabc46692f05e44e49d8f9551660cu128            , 0xfc000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_387, bid128_add, 3,  "Infinity"                                    ,        "-0"                                       , 0x78000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_388, bid128_add, 3, "-Infinity"                                    ,  "Infinity"                                       , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_389, bid128_add, 3, "-Infinity"                                    ,      "QNaN"                                       , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_390, bid128_add, 3,  "Infinity"                                    ,      "SNaN"                                       , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_391, bid128_add, 3,      "QNaN"                                    , "-Infinity"                                       , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_392, bid128_add, 3,      "SNaN"                                    , "-Infinity"                                       , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_393, bid128_add, 3,      "SNaN"                                    ,      "SNaN"                                       , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_394, bid128_add, 4, 0x0000000000008000004910c400000000u128         , 0x5fe5f9ffd9ebcf7f000404e2000600a0u128            , 0x0000000000008000004910c400000000u128, 0x00);
dec_test!(bid128_add_395, bid128_add, 4, 0x00008420a00002000a80008002a35040u128         , 0x8045c945a31d6f328cb7a8b66cfac3fdu128            , 0x8045c945a31d6f328cb7a8b66cfac3fdu128, 0x20);
dec_test!(bid128_add_396, bid128_add, 4, 0x0001ed09bead87c0378d8e62ffffffffu128         , 0x0001ed09bead87c0378d8e62ffffffffu128            , 0x0002629b8c891b267182b613cccccccdu128, 0x20);
dec_test!(bid128_add_397, bid128_add, 4, 0x0001ed09bead87c0378d8e62ffffffffu128         , 0x0001ed09bead87c0378d8e64ffffffffu128            , 0x0001ed09bead87c0378d8e62ffffffffu128, 0x00);
dec_test!(bid128_add_398, bid128_add, 4, 0x0001ed09bead87c0378d8e64ffffffffu128         , 0x0001ed09bead87c0378d8e62ffffffffu128            , 0x0001ed09bead87c0378d8e62ffffffffu128, 0x00);
dec_test!(bid128_add_399, bid128_add, 4, 0x0001ed09bead87c0378d8e64ffffffffu128         , 0x0001ed09bead87c0378d8e64ffffffffu128            , 0x00000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_400, bid128_add, 4, 0x0020828000000010cf88020652208000u128         , 0x00000000000000000010000000220000u128            , 0x0020828000000010cf88020652208000u128, 0x20);
dec_test!(bid128_add_401, bid128_add, 4, 0x0022100020000001f000051104440000u128         , 0x00000000000100002d2100c91840cb06u128            , 0x0020a00140000013600032aa31dcadebu128, 0x20);
dec_test!(bid128_add_402, bid128_add, 4, "0"                                            , "QNaN"                                            , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_403, bid128_add, 4, "+100000.00000000E6107"                        , "+5695567.598669978987E6134"                      , 0x5ff718d02b771ae1f14f07d33b7906a0u128, 0x00);
dec_test!(bid128_add_404, bid128_add, 4, "+1.00101011001100101E6131"                    , "-98697989675958559.6755E6101"                    , 0x5fe4315a861bf878b4305be78d569c45u128, 0x20);
dec_test!(bid128_add_405, bid128_add, 4, "-1001100.E6103"                               , "+76675966976599977.8786866E6115"                 , 0x5fee0000f7c0df92ac3e3aec4c25c4b4u128, 0x00);
dec_test!(bid128_add_406, bid128_add, 4, "-1010000000000100.E-6008"                     , "-8.E-6083"                                       , 0x812c31cbfe02adbb651a045de3100000u128, 0x20);
dec_test!(bid128_add_407, bid128_add, 4, "+101001100000101.000000E6138"                 , "-7695957767658598867966685688.99E6120"           , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_408, bid128_add, 4, "+101010111000001011101000100100000010.E6111"  , "-75.59599E6145"                                  , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_409, bid128_add, 4, "-10.11000000110000E6142"                      , "-1010000.10000000E6100"                          , 0xdffc31d89d2f61d15c703f2068c00000u128, 0x20);
dec_test!(bid128_add_410, bid128_add, 4, "-1011.000011100100000001000110E-6050"         , "-899998998989888989988.888898898E-6112"          , 0x80c031d89d38790fe039a2b1dfc38780u128, 0x20);
dec_test!(bid128_add_411, bid128_add, 4, "+1100111110010000101100.00111E-6148"          , "-0.E-6012"                                       , 0x002e0000005affc246f94b02529cdbefu128, 0x00);
dec_test!(bid128_add_412, bid128_add, 4, "+11011000100110.0000001001001111E-6070"       , "-111100101.001E-6037"                            , 0x80e436c6cde001d19539cedba43e51e2u128, 0x20);
dec_test!(bid128_add_413, bid128_add, 4, "+1.10110010100000011010100000E6117"           , "-0.E6139"                                        , 0x5fd60000005b14b39baf21a04e72cb20u128, 0x00);
dec_test!(bid128_add_414, bid128_add, 4, "-111110011011.0110000100E6105"                , "+11000100110.00000110010010E6121"                , 0x5fe4363c140ab6a4209184fd9dc6d2d0u128, 0x20);
dec_test!(bid128_add_415, bid128_add, 4, 0x1392280b19d70c0b2041039000096101u128         , 0xf65addcfbf5fa71de3dfffffb7fdfebfu128            , 0x1392280b19d70c0b2041039000096101u128, 0x00);
dec_test!(bid128_add_416, bid128_add, 4, 0x1c4dddec6a7a1c60fb50c15771b095e3u128         , 0x7c000fea63a9224b3d4501def3959458u128            , 0x7c000fea63a9224b3d4501def3959458u128, 0x00);
dec_test!(bid128_add_417, bid128_add, 4, "-263422633844658.928332597223469897E6134"     , "+747.E6145"                                      , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_418, bid128_add, 4, 0x28400000000000000000000000000000u128         , 0x59364b22e2d719b8fc26061748ffb476u128            , 0x59364b22e2d719b8fc26061748ffb476u128, 0x00);
dec_test!(bid128_add_419, bid128_add, 4, "+2997.653489948889292735459468782643377E6108" , "+9278673824.6482453738329E6133"                  , 0x5ffbc9795419f3c89a4a228d118ea92cu128, 0x20);
dec_test!(bid128_add_420, bid128_add, 4, 0x2ad6d9d6d46be91ca79f9078ce846e2au128         , 0x5a231792da18902dfa74ba0bb2f2a9d2u128            , 0x5a231792da18902dfa74ba0bb2f2a9d2u128, 0x20);
dec_test!(bid128_add_421, bid128_add, 4, 0x2b4ed27250ae592981da062276e0d757u128         , 0xfe000aca05f2778b5f0172fb73aa63b4u128            , 0xfc000aca05f2778b5f0172fb73aa63b4u128, 0x01);
dec_test!(bid128_add_422, bid128_add, 4, "+3624659768534336587.96423867374255653E6150"  , "-10010001111100011101010101110.0110000011E6141"  , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_423, bid128_add, 4, 0x38a80000000000000000000000000000u128         , 0x5489c7f28d0c759c797749662afbfd8cu128            , 0x5489c7f28d0c759c797749662afbfd8cu128, 0x00);
dec_test!(bid128_add_424, bid128_add, 4, "-394.678E6139"                                , "+55.3696E6105"                                   , 0xdff8c2975dfa0314f5a1f65160000000u128, 0x20);
dec_test!(bid128_add_425, bid128_add, 4, "+55689855855588879577565566.7587E6118"        , "+9988989988.888898899999E6135"                   , 0x78000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_426, bid128_add, 4, "-5.995688758689789876988877865667857E6127"    , "-8989899999.E6126"                               , 0xdfedbb3c7dbd8ef718864a2b3a96360bu128, 0x20);
dec_test!(bid128_add_427, bid128_add, 4, 0x5bd3458aeeff67525c9f9a12f343e352u128         , 0xd00e0000000000000000000000000000u128            , 0x5bd3458aeeff67525c9f9a12f343e352u128, 0x00);
dec_test!(bid128_add_428, bid128_add, 4, 0x5f1e0000000000000000000000000000u128         , 0xd74b90398df0d2800b222a8e8514f3eeu128            , 0xd74b90398df0d2800b222a8e8514f3eeu128, 0x00);
dec_test!(bid128_add_429, bid128_add, 4, "+6667779.8796559657568566E6121"               , "-1.E6129"                                        , 0xdff200000000c5a37f76f1936e1a76cau128, 0x00);
dec_test!(bid128_add_430, bid128_add, 4, "-67742893945653349875463748543548.9E-6184"    , "+1100.0100110001101010E-6045"                    , 0x00ca363c140ab6aa266b6f4aea488000u128, 0x20);
dec_test!(bid128_add_431, bid128_add, 4, "-68488695427246.927E6129"                     , "-999899889999998899988988988888.9E6115"          , 0xf8000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_432, bid128_add, 4, "+6875897.879876979566658996675E6133"          , "+8.464777979989329969757976492E6138"             , 0x5ffe0000f985fe9359e4745fb3d1594au128, 0x00);
dec_test!(bid128_add_433, bid128_add, 4, "+7597756576.869587795965598779879969E-6070"   , "-8.E-6021"                                       , 0x80f58a6e32246c99c60ad85000000000u128, 0x20);
dec_test!(bid128_add_434, bid128_add, 4, 0x7e0006dd5267cd437cd23844b6d6a4eau128         , 0x9f65abe576e0df8e4506a13d63599947u128            , 0x7c0006dd5267cd437cd23844b6d6a4eau128, 0x01);
dec_test!(bid128_add_435, bid128_add, 4, 0x7e00149c7f5e6b773ff5188ebbb4795au128         , 0x37fe0000000000000000000000000000u128            , 0x7c00149c7f5e6b773ff5188ebbb4795au128, 0x01);
dec_test!(bid128_add_436, bid128_add, 4, 0x7e002cf4e6e4ac9dab55920b2c709cecu128         , 0x78000000000000000000000000000000u128            , 0x7c002cf4e6e4ac9dab55920b2c709cecu128, 0x01);
dec_test!(bid128_add_437, bid128_add, 4, 0x8000400080402000ffe7fffffffbffffu128         , 0x0000110a210840010840000200000800u128            , 0x80002ef65f37dffff7a7fffdfffbf7ffu128, 0x00);
dec_test!(bid128_add_438, bid128_add, 4, 0x80100000008001118498563480440020u128         , 0x00004891000401209a1b9d433d9f9e78u128            , 0x8002450a2fd3ed30480a760e2082d9c1u128, 0x20);
dec_test!(bid128_add_439, bid128_add, 4, 0x84848448bb86cdea47a3f05555554266u128         , 0xfe0016d3cfe15dc13ab1a1ea168bccd5u128            , 0xfc0016d3cfe15dc13ab1a1ea168bccd5u128, 0x01);
dec_test!(bid128_add_440, bid128_add, 4, "-86.96E-6051"                                 , "+6262839768259358968798.482E-6125"               , 0x80bbacbef36ec2d953f1ad2e00000000u128, 0x20);
dec_test!(bid128_add_441, bid128_add, 4, "-88.E6128"                                    , "+1001100110110.E6131"                            , 0x5ffe04ef90e43b1338b16e0304700000u128, 0x00);
dec_test!(bid128_add_442, bid128_add, 4, "-89.689988889E-6076"                          , "-9899.98898989888988898E-6079"                   , 0x80a000000000021be0dbab0ddddd0ee2u128, 0x00);
dec_test!(bid128_add_443, bid128_add, 4, "+89797785599559975.97E6141"                   , "-10011100011110110.1111010001E6132"              , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_444, bid128_add, 4, "-8989899.889889998E6139"                      , "+1010010011101.001000010E6140"                   , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_445, bid128_add, 4, "+8999.88999E4401"                             , "-10.0E4437"                                      , 0xd2a9ed09bead87c0378d8e63fffffff7u128, 0x20);
dec_test!(bid128_add_446, bid128_add, 4, "+8999898889.898889988998988899899988E-6113"   , "-98.E-6015"                                      , 0x8103e32d63d305092c33af6200000000u128, 0x20);
dec_test!(bid128_add_447, bid128_add, 4, 0x8b71ea085f35078380db0ca76e5b0d32u128         , 0xf8000000000000000000000000000000u128            , 0xf8000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_448, bid128_add, 4, "-911011001111110.01111E-6035"                 , "+7757.85756877599677796689977E-6050"             , 0x80f5c129c10b6a95e248c238835bfeb0u128, 0x20);
dec_test!(bid128_add_449, bid128_add, 4, 0x94560000000000000000000000000000u128         , 0xfe000000000000000000000000000000u128            , 0xfc000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_450, bid128_add, 4, "-9596859585978896957666.8999678658685898E6123", "-855789958.556566566858E6136"                    , 0xf8000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_451, bid128_add, 4, "-986.7998E6137"                               , "-28399226863623.4336534472E6122"                 , 0xdffe00013edc83f35bce6e5a0186fdd0u128, 0x00);
dec_test!(bid128_add_452, bid128_add, 4, "-9888988988.8899888988E6150"                  , "+88887766666797.9757555E6150"                    , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_453, bid128_add, 4, "+98988.E6140"                                 , "+5758859.7585E6137"                              , 0x78000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_454, bid128_add, 4, "+989.89E6147"                                 , "-11011101001010.001110000001E6145"               , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_455, bid128_add, 4, "+98998899988998.899898899998999E6141"         , "-99898899999898899998999998988899.E6130"         , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_456, bid128_add, 4, "+9976878.E6138"                               , "+688895688756979657657.6957987659886589697E6123" , 0x78000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_457, bid128_add, 4, "-99898888.8899899989989999988898989888E6106"  , "-58975778987588776588859.6877656E6124"           , 0xf8000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_458, bid128_add, 4, "+9989989898899.999889E6132"                   , "+10100000010000110100111011.1010101101E6119"     , 0x78000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_459, bid128_add, 4, "+9.9E6144"                                    , "+1100010.111001111011011101010E6138"             , 0x78000000000000000000000000000000u128, 0x28);
dec_test!(bid128_add_460, bid128_add, 4, 0x9cd80000000000000000000000000000u128         , 0x16909df1f48b315f9e82e8740fb93bfdu128            , 0x16909df1f48b315f9e82e8740fb93bfdu128, 0x00);
dec_test!(bid128_add_461, bid128_add, 4, 0xa1c40000000000000000000000000000u128         , 0x5522c0c11492e428f7d822a92f1a5ef3u128            , 0x5522c0c11492e428f7d822a92f1a5ef3u128, 0x00);
dec_test!(bid128_add_462, bid128_add, 4, 0xa9481e81f1ac7df596dcd9baa6738f4au128         , 0xfe000ded30995e2c2a18fde4c3b4c242u128            , 0xfc000ded30995e2c2a18fde4c3b4c242u128, 0x01);
dec_test!(bid128_add_463, bid128_add, 4, 0xab5b7f8969162c5f9951aecf3b28ba61u128         , 0xfe001538549b96bcd8bac0361145a524u128            , 0xfc001538549b96bcd8bac0361145a524u128, 0x01);
dec_test!(bid128_add_464, bid128_add, 4, 0xbee1c676f1afe3cf09f61de91e262588u128         , 0x561ceab945062f0a24c48dc78dbedb6au128            , 0x561ceab945062f0a24c48dc78dbedb6au128, 0x20);
dec_test!(bid128_add_465, bid128_add, 4, 0xc0c47de8bb8a81caa1571e2bdc47b401u128         , 0x40810000040200000000205500000000u128            , 0xc0c47de8bb8a81caa1571e2bdc47b400u128, 0x20);
dec_test!(bid128_add_466, bid128_add, 4, 0xd75c0000000000000000000000000000u128         , 0x132efa1ddf2a72991ec77faa102b45cau128            , 0x132efa1ddf2a72991ec77faa102b45cau128, 0x00);
dec_test!(bid128_add_467, bid128_add, 4, 0xf8000000000000000000000000000000u128         , 0x2ca1915e9c65355f6a9dd26fcb0633aeu128            , 0xf8000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_468, bid128_add, 4, 0xfe000000000000000000000000000000u128         , 0x1f0cabc46692f05e44e49d8f9551660cu128            , 0xfc000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_469, bid128_add, 4, "Infinity"                                     , "-0"                                              , 0x78000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_470, bid128_add, 4, "-Infinity"                                    , "Infinity"                                        , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_471, bid128_add, 4, "-Infinity"                                    , "QNaN"                                            , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_472, bid128_add, 4, "Infinity"                                     , "SNaN"                                            , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_473, bid128_add, 4, "QNaN"                                         , "-Infinity"                                       , 0x7c000000000000000000000000000000u128, 0x00);
dec_test!(bid128_add_474, bid128_add, 4, "SNaN"                                         , "-Infinity"                                       , 0x7c000000000000000000000000000000u128, 0x01);
dec_test!(bid128_add_475, bid128_add, 4, "SNaN"                                         , "SNaN"                                            , 0x7c000000000000000000000000000000u128, 0x01);

dec_test!(bid128_add_476, bid128_add, 1, 0x00423078000200100000000000000000u128        , 0x800001da00040000405041d2e901ac1du128            , 0x0041e4b00014009fffffffffffffffffu128   , 0x20);
dec_test!(bid128_add_477, bid128_add, 0, 0xccffbf795fb694b1ffffffffffffffffu128        , 0xccfdec79b21ac98c67c2f889c1d4cd74u128            , 0xcd0031ac130849347beae8e2a8569ba7u128   , 0x20);
dec_test!(bid128_add_478, bid128_add, 0, 0xd6dfdf2fbfffffbf8b8462ca02889cb1u128        , 0xd6ddcbfe7bd605badfcfe9fd777f3a77u128            , 0xd6e03484c284b33b6c598ec7602b17efu128   , 0x20);
dec_test!(bid128_add_479, bid128_add, 0, 0x0fa9801fe9ac372017875158ded9d859u128        , 0x0fabec95ded802102a002751ded92216u128            , 0x0fac35198bd233f52327c4bed5f40d41u128   , 0x20);
dec_test!(bid128_add_480, bid128_add, 1, 0x00423078000200100000000000000000u128        , 0x800001da00040000405041d2e901ac1du128            , 0x0041e4b00014009fffffffffffffffffu128   , 0x20);
dec_test!(bid128_add_481, bid128_add, 0, 0xccffbf795fb694b1ffffffffffffffffu128        , 0xccfdec79b21ac98c67c2f889c1d4cd74u128            , 0xcd0031ac130849347beae8e2a8569ba7u128   , 0x20);
dec_test!(bid128_add_482, bid128_add, 1, 0x20000806022000019ff75fa3776fde4fu128        , 0xa04082a57e10d5740000000000000001u128            , 0xa04082a57e10d5740000000000000000u128   , 0x20);
dec_test!(bid128_add_483, bid128_add, 0, 0x7c00314dc6448d9338c15b1000000000u128        , "1"                                               , 0x7c000000000000000000000000000000u128   , 0x00);
dec_test!(bid128_add_484, bid128_add, 0, "1"                                           , 0x7c00314dc6448d9338c15b1000000000u128            , 0x7c000000000000000000000000000000u128   , 0x00);
dec_test!(bid128_add_485, bid128_add, 0, "-1500000000000000000000000000000000E-66"     , "+5000000000000000000000000000000000E-100"        , "-1500000000000000000000000000000000E-66", 0x20);
dec_test!(bid128_add_486, bid128_add, 1, "-1500000000000000000000000000000000E-66"     , "+5000000000000000000000000000000000E-100"        , "-1500000000000000000000000000000000E-66", 0x20);
dec_test!(bid128_add_487, bid128_add, 2, "-1500000000000000000000000000000000E-66"     , "+5000000000000000000000000000000000E-100"        , "-1499999999999999999999999999999999E-66", 0x20);
dec_test!(bid128_add_488, bid128_add, 3, "-1500000000000000000000000000000000E-66"     , "+5000000000000000000000000000000000E-100"        , "-1499999999999999999999999999999999E-66", 0x20);
dec_test!(bid128_add_489, bid128_add, 4, "-1500000000000000000000000000000000E-66"     , "+5000000000000000000000000000000000E-100"        , "-1500000000000000000000000000000000E-66", 0x20);