pub struct PackedExtField<F: Field, PF: PackedField<Scalar = F>, const D: usize, Shape> { /* private fields */ }Expand description
Unified packed extension-field representation (SIMD-lane parallel).
PackedExtField<F, PF, D, Shape> stores D packed coefficients (one per
SIMD lane), representing the WIDTH extension-field elements that fit in
one SIMD register simultaneously.
The three public-facing packed types — PackedBinomialExtensionField,
PackedCubicTrinomialExtensionField, PackedQuinticTrinomialExtensionField
— are type aliases over this struct with their respective Shapes.
Implementations§
Source§impl<F: Field, PF: PackedField<Scalar = F>, const D: usize, Shape> PackedExtField<F, PF, D, Shape>
impl<F: Field, PF: PackedField<Scalar = F>, const D: usize, Shape> PackedExtField<F, PF, D, Shape>
Trait Implementations§
Source§impl<F: Clone + Field, PF: Clone + PackedField<Scalar = F>, const D: usize, Shape: Clone> Clone for PackedExtField<F, PF, D, Shape>
impl<F: Clone + Field, PF: Clone + PackedField<Scalar = F>, const D: usize, Shape: Clone> Clone for PackedExtField<F, PF, D, Shape>
Source§fn clone(&self) -> PackedExtField<F, PF, D, Shape>
fn clone(&self) -> PackedExtField<F, PF, D, Shape>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl<F: Copy + Field, PF: Copy + PackedField<Scalar = F>, const D: usize, Shape: Copy> Copy for PackedExtField<F, PF, D, Shape>
Source§impl<F: Debug + Field, PF: Debug + PackedField<Scalar = F>, const D: usize, Shape: Debug> Debug for PackedExtField<F, PF, D, Shape>
impl<F: Debug + Field, PF: Debug + PackedField<Scalar = F>, const D: usize, Shape: Debug> Debug for PackedExtField<F, PF, D, Shape>
Source§impl<'de, F: Field, PF, const D: usize, Shape> Deserialize<'de> for PackedExtField<F, PF, D, Shape>where
PF: Deserialize<'de> + PackedField<Scalar = F>,
impl<'de, F: Field, PF, const D: usize, Shape> Deserialize<'de> for PackedExtField<F, PF, D, Shape>where
PF: Deserialize<'de> + PackedField<Scalar = F>,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<F: Field, PF: PackedField<Scalar = F>> Distribution<PackedExtField<F, PF, 3, CubicTrinomial>> for StandardUniformwhere
Self: Distribution<PF>,
impl<F: Field, PF: PackedField<Scalar = F>> Distribution<PackedExtField<F, PF, 3, CubicTrinomial>> for StandardUniformwhere
Self: Distribution<PF>,
Source§fn sample<R: Rng + ?Sized>(
&self,
rng: &mut R,
) -> PackedCubicTrinomialExtensionField<F, PF>
fn sample<R: Rng + ?Sized>( &self, rng: &mut R, ) -> PackedCubicTrinomialExtensionField<F, PF>
Generate a random value of
T, using rng as the source of randomness.Source§fn sample_iter<R>(self, rng: R) -> Iter<Self, R, T>
fn sample_iter<R>(self, rng: R) -> Iter<Self, R, T>
Create an iterator that generates random values of
T, using rng as
the source of randomness. Read moreSource§impl<F: Field, PF: PackedField<Scalar = F>> Distribution<PackedExtField<F, PF, 5, QuinticTrinomial>> for StandardUniformwhere
Self: Distribution<PF>,
impl<F: Field, PF: PackedField<Scalar = F>> Distribution<PackedExtField<F, PF, 5, QuinticTrinomial>> for StandardUniformwhere
Self: Distribution<PF>,
Source§fn sample<R: Rng + ?Sized>(
&self,
rng: &mut R,
) -> PackedQuinticTrinomialExtensionField<F, PF>
fn sample<R: Rng + ?Sized>( &self, rng: &mut R, ) -> PackedQuinticTrinomialExtensionField<F, PF>
Generate a random value of
T, using rng as the source of randomness.Source§fn sample_iter<R>(self, rng: R) -> Iter<Self, R, T>
fn sample_iter<R>(self, rng: R) -> Iter<Self, R, T>
Create an iterator that generates random values of
T, using rng as
the source of randomness. Read moreSource§impl<F: Field, PF: PackedField<Scalar = F>, const D: usize> Distribution<PackedExtField<F, PF, D, Binomial<F>>> for StandardUniformwhere
Self: Distribution<PF>,
impl<F: Field, PF: PackedField<Scalar = F>, const D: usize> Distribution<PackedExtField<F, PF, D, Binomial<F>>> for StandardUniformwhere
Self: Distribution<PF>,
Source§fn sample<R: Rng + ?Sized>(
&self,
rng: &mut R,
) -> PackedBinomialExtensionField<F, PF, D>
fn sample<R: Rng + ?Sized>( &self, rng: &mut R, ) -> PackedBinomialExtensionField<F, PF, D>
Generate a random value of
T, using rng as the source of randomness.Source§fn sample_iter<R>(self, rng: R) -> Iter<Self, R, T>
fn sample_iter<R>(self, rng: R) -> Iter<Self, R, T>
Create an iterator that generates random values of
T, using rng as
the source of randomness. Read moreimpl<F: Eq + Field, PF: Eq + PackedField<Scalar = F>, const D: usize, Shape: Eq> Eq for PackedExtField<F, PF, D, Shape>
Source§impl<F: Hash + Field, PF: Hash + PackedField<Scalar = F>, const D: usize, Shape: Hash> Hash for PackedExtField<F, PF, D, Shape>
impl<F: Hash + Field, PF: Hash + PackedField<Scalar = F>, const D: usize, Shape: Hash> Hash for PackedExtField<F, PF, D, Shape>
Source§impl<F: Ord + Field, PF: Ord + PackedField<Scalar = F>, const D: usize, Shape: Ord> Ord for PackedExtField<F, PF, D, Shape>
impl<F: Ord + Field, PF: Ord + PackedField<Scalar = F>, const D: usize, Shape: Ord> Ord for PackedExtField<F, PF, D, Shape>
Source§fn cmp(&self, other: &PackedExtField<F, PF, D, Shape>) -> Ordering
fn cmp(&self, other: &PackedExtField<F, PF, D, Shape>) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl<F: PartialEq + Field, PF: PartialEq + PackedField<Scalar = F>, const D: usize, Shape: PartialEq> PartialEq for PackedExtField<F, PF, D, Shape>
impl<F: PartialEq + Field, PF: PartialEq + PackedField<Scalar = F>, const D: usize, Shape: PartialEq> PartialEq for PackedExtField<F, PF, D, Shape>
Source§fn eq(&self, other: &PackedExtField<F, PF, D, Shape>) -> bool
fn eq(&self, other: &PackedExtField<F, PF, D, Shape>) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl<F: PartialOrd + Field, PF: PartialOrd + PackedField<Scalar = F>, const D: usize, Shape: PartialOrd> PartialOrd for PackedExtField<F, PF, D, Shape>
impl<F: PartialOrd + Field, PF: PartialOrd + PackedField<Scalar = F>, const D: usize, Shape: PartialOrd> PartialOrd for PackedExtField<F, PF, D, Shape>
Source§impl<F: Field, PF, const D: usize, Shape> Serialize for PackedExtField<F, PF, D, Shape>where
PF: Serialize + PackedField<Scalar = F>,
impl<F: Field, PF, const D: usize, Shape> Serialize for PackedExtField<F, PF, D, Shape>where
PF: Serialize + PackedField<Scalar = F>,
impl<F: PartialEq + Field, PF: PartialEq + PackedField<Scalar = F>, const D: usize, Shape: PartialEq> StructuralPartialEq for PackedExtField<F, PF, D, Shape>
Auto Trait Implementations§
impl<F, PF, const D: usize, Shape> Freeze for PackedExtField<F, PF, D, Shape>where
PF: Freeze,
impl<F, PF, const D: usize, Shape> RefUnwindSafe for PackedExtField<F, PF, D, Shape>where
PF: RefUnwindSafe,
Shape: RefUnwindSafe,
impl<F, PF, const D: usize, Shape> Send for PackedExtField<F, PF, D, Shape>where
Shape: Send,
impl<F, PF, const D: usize, Shape> Sync for PackedExtField<F, PF, D, Shape>where
Shape: Sync,
impl<F, PF, const D: usize, Shape> Unpin for PackedExtField<F, PF, D, Shape>
impl<F, PF, const D: usize, Shape> UnsafeUnpin for PackedExtField<F, PF, D, Shape>where
PF: UnsafeUnpin,
impl<F, PF, const D: usize, Shape> UnwindSafe for PackedExtField<F, PF, D, Shape>where
PF: UnwindSafe,
Shape: UnwindSafe,
Blanket Implementations§
Source§impl<R> Algebra<R> for Rwhere
R: PrimeCharacteristicRing,
impl<R> Algebra<R> for Rwhere
R: PrimeCharacteristicRing,
Source§fn mixed_dot_product<const N: usize>(a: &[Self; N], f: &[F; N]) -> Selfwhere
F: Dup,
fn mixed_dot_product<const N: usize>(a: &[Self; N], f: &[F; N]) -> Selfwhere
F: Dup,
Dot product between algebra elements and base field scalars. Read more
Source§const BATCHED_LC_CHUNK: usize = 8
const BATCHED_LC_CHUNK: usize = 8
Optimal chunk size for
batched_linear_combination. Read moreSource§impl<F> BasedVectorSpace<F> for Fwhere
F: PrimeCharacteristicRing,
impl<F> BasedVectorSpace<F> for Fwhere
F: PrimeCharacteristicRing,
Source§const DIMENSION: usize = const DIMENSION: usize = 1;
const DIMENSION: usize = const DIMENSION: usize = 1;
The dimension of the vector space, i.e. the number of elements in
its basis.
Source§fn as_basis_coefficients_slice(&self) -> &[F]
fn as_basis_coefficients_slice(&self) -> &[F]
Fixes a basis for the algebra
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
Fixes a basis for the algebra
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>,
Fixes a basis for the algebra
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<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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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>
Converts
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>
Converts
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 more