Skip to main content

Module bignum

Module bignum 

Source
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
BigUintDivideHint
BigUintModPowHint
ModDivideHint
ModDivide hint implementation.
ModInverseHint
ModInverse hint implementation
ModReduce
Modular reduction verification for BigUint.
PseudoMersenneModReduce
Modular reduction verification for BigUint for pseudo Mersenne moduli.
PseudoMersennePrimeField
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-endian u64 limbs.
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 BigUint using textbook algorithm.