pub struct FqConfig;Trait Implementations§
Source§impl MontConfig<4> for FqConfig
impl MontConfig<4> for FqConfig
Source§fn neg_in_place(a: &mut Fp<MontBackend<FqConfig, 4usize>, 4usize>)
fn neg_in_place(a: &mut Fp<MontBackend<FqConfig, 4usize>, 4usize>)
Sets a = -a.
Source§const GENERATOR: Fp<MontBackend<FqConfig, 4usize>, 4usize>
const GENERATOR: Fp<MontBackend<FqConfig, 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<FqConfig, 4usize>, 4usize>
const TWO_ADIC_ROOT_OF_UNITY: Fp<MontBackend<FqConfig, 4usize>, 4usize>
2^s root of unity computed by GENERATOR^t
Source§fn add_assign(
a: &mut Fp<MontBackend<FqConfig, 4usize>, 4usize>,
b: &Fp<MontBackend<FqConfig, 4usize>, 4usize>,
)
fn add_assign( a: &mut Fp<MontBackend<FqConfig, 4usize>, 4usize>, b: &Fp<MontBackend<FqConfig, 4usize>, 4usize>, )
Sets
a = a + b.Source§fn sub_assign(
a: &mut Fp<MontBackend<FqConfig, 4usize>, 4usize>,
b: &Fp<MontBackend<FqConfig, 4usize>, 4usize>,
)
fn sub_assign( a: &mut Fp<MontBackend<FqConfig, 4usize>, 4usize>, b: &Fp<MontBackend<FqConfig, 4usize>, 4usize>, )
Sets
a = a - b.Source§fn double_in_place(a: &mut Fp<MontBackend<FqConfig, 4usize>, 4usize>)
fn double_in_place(a: &mut Fp<MontBackend<FqConfig, 4usize>, 4usize>)
Sets
a = 2 * a.Source§fn mul_assign(
a: &mut Fp<MontBackend<FqConfig, 4usize>, 4usize>,
b: &Fp<MontBackend<FqConfig, 4usize>, 4usize>,
)
fn mul_assign( a: &mut Fp<MontBackend<FqConfig, 4usize>, 4usize>, b: &Fp<MontBackend<FqConfig, 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<FqConfig, 4usize>, 4usize>)
fn sum_of_products<const M: usize>( a: &[Fp<MontBackend<FqConfig, 4usize>, 4usize>; M], b: &[Fp<MontBackend<FqConfig, 4usize>, 4usize>; M], ) -> Fp<MontBackend<FqConfig, 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 FqConfig
impl RefUnwindSafe for FqConfig
impl Send for FqConfig
impl Sync for FqConfig
impl Unpin for FqConfig
impl UnsafeUnpin for FqConfig
impl UnwindSafe for FqConfig
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