pub struct FrConfig;Trait Implementations§
Source§impl MontConfig<4> for FrConfig
impl MontConfig<4> for FrConfig
Source§fn neg_in_place(a: &mut Fp<MontBackend<FrConfig, 4usize>, 4usize>)
fn neg_in_place(a: &mut Fp<MontBackend<FrConfig, 4usize>, 4usize>)
Sets a = -a.
Source§const GENERATOR: Fp<MontBackend<FrConfig, 4usize>, 4usize>
const GENERATOR: Fp<MontBackend<FrConfig, 4usize>, 4usize>
A multiplicative generator of the field.
Self::GENERATOR is an element having multiplicative order
Self::MODULUS - 1.Source§const TWO_ADIC_ROOT_OF_UNITY: Fp<MontBackend<FrConfig, 4usize>, 4usize>
const TWO_ADIC_ROOT_OF_UNITY: Fp<MontBackend<FrConfig, 4usize>, 4usize>
2^s root of unity computed by GENERATOR^t
Source§fn add_assign(
a: &mut Fp<MontBackend<FrConfig, 4usize>, 4usize>,
b: &Fp<MontBackend<FrConfig, 4usize>, 4usize>,
)
fn add_assign( a: &mut Fp<MontBackend<FrConfig, 4usize>, 4usize>, b: &Fp<MontBackend<FrConfig, 4usize>, 4usize>, )
Sets
a = a + b.Source§fn sub_assign(
a: &mut Fp<MontBackend<FrConfig, 4usize>, 4usize>,
b: &Fp<MontBackend<FrConfig, 4usize>, 4usize>,
)
fn sub_assign( a: &mut Fp<MontBackend<FrConfig, 4usize>, 4usize>, b: &Fp<MontBackend<FrConfig, 4usize>, 4usize>, )
Sets
a = a - b.Source§fn double_in_place(a: &mut Fp<MontBackend<FrConfig, 4usize>, 4usize>)
fn double_in_place(a: &mut Fp<MontBackend<FrConfig, 4usize>, 4usize>)
Sets
a = 2 * a.Source§fn mul_assign(
a: &mut Fp<MontBackend<FrConfig, 4usize>, 4usize>,
b: &Fp<MontBackend<FrConfig, 4usize>, 4usize>,
)
fn mul_assign( a: &mut Fp<MontBackend<FrConfig, 4usize>, 4usize>, b: &Fp<MontBackend<FrConfig, 4usize>, 4usize>, )
This modular multiplication algorithm uses Montgomery
reduction for efficient implementation. It also additionally
uses the “no-carry optimization” outlined
here if
Self::MODULUS has (a) a non-zero MSB, and (b) at least one
zero bit in the rest of the modulus.fn square_in_place(a: &mut Fp<MontBackend<FrConfig, 4usize>, 4usize>)
fn sum_of_products<const M: usize>( a: &[Fp<MontBackend<FrConfig, 4usize>, 4usize>; M], b: &[Fp<MontBackend<FrConfig, 4usize>, 4usize>; M], ) -> Fp<MontBackend<FrConfig, 4usize>, 4usize>
§const R: BigInt<N> = _
const R: BigInt<N> = _
Let
M be the power of 2^64 nearest to Self::MODULUS_BITS. Then
R = M % Self::MODULUS.§const SMALL_SUBGROUP_BASE: Option<u32> = None
const SMALL_SUBGROUP_BASE: Option<u32> = None
An integer
b such that there exists a multiplicative subgroup
of size b^k for some integer k.§const SMALL_SUBGROUP_BASE_ADICITY: Option<u32> = None
const SMALL_SUBGROUP_BASE_ADICITY: Option<u32> = None
The integer
k such that there exists a multiplicative subgroup
of size Self::SMALL_SUBGROUP_BASE^k.§const LARGE_SUBGROUP_ROOT_OF_UNITY: Option<Fp<MontBackend<Self, N>, N>> = None
const LARGE_SUBGROUP_ROOT_OF_UNITY: Option<Fp<MontBackend<Self, N>, N>> = None
GENERATOR^((MODULUS-1) / (2^s *
SMALL_SUBGROUP_BASE^SMALL_SUBGROUP_BASE_ADICITY)).
Used for mixed-radix FFT.
§const SQRT_PRECOMP: Option<SqrtPrecomputation<Fp<MontBackend<Self, N>, N>>> = _
const SQRT_PRECOMP: Option<SqrtPrecomputation<Fp<MontBackend<Self, N>, N>>> = _
Precomputed material for use when computing square roots.
The default is to use the standard Tonelli-Shanks algorithm.
fn inverse( a: &Fp<MontBackend<Self, N>, N>, ) -> Option<Fp<MontBackend<Self, N>, N>>
fn from_bigint(r: BigInt<N>) -> Option<Fp<MontBackend<Self, N>, N>>
fn into_bigint(a: Fp<MontBackend<Self, N>, N>) -> BigInt<N>
Auto Trait Implementations§
impl Freeze for FrConfig
impl RefUnwindSafe for FrConfig
impl Send for FrConfig
impl Sync for FrConfig
impl Unpin for FrConfig
impl UnsafeUnpin for FrConfig
impl UnwindSafe for FrConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more