pub struct Mersenne31 { /* private fields */ }Expand description
The prime field F_p where p = 2^31 - 1.
Implementations§
Source§impl Mersenne31
impl Mersenne31
Sourcepub const EXT_TWO_ADIC_GENERATORS: [[Self; 2]; 33]
pub const EXT_TWO_ADIC_GENERATORS: [[Self; 2]; 33]
Precomputed table of generators for two-adic subgroups of the degree two extension field over Mersenne31.
The i’th element is a generator of the subgroup of order 2^i.
Sourcepub const fn new_checked(value: u32) -> Option<Self>
pub const fn new_checked(value: u32) -> Option<Self>
Convert a u32 element into a Mersenne31 element.
§Panics
This will panic if the element does not lie in the range: [0, 2^31 - 1].
Sourcepub const fn new_array<const N: usize>(input: [u32; N]) -> [Self; N]
pub const fn new_array<const N: usize>(input: [u32; N]) -> [Self; N]
Convert a constant u32 array into a constant array of field elements.
This allows inputs to be > 2^31, and just reduces them mod P.
This means that this will be slower than array.map(Mersenne31::new_checked) but
has the advantage of being able to be used in const environments.
Trait Implementations§
Source§impl Add for Mersenne31
impl Add for Mersenne31
Source§impl<T: Into<Self>> AddAssign<T> for Mersenne31
impl<T: Into<Self>> AddAssign<T> for Mersenne31
Source§fn add_assign(&mut self, rhs: T)
fn add_assign(&mut self, rhs: T)
+= operation. Read moreSource§impl BinomiallyExtendable<3> for Mersenne31
impl BinomiallyExtendable<3> for Mersenne31
Source§impl BinomiallyExtendableAlgebra<Mersenne31, 3> for Mersenne31
impl BinomiallyExtendableAlgebra<Mersenne31, 3> for Mersenne31
Source§fn binomial_mul(a: &[Self; D], b: &[Self; D], res: &mut [Self; D], w: F)
fn binomial_mul(a: &[Self; D], b: &[Self; D], res: &mut [Self; D], w: F)
A<X> / (X^D - W). Read moreSource§fn binomial_add(a: &[Self; D], b: &[Self; D]) -> [Self; D]
fn binomial_add(a: &[Self; D], b: &[Self; D]) -> [Self; D]
A<X> / (X^D - W). Read moreSource§fn binomial_sub(a: &[Self; D], b: &[Self; D]) -> [Self; D]
fn binomial_sub(a: &[Self; D], b: &[Self; D]) -> [Self; D]
A<X> / (X^D - W). Read morefn binomial_base_mul(lhs: [Self; D], rhs: Self) -> [Self; D]
Source§impl Clone for Mersenne31
impl Clone for Mersenne31
Source§fn clone(&self) -> Mersenne31
fn clone(&self) -> Mersenne31
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl ComplexExtendable for Mersenne31
impl ComplexExtendable for Mersenne31
Source§const CIRCLE_TWO_ADICITY: usize = 31usize
const CIRCLE_TWO_ADICITY: usize = 31usize
p+1, the order of the circle group.const COMPLEX_GENERATOR: Complex<Self>
fn circle_two_adic_generator(bits: usize) -> Complex<Self>
Source§impl Debug for Mersenne31
impl Debug for Mersenne31
Source§impl Default for Mersenne31
impl Default for Mersenne31
Source§fn default() -> Mersenne31
fn default() -> Mersenne31
Source§impl<'a> Deserialize<'a> for Mersenne31
impl<'a> Deserialize<'a> for Mersenne31
Source§fn deserialize<D: Deserializer<'a>>(d: D) -> Result<Self, D::Error>
fn deserialize<D: Deserializer<'a>>(d: D) -> Result<Self, D::Error>
Source§impl Display for Mersenne31
impl Display for Mersenne31
Source§impl Distribution<Mersenne31> for StandardUniform
impl Distribution<Mersenne31> for StandardUniform
Source§impl Div for Mersenne31
impl Div for Mersenne31
Source§type Output = Mersenne31
type Output = Mersenne31
/ operator.Source§fn div(self, rhs: Mersenne31) -> Self
fn div(self, rhs: Mersenne31) -> Self
/ operation. Read moreSource§impl DivAssign for Mersenne31
impl DivAssign for Mersenne31
Source§fn div_assign(&mut self, rhs: Mersenne31)
fn div_assign(&mut self, rhs: Mersenne31)
/= operation. Read moreSource§impl<const WIDTH: usize> ExternalLayer<Mersenne31, WIDTH, MERSENNE31_S_BOX_DEGREE> for Poseidon2ExternalLayerMersenne31<WIDTH>
impl<const WIDTH: usize> ExternalLayer<Mersenne31, WIDTH, MERSENNE31_S_BOX_DEGREE> for Poseidon2ExternalLayerMersenne31<WIDTH>
Source§fn permute_state_initial(&self, state: &mut [Mersenne31; WIDTH])
fn permute_state_initial(&self, state: &mut [Mersenne31; WIDTH])
Perform the initial external layers of the Poseidon2 permutation on the given state.
Source§fn permute_state_terminal(&self, state: &mut [Mersenne31; WIDTH])
fn permute_state_terminal(&self, state: &mut [Mersenne31; WIDTH])
Perform the terminal external layers of the Poseidon2 permutation on the given state.
Source§impl<const WIDTH: usize> ExternalLayerConstructor<Mersenne31, WIDTH> for Poseidon2ExternalLayerMersenne31<WIDTH>
impl<const WIDTH: usize> ExternalLayerConstructor<Mersenne31, WIDTH> for Poseidon2ExternalLayerMersenne31<WIDTH>
Source§fn new_from_constants(
external_constants: ExternalLayerConstants<Mersenne31, WIDTH>,
) -> Self
fn new_from_constants( external_constants: ExternalLayerConstants<Mersenne31, WIDTH>, ) -> Self
Source§impl Field for Mersenne31
impl Field for Mersenne31
type Packing = Mersenne31
Source§fn is_zero(&self) -> bool
fn is_zero(&self) -> bool
Source§fn try_inverse(&self) -> Option<Self>
fn try_inverse(&self) -> Option<Self>
Source§fn is_one(&self) -> bool
fn is_one(&self) -> bool
Source§fn add_slices(slice_1: &mut [Self], slice_2: &[Self])
fn add_slices(slice_1: &mut [Self], slice_2: &[Self])
Source§impl HasComplexBinomialExtension<2> for Mersenne31
impl HasComplexBinomialExtension<2> for Mersenne31
Source§impl HasComplexBinomialExtension<3> for Mersenne31
impl HasComplexBinomialExtension<3> for Mersenne31
Source§impl HasTwoAdicBinomialExtension<2> for Mersenne31
impl HasTwoAdicBinomialExtension<2> for Mersenne31
Source§impl HasTwoAdicComplexBinomialExtension<2> for Mersenne31
impl HasTwoAdicComplexBinomialExtension<2> for Mersenne31
const COMPLEX_EXT_TWO_ADICITY: usize = 33usize
fn complex_ext_two_adic_generator(bits: usize) -> [Complex<Self>; 2]
Source§impl HasTwoAdicComplexBinomialExtension<3> for Mersenne31
impl HasTwoAdicComplexBinomialExtension<3> for Mersenne31
const COMPLEX_EXT_TWO_ADICITY: usize = 32usize
fn complex_ext_two_adic_generator(bits: usize) -> [Complex<Self>; 3]
Source§impl Hash for Mersenne31
impl Hash for Mersenne31
Source§impl InjectiveMonomial<5> for Mersenne31
impl InjectiveMonomial<5> for Mersenne31
Source§fn injective_exp_n(&self) -> Self
fn injective_exp_n(&self) -> Self
x -> x^n for a given n > 1 such that this
map is injective.Source§impl InternalLayer<Mersenne31, 16, MERSENNE31_S_BOX_DEGREE> for Poseidon2InternalLayerMersenne31
impl InternalLayer<Mersenne31, 16, MERSENNE31_S_BOX_DEGREE> for Poseidon2InternalLayerMersenne31
Source§fn permute_state(&self, state: &mut [Mersenne31; 16])
fn permute_state(&self, state: &mut [Mersenne31; 16])
Perform the internal layers of the Poseidon2 permutation on the given state.
Source§impl InternalLayer<Mersenne31, 24, MERSENNE31_S_BOX_DEGREE> for Poseidon2InternalLayerMersenne31
impl InternalLayer<Mersenne31, 24, MERSENNE31_S_BOX_DEGREE> for Poseidon2InternalLayerMersenne31
Source§fn permute_state(&self, state: &mut [Mersenne31; 24])
fn permute_state(&self, state: &mut [Mersenne31; 24])
Perform the internal layers of the Poseidon2 permutation on the given state.
Source§impl InternalLayerConstructor<Mersenne31> for Poseidon2InternalLayerMersenne31
impl InternalLayerConstructor<Mersenne31> for Poseidon2InternalLayerMersenne31
Source§fn new_from_constants(internal_constants: Vec<Mersenne31>) -> Self
fn new_from_constants(internal_constants: Vec<Mersenne31>) -> Self
Source§impl Mul for Mersenne31
impl Mul for Mersenne31
Source§impl<T: Into<Self>> MulAssign<T> for Mersenne31
impl<T: Into<Self>> MulAssign<T> for Mersenne31
Source§fn mul_assign(&mut self, rhs: T)
fn mul_assign(&mut self, rhs: T)
*= operation. Read moreSource§impl Neg for Mersenne31
impl Neg for Mersenne31
Source§impl Ord for Mersenne31
impl Ord for Mersenne31
Source§impl PartialEq for Mersenne31
impl PartialEq for Mersenne31
Source§impl PartialOrd for Mersenne31
impl PartialOrd for Mersenne31
Source§impl PermutationMonomial<5> for Mersenne31
impl PermutationMonomial<5> for Mersenne31
Source§fn injective_exp_root_n(&self) -> Self
fn injective_exp_root_n(&self) -> Self
In the field Mersenne31, a^{1/5} is equal to a^{1717986917}.
This follows from the calculation 5 * 1717986917 = 4*(2^31 - 2) + 1 = 1 mod p - 1.
Source§impl PrimeCharacteristicRing for Mersenne31
impl PrimeCharacteristicRing for Mersenne31
Source§type PrimeSubfield = Mersenne31
type PrimeSubfield = Mersenne31
ℤ/p where the characteristic of this ring is p.Source§fn from_prime_subfield(f: Self::PrimeSubfield) -> Self
fn from_prime_subfield(f: Self::PrimeSubfield) -> Self
Source§fn mul_2exp_u64(&self, exp: u64) -> Self
fn mul_2exp_u64(&self, exp: u64) -> Self
mul_2exp_u64(a, exp) = a * 2^{exp}. Read moreSource§fn div_2exp_u64(&self, exp: u64) -> Self
fn div_2exp_u64(&self, exp: u64) -> Self
div_2exp_u64(a, exp) = a/2^exp Read moreSource§fn sum_array<const N: usize>(input: &[Self]) -> Self
fn sum_array<const N: usize>(input: &[Self]) -> Self
Source§fn zero_vec(len: usize) -> Vec<Self>
fn zero_vec(len: usize) -> Vec<Self>
len. Many operating systems zero pages
before assigning them to a userspace process. In that case, our process should not need to
write zeros, which would be redundant. However, the compiler may not always recognize this. Read moreSource§fn from_usize(int: usize) -> Self
fn from_usize(int: usize) -> Self
Source§fn from_isize(int: isize) -> Self
fn from_isize(int: isize) -> Self
Source§fn xor(&self, y: &Self) -> Self
fn xor(&self, y: &Self) -> Self
xor. Read moreSource§fn xor3(&self, y: &Self, z: &Self) -> Self
fn xor3(&self, y: &Self, z: &Self) -> Self
xor. Read moreSource§fn bool_check(&self) -> Self
fn bool_check(&self) -> Self
x * (1 - x). Read moreSource§fn exp_const_u64<const POWER: u64>(&self) -> Self
fn exp_const_u64<const POWER: u64>(&self) -> Self
Source§fn exp_power_of_2(&self, power_log: usize) -> Self
fn exp_power_of_2(&self, power_log: usize) -> Self
exp_power_of_2(a, power_log) = a^{2^power_log}. Read moreSource§fn powers(&self) -> Powers<Self>
fn powers(&self) -> Powers<Self>
self: self^0, self^1, self^2, ....Source§fn shifted_powers(&self, start: Self) -> Powers<Self>
fn shifted_powers(&self, start: Self) -> Powers<Self>
self shifted by start: start, start*self^1, start*self^2, ....Source§impl PrimeField for Mersenne31
impl PrimeField for Mersenne31
Source§fn as_canonical_biguint(&self) -> BigUint
fn as_canonical_biguint(&self) -> BigUint
value in canonical form
which lies in the range 0 <= x < self.order().Source§impl PrimeField32 for Mersenne31
impl PrimeField32 for Mersenne31
const ORDER_U32: u32 = 2_147_483_647u32
Source§fn as_canonical_u32(&self) -> u32
fn as_canonical_u32(&self) -> u32
value in canonical form
which lies in the range 0 <= x < ORDER_U64.Source§fn to_unique_u32(&self) -> u32
fn to_unique_u32(&self) -> u32
u32 such that any two field elements
are converted to the same u32 if and only if they represent the same value. Read moreSource§impl PrimeField64 for Mersenne31
impl PrimeField64 for Mersenne31
const ORDER_U64: u64 = 2_147_483_647u64
Source§fn as_canonical_u64(&self) -> u64
fn as_canonical_u64(&self) -> u64
value in canonical form
which lies in the range 0 <= x < ORDER_U64.Source§fn to_unique_u64(&self) -> u64
fn to_unique_u64(&self) -> u64
u64 such that any two field elements
are converted to the same u64 if and only if they represent the same value. Read moreSource§impl Product for Mersenne31
impl Product for Mersenne31
Source§impl QuotientMap<i128> for Mersenne31
impl QuotientMap<i128> for Mersenne31
Source§fn from_int(int: i128) -> Mersenne31
fn from_int(int: i128) -> Mersenne31
Convert a given i128 integer into an element of the Mersenne31 field.
This checks the sign and then makes use of the equivalent method for unsigned integers. This should be avoided in performance critical locations.
Source§fn from_canonical_checked(int: i128) -> Option<Mersenne31>
fn from_canonical_checked(int: i128) -> Option<Mersenne31>
Convert a given u128 integer into an element of the Mersenne31 field.
Returns None if the input does not lie in the range:[-2^30, 2^30].
Source§unsafe fn from_canonical_unchecked(int: i128) -> Mersenne31
unsafe fn from_canonical_unchecked(int: i128) -> Mersenne31
Convert a given u128 integer into an element of the Mersenne31 field.
§Safety
The input must lie in the range:[1 - 2^31, 2^31 - 1].
Source§impl QuotientMap<i16> for Mersenne31
impl QuotientMap<i16> for Mersenne31
Source§fn from_int(int: i16) -> Self
fn from_int(int: i16) -> Self
Convert a given i16 integer into an element of the Mersenne31 field.
Due to the integer type, the input value is always canonical.
Source§fn from_canonical_checked(int: i16) -> Option<Self>
fn from_canonical_checked(int: i16) -> Option<Self>
Convert a given i16 integer into an element of the Mersenne31 field.
Due to the integer type, the input value is always canonical.
Source§unsafe fn from_canonical_unchecked(int: i16) -> Self
unsafe fn from_canonical_unchecked(int: i16) -> Self
Convert a given i16 integer into an element of the Mersenne31 field.
Due to the integer type, the input value is always canonical.
Source§impl QuotientMap<i32> for Mersenne31
impl QuotientMap<i32> for Mersenne31
Source§fn from_int(int: i32) -> Self
fn from_int(int: i32) -> Self
Convert a given i32 integer into an element of the Mersenne31 field.
Source§fn from_canonical_checked(int: i32) -> Option<Self>
fn from_canonical_checked(int: i32) -> Option<Self>
Convert a given i32 integer into an element of the Mersenne31 field.
Returns none if the input does not lie in the range (-2^30, 2^30).
Source§unsafe fn from_canonical_unchecked(int: i32) -> Self
unsafe fn from_canonical_unchecked(int: i32) -> Self
Convert a given i32 integer into an element of the Mersenne31 field.
§Safety
The input must lie in the range: [1 - 2^31, 2^31 - 1].
Source§impl QuotientMap<i64> for Mersenne31
impl QuotientMap<i64> for Mersenne31
Source§fn from_int(int: i64) -> Mersenne31
fn from_int(int: i64) -> Mersenne31
Convert a given i64 integer into an element of the Mersenne31 field.
This checks the sign and then makes use of the equivalent method for unsigned integers. This should be avoided in performance critical locations.
Source§fn from_canonical_checked(int: i64) -> Option<Mersenne31>
fn from_canonical_checked(int: i64) -> Option<Mersenne31>
Convert a given u64 integer into an element of the Mersenne31 field.
Returns None if the input does not lie in the range:[-2^30, 2^30].
Source§unsafe fn from_canonical_unchecked(int: i64) -> Mersenne31
unsafe fn from_canonical_unchecked(int: i64) -> Mersenne31
Convert a given u64 integer into an element of the Mersenne31 field.
§Safety
The input must lie in the range:[1 - 2^31, 2^31 - 1].
Source§impl QuotientMap<i8> for Mersenne31
impl QuotientMap<i8> for Mersenne31
Source§fn from_int(int: i8) -> Self
fn from_int(int: i8) -> Self
Convert a given i8 integer into an element of the Mersenne31 field.
Due to the integer type, the input value is always canonical.
Source§fn from_canonical_checked(int: i8) -> Option<Self>
fn from_canonical_checked(int: i8) -> Option<Self>
Convert a given i8 integer into an element of the Mersenne31 field.
Due to the integer type, the input value is always canonical.
Source§unsafe fn from_canonical_unchecked(int: i8) -> Self
unsafe fn from_canonical_unchecked(int: i8) -> Self
Convert a given i8 integer into an element of the Mersenne31 field.
Due to the integer type, the input value is always canonical.
Source§impl QuotientMap<u128> for Mersenne31
impl QuotientMap<u128> for Mersenne31
Source§fn from_int(int: u128) -> Mersenne31
fn from_int(int: u128) -> Mersenne31
Convert a given u128 integer into an element of the Mersenne31 field.
Uses a modular reduction to reduce to canonical form. This should be avoided in performance critical locations.
Source§fn from_canonical_checked(int: u128) -> Option<Mersenne31>
fn from_canonical_checked(int: u128) -> Option<Mersenne31>
Convert a given u128 integer into an element of the Mersenne31 field.
Returns None if the input does not lie in the range:[0, 2^31 - 2].
Source§unsafe fn from_canonical_unchecked(int: u128) -> Mersenne31
unsafe fn from_canonical_unchecked(int: u128) -> Mersenne31
Convert a given u128 integer into an element of the Mersenne31 field.
§Safety
The input must lie in the range:[0, 2^31 - 1].
Source§impl QuotientMap<u16> for Mersenne31
impl QuotientMap<u16> for Mersenne31
Source§fn from_int(int: u16) -> Self
fn from_int(int: u16) -> Self
Convert a given u16 integer into an element of the Mersenne31 field.
Due to the integer type, the input value is always canonical.
Source§fn from_canonical_checked(int: u16) -> Option<Self>
fn from_canonical_checked(int: u16) -> Option<Self>
Convert a given u16 integer into an element of the Mersenne31 field.
Due to the integer type, the input value is always canonical.
Source§unsafe fn from_canonical_unchecked(int: u16) -> Self
unsafe fn from_canonical_unchecked(int: u16) -> Self
Convert a given u16 integer into an element of the Mersenne31 field.
Due to the integer type, the input value is always canonical.
Source§impl QuotientMap<u32> for Mersenne31
impl QuotientMap<u32> for Mersenne31
Source§fn from_int(int: u32) -> Self
fn from_int(int: u32) -> Self
Convert a given u32 integer into an element of the Mersenne31 field.
Source§fn from_canonical_checked(int: u32) -> Option<Self>
fn from_canonical_checked(int: u32) -> Option<Self>
Convert a given u32 integer into an element of the Mersenne31 field.
Returns none if the input does not lie in the range [0, 2^31 - 1].
Source§unsafe fn from_canonical_unchecked(int: u32) -> Self
unsafe fn from_canonical_unchecked(int: u32) -> Self
Convert a given u32 integer into an element of the Mersenne31 field.
§Safety
The input must lie in the range: [0, 2^31 - 1].
Source§impl QuotientMap<u64> for Mersenne31
impl QuotientMap<u64> for Mersenne31
Source§fn from_int(int: u64) -> Mersenne31
fn from_int(int: u64) -> Mersenne31
Convert a given u64 integer into an element of the Mersenne31 field.
Uses a modular reduction to reduce to canonical form. This should be avoided in performance critical locations.
Source§fn from_canonical_checked(int: u64) -> Option<Mersenne31>
fn from_canonical_checked(int: u64) -> Option<Mersenne31>
Convert a given u64 integer into an element of the Mersenne31 field.
Returns None if the input does not lie in the range:[0, 2^31 - 2].
Source§unsafe fn from_canonical_unchecked(int: u64) -> Mersenne31
unsafe fn from_canonical_unchecked(int: u64) -> Mersenne31
Convert a given u64 integer into an element of the Mersenne31 field.
§Safety
The input must lie in the range:[0, 2^31 - 1].
Source§impl QuotientMap<u8> for Mersenne31
impl QuotientMap<u8> for Mersenne31
Source§fn from_int(int: u8) -> Self
fn from_int(int: u8) -> Self
Convert a given u8 integer into an element of the Mersenne31 field.
Due to the integer type, the input value is always canonical.
Source§fn from_canonical_checked(int: u8) -> Option<Self>
fn from_canonical_checked(int: u8) -> Option<Self>
Convert a given u8 integer into an element of the Mersenne31 field.
Due to the integer type, the input value is always canonical.
Source§unsafe fn from_canonical_unchecked(int: u8) -> Self
unsafe fn from_canonical_unchecked(int: u8) -> Self
Convert a given u8 integer into an element of the Mersenne31 field.
Due to the integer type, the input value is always canonical.
Source§impl RawDataSerializable for Mersenne31
impl RawDataSerializable for Mersenne31
Source§const NUM_BYTES: usize = 4usize
const NUM_BYTES: usize = 4usize
Source§fn into_bytes(self) -> [u8; 4]
fn into_bytes(self) -> [u8; 4]
Source§fn into_u32_stream(
input: impl IntoIterator<Item = Self>,
) -> impl IntoIterator<Item = u32>
fn into_u32_stream( input: impl IntoIterator<Item = Self>, ) -> impl IntoIterator<Item = u32>
Source§fn into_u64_stream(
input: impl IntoIterator<Item = Self>,
) -> impl IntoIterator<Item = u64>
fn into_u64_stream( input: impl IntoIterator<Item = Self>, ) -> impl IntoIterator<Item = u64>
Source§fn into_parallel_byte_streams<const N: usize>(
input: impl IntoIterator<Item = [Self; N]>,
) -> impl IntoIterator<Item = [u8; N]>
fn into_parallel_byte_streams<const N: usize>( input: impl IntoIterator<Item = [Self; N]>, ) -> impl IntoIterator<Item = [u8; N]>
Source§fn into_parallel_u32_streams<const N: usize>(
input: impl IntoIterator<Item = [Self; N]>,
) -> impl IntoIterator<Item = [u32; N]>
fn into_parallel_u32_streams<const N: usize>( input: impl IntoIterator<Item = [Self; N]>, ) -> impl IntoIterator<Item = [u32; N]>
Source§fn into_parallel_u64_streams<const N: usize>(
input: impl IntoIterator<Item = [Self; N]>,
) -> impl IntoIterator<Item = [u64; N]>
fn into_parallel_u64_streams<const N: usize>( input: impl IntoIterator<Item = [Self; N]>, ) -> impl IntoIterator<Item = [u64; N]>
Source§fn into_byte_stream(
input: impl IntoIterator<Item = Self>,
) -> impl IntoIterator<Item = u8>
fn into_byte_stream( input: impl IntoIterator<Item = Self>, ) -> impl IntoIterator<Item = u8>
Source§impl Serialize for Mersenne31
impl Serialize for Mersenne31
Source§impl Sub for Mersenne31
impl Sub for Mersenne31
Source§impl<T: Into<Self>> SubAssign<T> for Mersenne31
impl<T: Into<Self>> SubAssign<T> for Mersenne31
Source§fn sub_assign(&mut self, rhs: T)
fn sub_assign(&mut self, rhs: T)
-= operation. Read moreSource§impl Sum for Mersenne31
impl Sum for Mersenne31
impl Copy for Mersenne31
impl Eq for Mersenne31
impl MdsPermutation<Mersenne31, 12> for MdsMatrixMersenne31
impl MdsPermutation<Mersenne31, 16> for MdsMatrixMersenne31
impl MdsPermutation<Mersenne31, 32> for MdsMatrixMersenne31
impl MdsPermutation<Mersenne31, 64> for MdsMatrixMersenne31
impl MdsPermutation<Mersenne31, 8> for MdsMatrixMersenne31
impl Packable for Mersenne31
Auto Trait Implementations§
impl Freeze for Mersenne31
impl RefUnwindSafe for Mersenne31
impl Send for Mersenne31
impl Sync for Mersenne31
impl Unpin for Mersenne31
impl UnwindSafe for Mersenne31
Blanket Implementations§
Source§impl<F> BasedVectorSpace<F> for Fwhere
F: PrimeCharacteristicRing,
impl<F> BasedVectorSpace<F> for Fwhere
F: PrimeCharacteristicRing,
Source§const DIMENSION: usize = 1usize
const DIMENSION: usize = 1usize
Source§fn as_basis_coefficients_slice(&self) -> &[F]
fn as_basis_coefficients_slice(&self) -> &[F]
A and uses this to
map an element of A to a slice of DIMENSION F elements. Read moreSource§fn from_basis_coefficients_fn<Fn>(f: Fn) -> F
fn from_basis_coefficients_fn<Fn>(f: Fn) -> F
A and uses this to
map DIMENSION F elements to an element of A. Similar
to core:array::from_fn, the DIMENSION F elements are
given by Fn(0), ..., Fn(DIMENSION - 1) called in that order. Read moreSource§fn from_basis_coefficients_iter<I>(iter: I) -> Option<F>where
I: ExactSizeIterator<Item = F>,
fn from_basis_coefficients_iter<I>(iter: I) -> Option<F>where
I: ExactSizeIterator<Item = F>,
A and uses this to
map DIMENSION F elements to an element of A. Read moreSource§fn flatten_to_base(vec: Vec<F>) -> Vec<F>
fn flatten_to_base(vec: Vec<F>) -> Vec<F>
Source§fn reconstitute_from_base(vec: Vec<F>) -> Vec<F>
fn reconstitute_from_base(vec: Vec<F>) -> Vec<F>
Source§impl<F> BinomiallyExtendable<2> for Fwhere
F: ComplexExtendable,
impl<F> BinomiallyExtendable<2> for Fwhere
F: ComplexExtendable,
Source§impl<F> BinomiallyExtendableAlgebra<F, 2> for Fwhere
F: ComplexExtendable,
impl<F> BinomiallyExtendableAlgebra<F, 2> for Fwhere
F: ComplexExtendable,
Source§fn binomial_mul(a: &[Self; D], b: &[Self; D], res: &mut [Self; D], w: F)
fn binomial_mul(a: &[Self; D], b: &[Self; D], res: &mut [Self; D], w: F)
A<X> / (X^D - W). Read moreSource§fn binomial_add(a: &[Self; D], b: &[Self; D]) -> [Self; D]
fn binomial_add(a: &[Self; D], b: &[Self; D]) -> [Self; D]
A<X> / (X^D - W). Read moreSource§fn binomial_sub(a: &[Self; D], b: &[Self; D]) -> [Self; D]
fn binomial_sub(a: &[Self; D], b: &[Self; D]) -> [Self; D]
A<X> / (X^D - W). Read morefn binomial_base_mul(lhs: [Self; D], rhs: Self) -> [Self; D]
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<F> ExtensionField<F> for Fwhere
F: Field,
impl<F> ExtensionField<F> for Fwhere
F: Field,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<F> PackedField for Fwhere
F: Field,
impl<F> PackedField for Fwhere
F: Field,
type Scalar = F
Source§fn packed_powers(base: Self::Scalar) -> Powers<Self>
fn packed_powers(base: Self::Scalar) -> Powers<Self>
base packed into packed field elements. Read moreSource§impl<F> PackedFieldPow2 for Fwhere
F: Field,
impl<F> PackedFieldPow2 for Fwhere
F: Field,
Source§impl<T> PackedValue for Twhere
T: Packable,
impl<T> PackedValue for Twhere
T: Packable,
Source§fn from_slice(slice: &[<T as PackedValue>::Value]) -> &T
fn from_slice(slice: &[<T as PackedValue>::Value]) -> &T
Source§fn from_slice_mut(slice: &mut [<T as PackedValue>::Value]) -> &mut T
fn from_slice_mut(slice: &mut [<T as PackedValue>::Value]) -> &mut T
Source§fn from_fn<Fn>(f: Fn) -> T
fn from_fn<Fn>(f: Fn) -> T
Source§fn as_slice(&self) -> &[<T as PackedValue>::Value]
fn as_slice(&self) -> &[<T as PackedValue>::Value]
Source§fn as_slice_mut(&mut self) -> &mut [<T as PackedValue>::Value]
fn as_slice_mut(&mut self) -> &mut [<T as PackedValue>::Value]
Source§fn pack_slice(buf: &[Self::Value]) -> &[Self]
fn pack_slice(buf: &[Self::Value]) -> &[Self]
Source§fn pack_slice_with_suffix(buf: &[Self::Value]) -> (&[Self], &[Self::Value])
fn pack_slice_with_suffix(buf: &[Self::Value]) -> (&[Self], &[Self::Value])
Source§fn pack_slice_mut(buf: &mut [Self::Value]) -> &mut [Self]
fn pack_slice_mut(buf: &mut [Self::Value]) -> &mut [Self]
Source§fn pack_maybe_uninit_slice_mut(
buf: &mut [MaybeUninit<Self::Value>],
) -> &mut [MaybeUninit<Self>]
fn pack_maybe_uninit_slice_mut( buf: &mut [MaybeUninit<Self::Value>], ) -> &mut [MaybeUninit<Self>]
Source§fn pack_slice_with_suffix_mut(
buf: &mut [Self::Value],
) -> (&mut [Self], &mut [Self::Value])
fn pack_slice_with_suffix_mut( buf: &mut [Self::Value], ) -> (&mut [Self], &mut [Self::Value])
Source§fn pack_maybe_uninit_slice_with_suffix_mut(
buf: &mut [MaybeUninit<Self::Value>],
) -> (&mut [MaybeUninit<Self>], &mut [MaybeUninit<Self::Value>])
fn pack_maybe_uninit_slice_with_suffix_mut( buf: &mut [MaybeUninit<Self::Value>], ) -> (&mut [MaybeUninit<Self>], &mut [MaybeUninit<Self::Value>])
Source§fn unpack_slice(buf: &[Self]) -> &[Self::Value]
fn unpack_slice(buf: &[Self]) -> &[Self::Value]
Source§impl<F> QuotientMap<isize> for Fwhere
F: QuotientMap<i8> + QuotientMap<i16> + QuotientMap<i32> + QuotientMap<i64> + QuotientMap<i128>,
impl<F> QuotientMap<isize> for Fwhere
F: QuotientMap<i8> + QuotientMap<i16> + QuotientMap<i32> + QuotientMap<i64> + QuotientMap<i128>,
Source§fn from_int(int: isize) -> F
fn from_int(int: isize) -> F
We use the from_int method of the primitive integer type identical to isize on this machine
Source§fn from_canonical_checked(int: isize) -> Option<F>
fn from_canonical_checked(int: isize) -> Option<F>
We use the from_canonical_checked method of the primitive integer type identical to isize on this machine
Source§unsafe fn from_canonical_unchecked(int: isize) -> F
unsafe fn from_canonical_unchecked(int: isize) -> F
We use the from_canonical_unchecked method of the primitive integer type identical to isize on this machine
Source§impl<F> QuotientMap<usize> for Fwhere
F: QuotientMap<u8> + QuotientMap<u16> + QuotientMap<u32> + QuotientMap<u64> + QuotientMap<u128>,
impl<F> QuotientMap<usize> for Fwhere
F: QuotientMap<u8> + QuotientMap<u16> + QuotientMap<u32> + QuotientMap<u64> + QuotientMap<u128>,
Source§fn from_int(int: usize) -> F
fn from_int(int: usize) -> F
We use the from_int method of the primitive integer type identical to usize on this machine
Source§fn from_canonical_checked(int: usize) -> Option<F>
fn from_canonical_checked(int: usize) -> Option<F>
We use the from_canonical_checked method of the primitive integer type identical to usize on this machine
Source§unsafe fn from_canonical_unchecked(int: usize) -> F
unsafe fn from_canonical_unchecked(int: usize) -> F
We use the from_canonical_unchecked method of the primitive integer type identical to usize on this machine