@@ -10,7 +10,7 @@ local function test(bits, wordbits)
1010 local bint = require ' bint' (bits , wordbits )
1111 local luabits = luainteger_bitsize ()
1212
13- local function assert_eq (a , b )
13+ local function assert_eq (a , b )
1414 if a ~= b then -- luacov:disable
1515 local msg = string.format (
1616 " assertion failed:\n expected '%s' of type '%s',\n but got '%s' of type '%s'" ,
@@ -19,6 +19,10 @@ local function test(bits, wordbits)
1919 end -- luacov:enable
2020 end
2121
22+ local function assert_eqf (a , b )
23+ assert (bint .abs (a - b ) <= 1e-6 , ' assertion failed' )
24+ end
25+
2226 do -- utils
2327 assert (bint (- 2 ):iszero () == false )
2428 assert (bint (- 1 ):iszero () == false )
@@ -623,6 +627,31 @@ local function test(bits, wordbits)
623627 test_ops (0xc19076 , 0x31ffd4 )
624628 end
625629
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+
626655 do -- upowmod
627656 assert_eq (bint .upowmod (65 , 17 , 3233 ):tointeger (), 2790 )
628657 assert_eq (bint .upowmod (2790 , 413 , 3233 ):tointeger (), 65 )
0 commit comments