@@ -10,7 +10,7 @@ local function test(bits, wordbits)
10
10
local bint = require ' bint' (bits , wordbits )
11
11
local luabits = luainteger_bitsize ()
12
12
13
- local function assert_eq (a , b )
13
+ local function assert_eq (a , b )
14
14
if a ~= b then -- luacov:disable
15
15
local msg = string.format (
16
16
" assertion failed:\n expected '%s' of type '%s',\n but got '%s' of type '%s'" ,
@@ -19,6 +19,10 @@ local function test(bits, wordbits)
19
19
end -- luacov:enable
20
20
end
21
21
22
+ local function assert_eqf (a , b )
23
+ assert (bint .abs (a - b ) <= 1e-6 , ' assertion failed' )
24
+ end
25
+
22
26
do -- utils
23
27
assert (bint (- 2 ):iszero () == false )
24
28
assert (bint (- 1 ):iszero () == false )
@@ -623,6 +627,31 @@ local function test(bits, wordbits)
623
627
test_ops (0xc19076 , 0x31ffd4 )
624
628
end
625
629
630
+ do -- tdivmod
631
+ assert_eq (bint .tdiv ( 7 , 3 ):tointeger (), 2 )
632
+ assert_eq (bint .tdiv (- 7 , 3 ):tointeger (), - 2 )
633
+ assert_eq (bint .tdiv ( 7 , - 3 ):tointeger (), - 2 )
634
+ assert_eq (bint .tdiv (- 7 , - 3 ):tointeger (), 2 )
635
+ assert_eq (bint .tdiv ( 6 , 3 ):tointeger (), 2 )
636
+ assert_eq (bint .tdiv (- 6 , 3 ):tointeger (), - 2 )
637
+ assert_eq (bint .tdiv ( 6 , - 3 ):tointeger (), - 2 )
638
+ assert_eq (bint .tdiv (- 6 , - 3 ):tointeger (), 2 )
639
+
640
+ assert_eq (bint .tmod ( 7 , 3 ):tointeger (), 1 )
641
+ assert_eq (bint .tmod (- 7 , 3 ):tointeger (), - 1 )
642
+ assert_eq (bint .tmod ( 7 , - 3 ):tointeger (), 1 )
643
+ assert_eq (bint .tmod (- 7 , - 3 ):tointeger (), - 1 )
644
+ assert_eq (bint .tmod ( 6 , 3 ):tointeger (), 0 )
645
+ assert_eq (bint .tmod (- 6 , 3 ):tointeger (), 0 )
646
+ assert_eq (bint .tmod ( 6 , - 3 ):tointeger (), 0 )
647
+ assert_eq (bint .tmod (- 6 , - 3 ):tointeger (), 0 )
648
+
649
+ assert_eqf (bint .tdiv (7.5 , 2.2 ), 3.0 ) assert_eqf (bint .tmod (7.5 , 2.2 ), 0.9 )
650
+ assert_eqf (bint .tdiv (- 7.5 , 2.2 ), - 3.0 ) assert_eqf (bint .tmod (- 7.5 , 2.2 ), - 0.9 )
651
+ assert_eqf (bint .tdiv (7.5 , - 2.2 ), - 3.0 ) assert_eqf (bint .tmod (7.5 , - 2.2 ), 0.9 )
652
+ assert_eqf (bint .tdiv (- 7.5 , - 2.2 ), 3.0 ) assert_eqf (bint .tmod (- 7.5 , - 2.2 ), - 0.9 )
653
+ end
654
+
626
655
do -- upowmod
627
656
assert_eq (bint .upowmod (65 , 17 , 3233 ):tointeger (), 2790 )
628
657
assert_eq (bint .upowmod (2790 , 413 , 3233 ):tointeger (), 65 )
0 commit comments