pub struct ExtField<F, const D: usize, Shape, A = F> { /* private fields */ }Expand description
Unified extension-field representation.
An ExtField<F, D, Shape, A> represents an element of a degree-D extension
of the base field F, with the reducing polynomial determined by Shape.
The A parameter is the algebra over F storing each coefficient — usually
F itself for scalar elements, or F::Packing for SIMD-packed elements.
The three public-facing extension types — BinomialExtensionField,
CubicTrinomialExtensionField, QuinticTrinomialExtensionField — are
type aliases over this struct with their respective Shapes.
Implementations§
Source§impl<R: PrimeCharacteristicRing> ExtField<R, 2, Binomial<R>>
Convenience methods for complex extensions
impl<R: PrimeCharacteristicRing> ExtField<R, 2, Binomial<R>>
Convenience methods for complex extensions
pub const fn new_complex(real: R, imag: R) -> Self
pub const fn new_real(real: R) -> Self
pub const fn new_imag(imag: R) -> Self
pub fn real(&self) -> R
pub fn imag(&self) -> R
pub fn conjugate(&self) -> Self
pub fn norm(&self) -> R
pub fn to_array(&self) -> [R; 2]
pub fn rotate<Ext: Algebra<R>>(&self, rhs: &Complex<Ext>) -> Complex<Ext>
Source§impl<F: Copy> ExtField<F, 3, CubicTrinomial>
impl<F: Copy> ExtField<F, 3, CubicTrinomial>
Source§impl<F: Copy> ExtField<F, 5, QuinticTrinomial>
impl<F: Copy> ExtField<F, 5, QuinticTrinomial>
Source§impl<F, const D: usize, Shape, A> ExtField<F, D, Shape, A>
impl<F, const D: usize, Shape, A> ExtField<F, D, Shape, A>
Sourcepub const fn new(value: [A; D]) -> Self
pub const fn new(value: [A; D]) -> Self
Create an extension field element from an array of base/algebra elements.
Any array is accepted. No reduction is required since each entry is
already a valid element of the algebra over F.
§Panics
Panics (at compile time) if D <= 1. A degree-0 or degree-1 “extension”
is degenerate — use F directly instead.
Trait Implementations§
Source§impl<F, PF> Add<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> Add<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§type Output = PackedExtField<F, PF, 3, CubicTrinomial>
type Output = PackedExtField<F, PF, 3, CubicTrinomial>
+ operator.Source§fn add(self, rhs: CubicTrinomialExtensionField<F>) -> Self
fn add(self, rhs: CubicTrinomialExtensionField<F>) -> Self
+ operation. Read moreSource§impl<F, PF> Add<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> Add<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§type Output = PackedExtField<F, PF, 5, QuinticTrinomial>
type Output = PackedExtField<F, PF, 5, QuinticTrinomial>
+ operator.Source§fn add(self, rhs: QuinticTrinomialExtensionField<F>) -> Self
fn add(self, rhs: QuinticTrinomialExtensionField<F>) -> Self
+ operation. Read moreSource§impl<F, PF, const D: usize> Add<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>where
F: BinomiallyExtendable<D>,
PF: PackedField<Scalar = F>,
impl<F, PF, const D: usize> Add<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>where
F: BinomiallyExtendable<D>,
PF: PackedField<Scalar = F>,
Source§type Output = PackedExtField<F, PF, D, Binomial<F>>
type Output = PackedExtField<F, PF, D, Binomial<F>>
+ operator.Source§fn add(self, rhs: BinomialExtensionField<F, D>) -> Self
fn add(self, rhs: BinomialExtensionField<F, D>) -> Self
+ operation. Read moreSource§impl<F, PF> AddAssign<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> AddAssign<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§fn add_assign(&mut self, rhs: CubicTrinomialExtensionField<F>)
fn add_assign(&mut self, rhs: CubicTrinomialExtensionField<F>)
+= operation. Read moreSource§impl<F, PF> AddAssign<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> AddAssign<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§fn add_assign(&mut self, rhs: QuinticTrinomialExtensionField<F>)
fn add_assign(&mut self, rhs: QuinticTrinomialExtensionField<F>)
+= operation. Read moreSource§impl<F, PF, const D: usize> AddAssign<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>where
F: BinomiallyExtendable<D>,
PF: PackedField<Scalar = F>,
impl<F, PF, const D: usize> AddAssign<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>where
F: BinomiallyExtendable<D>,
PF: PackedField<Scalar = F>,
Source§fn add_assign(&mut self, rhs: BinomialExtensionField<F, D>)
fn add_assign(&mut self, rhs: BinomialExtensionField<F, D>)
+= operation. Read moreSource§impl<F: CubicTrinomialExtendable, PF: PackedField<Scalar = F>> Algebra<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>
impl<F: CubicTrinomialExtendable, PF: PackedField<Scalar = F>> Algebra<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>
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,
Source§const BATCHED_LC_CHUNK: usize = 8
const BATCHED_LC_CHUNK: usize = 8
batched_linear_combination. Read moreSource§impl<F: QuinticTrinomialExtendable, PF: PackedField<Scalar = F>> Algebra<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>
impl<F: QuinticTrinomialExtendable, PF: PackedField<Scalar = F>> Algebra<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>
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,
Source§const BATCHED_LC_CHUNK: usize = 8
const BATCHED_LC_CHUNK: usize = 8
batched_linear_combination. Read moreSource§impl<F: BinomiallyExtendable<D>, PF: PackedField<Scalar = F>, const D: usize> Algebra<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>
impl<F: BinomiallyExtendable<D>, PF: PackedField<Scalar = F>, const D: usize> Algebra<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>
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,
Source§const BATCHED_LC_CHUNK: usize = 8
const BATCHED_LC_CHUNK: usize = 8
batched_linear_combination. Read moreSource§impl<F, A: Algebra<F>, const D: usize, Shape: ExtensionShape + Clone> BasedVectorSpace<A> for ExtField<F, D, Shape, A>where
F: Field + ExtensionAlgebra<F, D, Shape>,
impl<F, A: Algebra<F>, const D: usize, Shape: ExtensionShape + Clone> BasedVectorSpace<A> for ExtField<F, D, Shape, A>where
F: Field + ExtensionAlgebra<F, D, Shape>,
Source§const DIMENSION: usize = D
const DIMENSION: usize = D
Source§fn as_basis_coefficients_slice(&self) -> &[A]
fn as_basis_coefficients_slice(&self) -> &[A]
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: FnMut(usize) -> A>(f: Fn) -> Self
fn from_basis_coefficients_fn<Fn: FnMut(usize) -> A>(f: Fn) -> Self
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: ExactSizeIterator<Item = A>>(
iter: I,
) -> Option<Self>
fn from_basis_coefficients_iter<I: ExactSizeIterator<Item = A>>( iter: I, ) -> Option<Self>
A and uses this to
map DIMENSION F elements to an element of A. Read moreSource§fn flatten_to_base(vec: Vec<Self>) -> Vec<A>
fn flatten_to_base(vec: Vec<Self>) -> Vec<A>
Source§fn reconstitute_from_base(vec: Vec<A>) -> Vec<Self>
fn reconstitute_from_base(vec: Vec<A>) -> Vec<Self>
impl<F: Copy, const D: usize, Shape: Copy, A: Copy> Copy for ExtField<F, D, Shape, A>
Source§impl<F: Field, A: Algebra<F>, const D: usize, Shape: ExtensionShape> Default for ExtField<F, D, Shape, A>
impl<F: Field, A: Algebra<F>, const D: usize, Shape: ExtensionShape> Default for ExtField<F, D, Shape, A>
Source§impl<'de, F, const D: usize, Shape, A> Deserialize<'de> for ExtField<F, D, Shape, A>where
A: Deserialize<'de>,
impl<'de, F, const D: usize, Shape, A> Deserialize<'de> for ExtField<F, D, Shape, A>where
A: Deserialize<'de>,
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>,
Source§impl<F, const D: usize, Shape: ExtensionShape> Distribution<ExtField<F, D, Shape>> for StandardUniform
impl<F, const D: usize, Shape: ExtensionShape> Distribution<ExtField<F, D, Shape>> for StandardUniform
Source§fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> ExtField<F, D, Shape>
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> ExtField<F, D, Shape>
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>
T, using rng as
the source of randomness. Read moreSource§impl<F, PF> Div<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> Div<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§type Output = PackedExtField<F, PF, 3, CubicTrinomial>
type Output = PackedExtField<F, PF, 3, CubicTrinomial>
/ operator.Source§fn div(self, rhs: CubicTrinomialExtensionField<F>) -> Self
fn div(self, rhs: CubicTrinomialExtensionField<F>) -> Self
/ operation. Read moreSource§impl<F, PF> Div<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> Div<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§type Output = PackedExtField<F, PF, 5, QuinticTrinomial>
type Output = PackedExtField<F, PF, 5, QuinticTrinomial>
/ operator.Source§fn div(self, rhs: QuinticTrinomialExtensionField<F>) -> Self
fn div(self, rhs: QuinticTrinomialExtensionField<F>) -> Self
/ operation. Read moreSource§impl<F, PF, const D: usize> Div<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>where
F: BinomiallyExtendable<D>,
PF: PackedField<Scalar = F>,
impl<F, PF, const D: usize> Div<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>where
F: BinomiallyExtendable<D>,
PF: PackedField<Scalar = F>,
Source§type Output = PackedExtField<F, PF, D, Binomial<F>>
type Output = PackedExtField<F, PF, D, Binomial<F>>
/ operator.Source§fn div(self, rhs: BinomialExtensionField<F, D>) -> Self
fn div(self, rhs: BinomialExtensionField<F, D>) -> Self
/ operation. Read moreSource§impl<F, PF> DivAssign<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> DivAssign<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§fn div_assign(&mut self, rhs: CubicTrinomialExtensionField<F>)
fn div_assign(&mut self, rhs: CubicTrinomialExtensionField<F>)
/= operation. Read moreSource§impl<F, PF> DivAssign<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> DivAssign<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§fn div_assign(&mut self, rhs: QuinticTrinomialExtensionField<F>)
fn div_assign(&mut self, rhs: QuinticTrinomialExtensionField<F>)
/= operation. Read moreSource§impl<F, PF, const D: usize> DivAssign<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>where
F: BinomiallyExtendable<D>,
PF: PackedField<Scalar = F>,
impl<F, PF, const D: usize> DivAssign<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>where
F: BinomiallyExtendable<D>,
PF: PackedField<Scalar = F>,
Source§fn div_assign(&mut self, rhs: BinomialExtensionField<F, D>)
fn div_assign(&mut self, rhs: BinomialExtensionField<F, D>)
/= operation. Read moreimpl<F: Eq, const D: usize, Shape: Eq, A: Eq> Eq for ExtField<F, D, Shape, A>
Source§impl<F, const D: usize> ExtensionAlgebra<ExtField<F, 2, Binomial<F>>, D, Binomial<ExtField<F, 2, Binomial<F>>>> for Complex<F>where
F: HasComplexBinomialExtension<D>,
impl<F, const D: usize> ExtensionAlgebra<ExtField<F, 2, Binomial<F>>, D, Binomial<ExtField<F, 2, Binomial<F>>>> for Complex<F>where
F: HasComplexBinomialExtension<D>,
Source§fn ext_mul(a: &[Self; D], b: &[Self; D], res: &mut [Self; D])
fn ext_mul(a: &[Self; D], b: &[Self; D], res: &mut [Self; D])
Source§fn ext_square(a: &[Self; D], res: &mut [Self; D])
fn ext_square(a: &[Self; D], res: &mut [Self; D])
Source§fn ext_base_mul(lhs: [Self; D], rhs: Self) -> [Self; D]
fn ext_base_mul(lhs: [Self; D], rhs: Self) -> [Self; D]
Source§impl<F: Field, A: Algebra<F>, const D: usize, Shape: ExtensionShape> From<A> for ExtField<F, D, Shape, A>
impl<F: Field, A: Algebra<F>, const D: usize, Shape: ExtensionShape> From<A> for ExtField<F, D, Shape, A>
Source§impl<F: Field, PF: PackedField<Scalar = F>> From<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>
impl<F: Field, PF: PackedField<Scalar = F>> From<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>
Source§fn from(x: CubicTrinomialExtensionField<F>) -> Self
fn from(x: CubicTrinomialExtensionField<F>) -> Self
Source§impl<F: Field, PF: PackedField<Scalar = F>> From<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>
impl<F: Field, PF: PackedField<Scalar = F>> From<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>
Source§fn from(x: QuinticTrinomialExtensionField<F>) -> Self
fn from(x: QuinticTrinomialExtensionField<F>) -> Self
Source§impl<F: Field, PF: PackedField<Scalar = F>, const D: usize> From<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>
impl<F: Field, PF: PackedField<Scalar = F>, const D: usize> From<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>
Source§fn from(x: BinomialExtensionField<F, D>) -> Self
fn from(x: BinomialExtensionField<F, D>) -> Self
Source§impl<F, PF> Mul<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> Mul<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§type Output = PackedExtField<F, PF, 3, CubicTrinomial>
type Output = PackedExtField<F, PF, 3, CubicTrinomial>
* operator.Source§fn mul(self, rhs: CubicTrinomialExtensionField<F>) -> Self
fn mul(self, rhs: CubicTrinomialExtensionField<F>) -> Self
* operation. Read moreSource§impl<F, PF> Mul<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> Mul<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§type Output = PackedExtField<F, PF, 5, QuinticTrinomial>
type Output = PackedExtField<F, PF, 5, QuinticTrinomial>
* operator.Source§fn mul(self, rhs: QuinticTrinomialExtensionField<F>) -> Self
fn mul(self, rhs: QuinticTrinomialExtensionField<F>) -> Self
* operation. Read moreSource§impl<F, PF, const D: usize> Mul<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>where
F: BinomiallyExtendable<D>,
PF: PackedField<Scalar = F>,
impl<F, PF, const D: usize> Mul<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>where
F: BinomiallyExtendable<D>,
PF: PackedField<Scalar = F>,
Source§type Output = PackedExtField<F, PF, D, Binomial<F>>
type Output = PackedExtField<F, PF, D, Binomial<F>>
* operator.Source§fn mul(self, rhs: BinomialExtensionField<F, D>) -> Self
fn mul(self, rhs: BinomialExtensionField<F, D>) -> Self
* operation. Read moreSource§impl<F, PF> MulAssign<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> MulAssign<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§fn mul_assign(&mut self, rhs: CubicTrinomialExtensionField<F>)
fn mul_assign(&mut self, rhs: CubicTrinomialExtensionField<F>)
*= operation. Read moreSource§impl<F, PF> MulAssign<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> MulAssign<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§fn mul_assign(&mut self, rhs: QuinticTrinomialExtensionField<F>)
fn mul_assign(&mut self, rhs: QuinticTrinomialExtensionField<F>)
*= operation. Read moreSource§impl<F, PF, const D: usize> MulAssign<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>where
F: BinomiallyExtendable<D>,
PF: PackedField<Scalar = F>,
impl<F, PF, const D: usize> MulAssign<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>where
F: BinomiallyExtendable<D>,
PF: PackedField<Scalar = F>,
Source§fn mul_assign(&mut self, rhs: BinomialExtensionField<F, D>)
fn mul_assign(&mut self, rhs: BinomialExtensionField<F, D>)
*= operation. Read moreSource§impl<F: Ord, const D: usize, Shape: Ord, A: Ord> Ord for ExtField<F, D, Shape, A>
impl<F: Ord, const D: usize, Shape: Ord, A: Ord> Ord for ExtField<F, D, Shape, A>
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
impl<F, const D: usize, Shape> Packable for ExtField<F, D, Shape>where
F: Field + ExtensionAlgebra<F, D, Shape>,
Shape: ExtensionShape + Copy + Eq + Hash + Send + Sync,
Source§impl<F: CubicTrinomialExtendable> PackedFieldExtension<F, ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, F::Packing>
impl<F: CubicTrinomialExtendable> PackedFieldExtension<F, ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, F::Packing>
Source§fn from_ext_fn(f: impl Fn(usize) -> CubicTrinomialExtensionField<F>) -> Self
fn from_ext_fn(f: impl Fn(usize) -> CubicTrinomialExtensionField<F>) -> Self
f to each lane. Read moreSource§fn packed_ext_powers(base: CubicTrinomialExtensionField<F>) -> Powers<Self> ⓘ
fn packed_ext_powers(base: CubicTrinomialExtensionField<F>) -> Powers<Self> ⓘ
packed_powers, construct an iterator which returns
powers of base packed into PackedFieldExtension elements.Source§fn from_ext_slice(slice: &[ExtField]) -> Self
fn from_ext_slice(slice: &[ExtField]) -> Self
WIDTH slice of extension field elements into one packed extension. Read moreSource§fn pack_ext_columns<const N: usize>(rows: &[[ExtField; N]]) -> [Self; N]
fn pack_ext_columns<const N: usize>(rows: &[[ExtField; N]]) -> [Self; N]
Source§fn pack_ext_columns_fn<const N: usize>(
row_fn: impl Fn(usize) -> [ExtField; N],
) -> [Self; N]
fn pack_ext_columns_fn<const N: usize>( row_fn: impl Fn(usize) -> [ExtField; N], ) -> [Self; N]
N columns using a closure that produces each row. Read moreSource§fn extract(&self, lane: usize) -> ExtField
fn extract(&self, lane: usize) -> ExtField
Source§fn to_ext_slice(&self, out: &mut [ExtField])
fn to_ext_slice(&self, out: &mut [ExtField])
W lanes into the given slice. Read moreSource§fn unpack_ext_into<const N: usize>(
packed: &[Self; N],
rows: &mut [[ExtField; N]],
)
fn unpack_ext_into<const N: usize>( packed: &[Self; N], rows: &mut [[ExtField; N]], )
Source§fn unpack_ext_iter<const N: usize>(
packed: [Self; N],
) -> impl Iterator<Item = [ExtField; N]>
fn unpack_ext_iter<const N: usize>( packed: [Self; N], ) -> impl Iterator<Item = [ExtField; N]>
PackedFieldExtension::unpack_ext_into. Read moreSource§fn to_ext_iter(
iter: impl IntoIterator<Item = Self>,
) -> impl Iterator<Item = ExtField>
fn to_ext_iter( iter: impl IntoIterator<Item = Self>, ) -> impl Iterator<Item = ExtField>
ExtField per lane per packed value).Source§impl<F: QuinticTrinomialExtendable> PackedFieldExtension<F, ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, F::Packing>
impl<F: QuinticTrinomialExtendable> PackedFieldExtension<F, ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, F::Packing>
Source§fn from_ext_fn(f: impl Fn(usize) -> QuinticTrinomialExtensionField<F>) -> Self
fn from_ext_fn(f: impl Fn(usize) -> QuinticTrinomialExtensionField<F>) -> Self
f to each lane. Read moreSource§fn packed_ext_powers(base: QuinticTrinomialExtensionField<F>) -> Powers<Self> ⓘ
fn packed_ext_powers(base: QuinticTrinomialExtensionField<F>) -> Powers<Self> ⓘ
packed_powers, construct an iterator which returns
powers of base packed into PackedFieldExtension elements.Source§fn from_ext_slice(slice: &[ExtField]) -> Self
fn from_ext_slice(slice: &[ExtField]) -> Self
WIDTH slice of extension field elements into one packed extension. Read moreSource§fn pack_ext_columns<const N: usize>(rows: &[[ExtField; N]]) -> [Self; N]
fn pack_ext_columns<const N: usize>(rows: &[[ExtField; N]]) -> [Self; N]
Source§fn pack_ext_columns_fn<const N: usize>(
row_fn: impl Fn(usize) -> [ExtField; N],
) -> [Self; N]
fn pack_ext_columns_fn<const N: usize>( row_fn: impl Fn(usize) -> [ExtField; N], ) -> [Self; N]
N columns using a closure that produces each row. Read moreSource§fn extract(&self, lane: usize) -> ExtField
fn extract(&self, lane: usize) -> ExtField
Source§fn to_ext_slice(&self, out: &mut [ExtField])
fn to_ext_slice(&self, out: &mut [ExtField])
W lanes into the given slice. Read moreSource§fn unpack_ext_into<const N: usize>(
packed: &[Self; N],
rows: &mut [[ExtField; N]],
)
fn unpack_ext_into<const N: usize>( packed: &[Self; N], rows: &mut [[ExtField; N]], )
Source§fn unpack_ext_iter<const N: usize>(
packed: [Self; N],
) -> impl Iterator<Item = [ExtField; N]>
fn unpack_ext_iter<const N: usize>( packed: [Self; N], ) -> impl Iterator<Item = [ExtField; N]>
PackedFieldExtension::unpack_ext_into. Read moreSource§fn to_ext_iter(
iter: impl IntoIterator<Item = Self>,
) -> impl Iterator<Item = ExtField>
fn to_ext_iter( iter: impl IntoIterator<Item = Self>, ) -> impl Iterator<Item = ExtField>
ExtField per lane per packed value).Source§impl<F, const D: usize> PackedFieldExtension<F, ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, F::Packing, D>where
F: BinomiallyExtendable<D>,
impl<F, const D: usize> PackedFieldExtension<F, ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, F::Packing, D>where
F: BinomiallyExtendable<D>,
Source§fn from_ext_fn(f: impl Fn(usize) -> BinomialExtensionField<F, D>) -> Self
fn from_ext_fn(f: impl Fn(usize) -> BinomialExtensionField<F, D>) -> Self
f to each lane. Read moreSource§fn packed_ext_powers(base: BinomialExtensionField<F, D>) -> Powers<Self> ⓘ
fn packed_ext_powers(base: BinomialExtensionField<F, D>) -> Powers<Self> ⓘ
packed_powers, construct an iterator which returns
powers of base packed into PackedFieldExtension elements.Source§fn from_ext_slice(slice: &[ExtField]) -> Self
fn from_ext_slice(slice: &[ExtField]) -> Self
WIDTH slice of extension field elements into one packed extension. Read moreSource§fn pack_ext_columns<const N: usize>(rows: &[[ExtField; N]]) -> [Self; N]
fn pack_ext_columns<const N: usize>(rows: &[[ExtField; N]]) -> [Self; N]
Source§fn pack_ext_columns_fn<const N: usize>(
row_fn: impl Fn(usize) -> [ExtField; N],
) -> [Self; N]
fn pack_ext_columns_fn<const N: usize>( row_fn: impl Fn(usize) -> [ExtField; N], ) -> [Self; N]
N columns using a closure that produces each row. Read moreSource§fn extract(&self, lane: usize) -> ExtField
fn extract(&self, lane: usize) -> ExtField
Source§fn to_ext_slice(&self, out: &mut [ExtField])
fn to_ext_slice(&self, out: &mut [ExtField])
W lanes into the given slice. Read moreSource§fn unpack_ext_into<const N: usize>(
packed: &[Self; N],
rows: &mut [[ExtField; N]],
)
fn unpack_ext_into<const N: usize>( packed: &[Self; N], rows: &mut [[ExtField; N]], )
Source§fn unpack_ext_iter<const N: usize>(
packed: [Self; N],
) -> impl Iterator<Item = [ExtField; N]>
fn unpack_ext_iter<const N: usize>( packed: [Self; N], ) -> impl Iterator<Item = [ExtField; N]>
PackedFieldExtension::unpack_ext_into. Read moreSource§fn to_ext_iter(
iter: impl IntoIterator<Item = Self>,
) -> impl Iterator<Item = ExtField>
fn to_ext_iter( iter: impl IntoIterator<Item = Self>, ) -> impl Iterator<Item = ExtField>
ExtField per lane per packed value).Source§impl<F: PartialEq, const D: usize, Shape: PartialEq, A: PartialEq> PartialEq for ExtField<F, D, Shape, A>
impl<F: PartialEq, const D: usize, Shape: PartialEq, A: PartialEq> PartialEq for ExtField<F, D, Shape, A>
Source§impl<F: PartialOrd, const D: usize, Shape: PartialOrd, A: PartialOrd> PartialOrd for ExtField<F, D, Shape, A>
impl<F: PartialOrd, const D: usize, Shape: PartialOrd, A: PartialOrd> PartialOrd for ExtField<F, D, Shape, A>
Source§impl<F, PF> Product<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> Product<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§fn product<I: Iterator<Item = CubicTrinomialExtensionField<F>>>(iter: I) -> Self
fn product<I: Iterator<Item = CubicTrinomialExtensionField<F>>>(iter: I) -> Self
Self from the elements by multiplying
the items.Source§impl<F, PF> Product<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> Product<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§fn product<I: Iterator<Item = QuinticTrinomialExtensionField<F>>>(
iter: I,
) -> Self
fn product<I: Iterator<Item = QuinticTrinomialExtensionField<F>>>( iter: I, ) -> Self
Self from the elements by multiplying
the items.impl<F: PartialEq, const D: usize, Shape: PartialEq, A: PartialEq> StructuralPartialEq for ExtField<F, D, Shape, A>
Source§impl<F, PF> Sub<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> Sub<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§type Output = PackedExtField<F, PF, 3, CubicTrinomial>
type Output = PackedExtField<F, PF, 3, CubicTrinomial>
- operator.Source§fn sub(self, rhs: CubicTrinomialExtensionField<F>) -> Self
fn sub(self, rhs: CubicTrinomialExtensionField<F>) -> Self
- operation. Read moreSource§impl<F, PF> Sub<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> Sub<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§type Output = PackedExtField<F, PF, 5, QuinticTrinomial>
type Output = PackedExtField<F, PF, 5, QuinticTrinomial>
- operator.Source§fn sub(self, rhs: QuinticTrinomialExtensionField<F>) -> Self
fn sub(self, rhs: QuinticTrinomialExtensionField<F>) -> Self
- operation. Read moreSource§impl<F, PF, const D: usize> Sub<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>where
F: BinomiallyExtendable<D>,
PF: PackedField<Scalar = F>,
impl<F, PF, const D: usize> Sub<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>where
F: BinomiallyExtendable<D>,
PF: PackedField<Scalar = F>,
Source§type Output = PackedExtField<F, PF, D, Binomial<F>>
type Output = PackedExtField<F, PF, D, Binomial<F>>
- operator.Source§fn sub(self, rhs: BinomialExtensionField<F, D>) -> Self
fn sub(self, rhs: BinomialExtensionField<F, D>) -> Self
- operation. Read moreSource§impl<F, PF> SubAssign<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> SubAssign<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§fn sub_assign(&mut self, rhs: CubicTrinomialExtensionField<F>)
fn sub_assign(&mut self, rhs: CubicTrinomialExtensionField<F>)
-= operation. Read moreSource§impl<F, PF> SubAssign<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> SubAssign<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§fn sub_assign(&mut self, rhs: QuinticTrinomialExtensionField<F>)
fn sub_assign(&mut self, rhs: QuinticTrinomialExtensionField<F>)
-= operation. Read moreSource§impl<F, PF, const D: usize> SubAssign<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>where
F: BinomiallyExtendable<D>,
PF: PackedField<Scalar = F>,
impl<F, PF, const D: usize> SubAssign<ExtField<F, D, Binomial<F>>> for PackedBinomialExtensionField<F, PF, D>where
F: BinomiallyExtendable<D>,
PF: PackedField<Scalar = F>,
Source§fn sub_assign(&mut self, rhs: BinomialExtensionField<F, D>)
fn sub_assign(&mut self, rhs: BinomialExtensionField<F, D>)
-= operation. Read moreSource§impl<F, PF> Sum<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> Sum<ExtField<F, 3, CubicTrinomial>> for PackedCubicTrinomialExtensionField<F, PF>where
F: CubicTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§fn sum<I: Iterator<Item = CubicTrinomialExtensionField<F>>>(iter: I) -> Self
fn sum<I: Iterator<Item = CubicTrinomialExtensionField<F>>>(iter: I) -> Self
Self from the elements by “summing up”
the items.Source§impl<F, PF> Sum<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
impl<F, PF> Sum<ExtField<F, 5, QuinticTrinomial>> for PackedQuinticTrinomialExtensionField<F, PF>where
F: QuinticTrinomialExtendable,
PF: PackedField<Scalar = F>,
Source§fn sum<I: Iterator<Item = QuinticTrinomialExtensionField<F>>>(iter: I) -> Self
fn sum<I: Iterator<Item = QuinticTrinomialExtensionField<F>>>(iter: I) -> Self
Self from the elements by “summing up”
the items.Auto Trait Implementations§
impl<F, const D: usize, Shape, A> Freeze for ExtField<F, D, Shape, A>where
A: Freeze,
impl<F, const D: usize, Shape, A> RefUnwindSafe for ExtField<F, D, Shape, A>
impl<F, const D: usize, Shape, A> Send for ExtField<F, D, Shape, A>
impl<F, const D: usize, Shape, A> Sync for ExtField<F, D, Shape, A>
impl<F, const D: usize, Shape, A> Unpin for ExtField<F, D, Shape, A>
impl<F, const D: usize, Shape, A> UnsafeUnpin for ExtField<F, D, Shape, A>where
A: UnsafeUnpin,
impl<F, const D: usize, Shape, A> UnwindSafe for ExtField<F, D, Shape, A>
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,
Source§const BATCHED_LC_CHUNK: usize = 8
const BATCHED_LC_CHUNK: usize = 8
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;
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<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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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 more