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
|
DN_OP2(dn_max, decNumberMax)
DN_OP2(dn_min, decNumberMin)
DN_OP2(dn_quantize, decNumberQuantize)
DN_OP2(dn_remainder, decNumberRemainder)
DN_OP2(dn_remaindernear, decNumberRemainderNear)
DN_OP2(dn_rescale, decNumberRescale)
static int dn_samequantum (lua_State *L)
{
decContext *dc = ldn_get_context (L);
decNumber *dn1 = ldn_get (L, dc, 1);
decNumber *dn2 = ldn_get (L, dc, 2);
decNumber *dnr = ldn_make_decNumber (L);
decNumberSameQuantum(dnr, dn1, dn2);
return 1;
}
/* trim */
static int dn_trim (lua_State *L)
{
decContext *dc = ldn_get_context (L);
decNumber *dn1 = ldn_get (L, dc, 1);
decNumber *dnr = ldn_make_decNumber (L);
decNumberCopy (dnr, dn1);
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
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
|
DN_OP2(dn_max, decNumberMax)
DN_OP2(dn_min, decNumberMin)
DN_OP2(dn_quantize, decNumberQuantize)
DN_OP2(dn_remainder, decNumberRemainder)
DN_OP2(dn_remaindernear, decNumberRemainderNear)
DN_OP2(dn_rescale, decNumberRescale)
/* mod -- needs to be fudged from remainder */
static int dn_mod (lua_State *L)
{
decContext *dc = ldn_get_context (L);
decNumber *dn1 = ldn_get (L, dc, 1);
decNumber *dn2 = ldn_get (L, dc, 2);
decNumber *dnr = ldn_make_decNumber (L);
decNumberRemainder (dnr, dn1, dn2, dc);
if ((decNumberIsNegative(dn1) ^ decNumberIsNegative(dn2)) != 0)
{
// convert remainder to modulo for mismatched signs
decNumberAdd (dnr, dnr, dn2, dc);
}
return 1;
}
/* samequantum -- call needs no context */
static int dn_samequantum (lua_State *L)
{
decContext *dc = ldn_get_context (L);
decNumber *dn1 = ldn_get (L, dc, 1);
decNumber *dn2 = ldn_get (L, dc, 2);
decNumber *dnr = ldn_make_decNumber (L);
decNumberSameQuantum(dnr, dn1, dn2);
return 1;
}
/* trim -- needs decNumberCopy */
static int dn_trim (lua_State *L)
{
decContext *dc = ldn_get_context (L);
decNumber *dn1 = ldn_get (L, dc, 1);
decNumber *dnr = ldn_make_decNumber (L);
decNumberCopy (dnr, dn1);
|
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
|
{"max", dn_max },
{"min", dn_min },
{"quantize", dn_quantize },
{"remainder", dn_remainder },
{"remaindernear", dn_remaindernear },
{"rescale", dn_rescale },
{"samequantum", dn_samequantum },
{"iszero", dn_iszero },
{"isnegative", dn_isneg },
{"isnan", dn_isnan },
{"isqnan", dn_isqnan },
{"issnan", dn_issnan },
{"isinfinite", dn_isinf },
{"trim", dn_trim },
{"tostring", dn_string },
{"toengstring", dn_engstring },
{ "__unm", dn_neg },
{ "__add", dn_add },
{ "__sub", dn_sub },
{ "__mul", dn_mul },
{ "__div", dn_div },
{ "__pow", dn_pow },
{ "__eq", dn_eq },
{ "__lt", dn_lt },
{ "__le", dn_le },
{ "__tostring", dn_string },
{ NULL, NULL }
};
|
>
>
>
|
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
|
{"max", dn_max },
{"min", dn_min },
{"quantize", dn_quantize },
{"remainder", dn_remainder },
{"remaindernear", dn_remaindernear },
{"rescale", dn_rescale },
{"samequantum", dn_samequantum },
{"mod", dn_mod },
{"iszero", dn_iszero },
{"isnegative", dn_isneg },
{"isnan", dn_isnan },
{"isqnan", dn_isqnan },
{"issnan", dn_issnan },
{"isinfinite", dn_isinf },
{"trim", dn_trim },
{"tostring", dn_string },
{"toengstring", dn_engstring },
{ "__unm", dn_neg },
{ "__add", dn_add },
{ "__sub", dn_sub },
{ "__mul", dn_mul },
{ "__div", dn_div },
{ "__pow", dn_pow },
{ "__mod", dn_mod },
{ "__eq", dn_eq },
{ "__lt", dn_lt },
{ "__le", dn_le },
{ "__tostring", dn_string },
{ NULL, NULL }
};
|
683
684
685
686
687
688
689
690
691
692
693
694
695
696
|
{"max", dn_max },
{"min", dn_min },
{"quantize", dn_quantize },
{"remainder", dn_remainder },
{"remaindernear", dn_remaindernear },
{"rescale", dn_rescale },
{"samequantum", dn_samequantum },
{"iszero", dn_iszero },
{"isnegative", dn_isneg },
{"isnan", dn_isnan },
{"isqnan", dn_isqnan },
{"issnan", dn_issnan },
{"isinfinite", dn_isinf },
|
>
>
|
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
|
{"max", dn_max },
{"min", dn_min },
{"quantize", dn_quantize },
{"remainder", dn_remainder },
{"remaindernear", dn_remaindernear },
{"rescale", dn_rescale },
{"samequantum", dn_samequantum },
{"mod", dn_mod },
{"iszero", dn_iszero },
{"isnegative", dn_isneg },
{"isnan", dn_isnan },
{"isqnan", dn_isqnan },
{"issnan", dn_issnan },
{"isinfinite", dn_isinf },
|