Expand description
Arbitrary-precision bignum arithmetic for circuits.
This module provides operations on big integers represented as vectors of Wire elements,
where each Wire represents a 64-bit limb. The representation uses little-endian ordering,
meaning the least significant limb is at index 0.
Structs§
- BigUint
- Represents an arbitrarily large unsigned integer using a vector of
Wires - BigUint
Divide Hint - BigUint
ModPow Hint - ModDivide
Hint - ModDivide hint implementation.
- ModInverse
Hint - ModInverse hint implementation
- ModReduce
- Modular reduction verification for BigUint.
- Pseudo
Mersenne ModReduce - Modular reduction verification for BigUint for pseudo Mersenne moduli.
- Pseudo
Mersenne Prime Field - A struct that implements prime field arithmetic over pseudo-Mersenne modulus.
Functions§
- add
- Add two equally-sized
BigUintss with carry propagation. - assert_
eq - Asserts that that two
BigUints are equal. - biguint_
eq - Equality check between equally-sized
BigUints. - biguint_
lt - Less-than comparison between equally-sized
BigUints. - karatsuba_
mul - Multiply two
BigUints with po2 number of limbs using Karatsuba (aka Toom-22). - num_
biguint_ from_ u64_ limbs - Builds a [
num_bigint::BigUint] from little-endianu64limbs. - optimal_
mul - Multiply two arbitrary-sized
BigUints using textbook algorithm. - optimal_
sqr - Square an arbitrary-sized
BigUint. - select
- Conditionally selects between two equal-sized
BigUints. - sub
- Subtracts two equally-sized
BigUintss with carry propagation. - textbook_
mul - Multiply two arbitrary-sized
BigUints using textbook algorithm. - textbook_
square - Square an arbitrary-sized
BigUintusing textbook algorithm.