pub trait ResidueParams<const LIMBS: usize>: Copy + Debug + Default + Eq + Send + Sync + 'static {
    const LIMBS: usize;
    const MODULUS: Uint<LIMBS>;
    const R: Uint<LIMBS>;
    const R2: Uint<LIMBS>;
    const R3: Uint<LIMBS>;
    const MOD_NEG_INV: Limb;
}
Expand description

The parameters to efficiently go to and from the Montgomery form for a given odd modulus. An easy way to generate these parameters is using the impl_modulus! macro. These parameters are constant, so they cannot be set at runtime.

Unfortunately, LIMBS must be generic for now until const generics are stabilized.

Required Associated Constants§

const LIMBS: usize

Number of limbs required to encode a residue

const MODULUS: Uint<LIMBS>

The constant modulus

const R: Uint<LIMBS>

Parameter used in Montgomery reduction

const R2: Uint<LIMBS>

R^2, used to move into Montgomery form

const R3: Uint<LIMBS>

R^3, used to perform a multiplicative inverse

const MOD_NEG_INV: Limb

The lowest limbs of -(MODULUS^-1) mod R

Implementors§