pub struct LinearizedPoly8b(/* private fields */);Expand description
An F_2-linear map written as sum_j c_j x^(2^j).
Every F_2-linear map on the field has exactly one such form.
Both sides are 64-dimensional over GF(2), and the correspondence is injective.
Held as coefficients rather than as a matrix, because that is the form a protocol states a Frobenius-twisted weight in.
The width in the name is the field’s, since the form is specific to it.
Implementations§
Source§impl LinearizedPoly8b
impl LinearizedPoly8b
Sourcepub const fn new(coefficients: [Rijndael8b; 8]) -> Self
pub const fn new(coefficients: [Rijndael8b; 8]) -> Self
The map with the given coefficients, in order of increasing squaring power.
Sourcepub const fn coefficients(&self) -> [Rijndael8b; 8]
pub const fn coefficients(&self) -> [Rijndael8b; 8]
The coefficients, in order of increasing squaring power.
Sourcepub fn eval(&self, x: Rijndael8b) -> Rijndael8b
pub fn eval(&self, x: Rijndael8b) -> Rijndael8b
The value at one point, summed term by term.
This is the definition, kept for a single point and for checking the tabulated form.
Sourcepub const fn to_matrix(&self) -> ByteMatrix
pub const fn to_matrix(&self) -> ByteMatrix
The same map, tabulated for the byte-wise engine.
§Algorithm
A linear map is fixed by the images of the eight basis vectors.
Each image is that vector’s own Frobenius orbit summed against the coefficients.
image(v) = sum over j of c_j * v^(2^j)Trait Implementations§
Source§impl Clone for LinearizedPoly8b
impl Clone for LinearizedPoly8b
impl Copy for LinearizedPoly8b
Source§impl Debug for LinearizedPoly8b
impl Debug for LinearizedPoly8b
Source§impl Default for LinearizedPoly8b
impl Default for LinearizedPoly8b
Source§impl<'de> Deserialize<'de> for LinearizedPoly8b
impl<'de> Deserialize<'de> for LinearizedPoly8b
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>,
impl Eq for LinearizedPoly8b
Source§impl Hash for LinearizedPoly8b
impl Hash for LinearizedPoly8b
Source§impl PartialEq for LinearizedPoly8b
impl PartialEq for LinearizedPoly8b
Source§impl Serialize for LinearizedPoly8b
impl Serialize for LinearizedPoly8b
impl StructuralPartialEq for LinearizedPoly8b
Auto Trait Implementations§
impl Freeze for LinearizedPoly8b
impl RefUnwindSafe for LinearizedPoly8b
impl Send for LinearizedPoly8b
impl Sync for LinearizedPoly8b
impl Unpin for LinearizedPoly8b
impl UnsafeUnpin for LinearizedPoly8b
impl UnwindSafe for LinearizedPoly8b
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
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> ⓘ
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 more