t_bigints_mod.nim
1 # From issue #241 2 3 import 4 ../../constantine/math/[ 5 arithmetic, 6 io/io_bigints], 7 ../../constantine/math_arbitrary_precision/arithmetic/limbs_divmod_vartime, 8 ../../constantine/platforms/abstractions 9 10 let a = BigInt[64].fromUint(0xa0e5cb56a1c08396'u64) 11 let M = BigInt[64].fromUint(0xae57180eceb0206f'u64) 12 13 var r, r2: BigInt[64] 14 15 r.reduce(a, M) 16 doAssert r2.limbs.reduce_vartime(a.limbs, M.limbs) 17 18 let rBase = cast[BaseType](0xa0e5cb56a1c08396'u64) mod cast[BaseType](0xae57180eceb0206f'u64) 19 # echo r.toHex() 20 21 doAssert rBase == a.limbs[0].BaseType 22 doAssert bool(a == r) 23 echo "SUCCESS: t_bigints_mod.nim"