pub struct BinaryField8(/* private fields */);Expand description
The binary tower field GF(2^8).
A quadratic extension of BinaryField4 generated by a root X of
X² + αX + 1, where α is the generator of the level below over the one beneath it.
The low half of the backing integer holds the coefficient of 1, the high half the
coefficient of X.
The serde encoding is canonical: every field element has exactly one valid byte
representation (see the manual Deserialize impl below). #[serde(transparent)]
makes the derived Serialize emit the backing integer itself, which is what that
impl reads back.
Implementations§
Source§impl BinaryField8
impl BinaryField8
Sourcepub fn from_le_bytes(bytes: [u8; 1]) -> Self
pub fn from_le_bytes(bytes: [u8; 1]) -> Self
Construct a field element from its little-endian byte representation.
Every byte string of the right length is a valid input: from_repr masks
any bits above the canonical range.
Trait Implementations§
Source§impl Add for BinaryField8
impl Add for BinaryField8
Source§impl Add<BinaryField8> for BinaryField16
impl Add<BinaryField8> for BinaryField16
Source§type Output = BinaryField16
type Output = BinaryField16
+ operator.Source§fn add(self, rhs: BinaryField8) -> Self
fn add(self, rhs: BinaryField8) -> Self
+ operation. Read moreSource§impl Add<BinaryField8> for BinaryField32
impl Add<BinaryField8> for BinaryField32
Source§type Output = BinaryField32
type Output = BinaryField32
+ operator.Source§fn add(self, rhs: BinaryField8) -> Self
fn add(self, rhs: BinaryField8) -> Self
+ operation. Read moreSource§impl Add<BinaryField8> for BinaryField64
impl Add<BinaryField8> for BinaryField64
Source§type Output = BinaryField64
type Output = BinaryField64
+ operator.Source§fn add(self, rhs: BinaryField8) -> Self
fn add(self, rhs: BinaryField8) -> Self
+ operation. Read moreSource§impl Add<BinaryField8> for BinaryField128
impl Add<BinaryField8> for BinaryField128
Source§type Output = BinaryField128
type Output = BinaryField128
+ operator.Source§fn add(self, rhs: BinaryField8) -> Self
fn add(self, rhs: BinaryField8) -> Self
+ operation. Read moreSource§impl Add<BinaryField8> for Ghash128
impl Add<BinaryField8> for Ghash128
Source§impl Add<BinaryField8> for Poly64
impl Add<BinaryField8> for Poly64
Source§impl Add<BinaryField8> for Gf2
impl Add<BinaryField8> for Gf2
Source§type Output = BinaryField8
type Output = BinaryField8
+ operator.Source§impl Add<BinaryField16> for BinaryField8
impl Add<BinaryField16> for BinaryField8
Source§type Output = BinaryField16
type Output = BinaryField16
+ operator.Source§impl Add<BinaryField32> for BinaryField8
impl Add<BinaryField32> for BinaryField8
Source§type Output = BinaryField32
type Output = BinaryField32
+ operator.Source§impl Add<BinaryField64> for BinaryField8
impl Add<BinaryField64> for BinaryField8
Source§type Output = BinaryField64
type Output = BinaryField64
+ operator.Source§impl Add<BinaryField128> for BinaryField8
impl Add<BinaryField128> for BinaryField8
Source§type Output = BinaryField128
type Output = BinaryField128
+ operator.Source§impl Add<Gf2> for BinaryField8
impl Add<Gf2> for BinaryField8
Source§impl Add<Ghash128> for BinaryField8
impl Add<Ghash128> for BinaryField8
Source§impl Add<Poly64> for BinaryField8
impl Add<Poly64> for BinaryField8
Source§impl<T: Into<Self>> AddAssign<T> for BinaryField8
impl<T: Into<Self>> AddAssign<T> for BinaryField8
Source§fn add_assign(&mut self, rhs: T)
fn add_assign(&mut self, rhs: T)
+= operation. Read moreSource§impl Algebra<BinaryField8> for BinaryField16
impl Algebra<BinaryField8> for BinaryField16
Source§fn quadratic_extension_square(a: &[Self; 2], w: F) -> [Self; 2]
fn quadratic_extension_square(a: &[Self; 2], w: F) -> [Self; 2]
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 Algebra<BinaryField8> for BinaryField32
impl Algebra<BinaryField8> for BinaryField32
Source§fn quadratic_extension_square(a: &[Self; 2], w: F) -> [Self; 2]
fn quadratic_extension_square(a: &[Self; 2], w: F) -> [Self; 2]
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 Algebra<BinaryField8> for BinaryField64
impl Algebra<BinaryField8> for BinaryField64
Source§fn quadratic_extension_square(a: &[Self; 2], w: F) -> [Self; 2]
fn quadratic_extension_square(a: &[Self; 2], w: F) -> [Self; 2]
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 Algebra<BinaryField8> for BinaryField128
impl Algebra<BinaryField8> for BinaryField128
Source§fn quadratic_extension_square(a: &[Self; 2], w: F) -> [Self; 2]
fn quadratic_extension_square(a: &[Self; 2], w: F) -> [Self; 2]
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 Algebra<BinaryField8> for Ghash128
impl Algebra<BinaryField8> for Ghash128
Source§fn quadratic_extension_square(a: &[Self; 2], w: F) -> [Self; 2]
fn quadratic_extension_square(a: &[Self; 2], w: F) -> [Self; 2]
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 Algebra<BinaryField8> for Poly64
impl Algebra<BinaryField8> for Poly64
Source§fn quadratic_extension_square(a: &[Self; 2], w: F) -> [Self; 2]
fn quadratic_extension_square(a: &[Self; 2], w: F) -> [Self; 2]
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 Algebra<Gf2> for BinaryField8
impl Algebra<Gf2> for BinaryField8
Source§fn quadratic_extension_square(a: &[Self; 2], w: F) -> [Self; 2]
fn quadratic_extension_square(a: &[Self; 2], w: F) -> [Self; 2]
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 AlgebraIdentity<BinaryField8> for BinaryField16
impl AlgebraIdentity<BinaryField8> for BinaryField16
Source§impl AlgebraIdentity<BinaryField8> for BinaryField32
impl AlgebraIdentity<BinaryField8> for BinaryField32
Source§impl AlgebraIdentity<BinaryField8> for BinaryField64
impl AlgebraIdentity<BinaryField8> for BinaryField64
Source§impl AlgebraIdentity<BinaryField8> for BinaryField128
impl AlgebraIdentity<BinaryField8> for BinaryField128
Source§impl BasedVectorSpace<BinaryField8> for BinaryField16
impl BasedVectorSpace<BinaryField8> for BinaryField16
Source§fn flatten_to_base(vec: Vec<Self>) -> Vec<BinaryField8>
fn flatten_to_base(vec: Vec<Self>) -> Vec<BinaryField8>
A whole vector of elements is one contiguous run of coefficients, for the same reason a single element is, so the flattening is a single copy of the buffer.
The inverse direction is not symmetric: a Vec<$lower> is allocated at $lower’s
alignment, which is weaker than $upper’s, so freeing it under a Layout whose
alignment differs from the one it was made with would be undefined behaviour.
reconstitute_from_base below instead copies into a freshly allocated buffer at
$upper’s own alignment.
Source§const DIMENSION: usize
const DIMENSION: usize
Source§fn as_basis_coefficients_slice(&self) -> &[BinaryField8]
fn as_basis_coefficients_slice(&self) -> &[BinaryField8]
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) -> BinaryField8>(f: Fn) -> Self
fn from_basis_coefficients_fn<Fn: FnMut(usize) -> BinaryField8>(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 = BinaryField8>>(
iter: I,
) -> Option<Self>
fn from_basis_coefficients_iter<I: ExactSizeIterator<Item = BinaryField8>>( iter: I, ) -> Option<Self>
A and uses this to
map DIMENSION F elements to an element of A. Read moreSource§fn reconstitute_from_base(vec: Vec<BinaryField8>) -> Vec<Self>
fn reconstitute_from_base(vec: Vec<BinaryField8>) -> Vec<Self>
Source§impl BasedVectorSpace<BinaryField8> for BinaryField32
impl BasedVectorSpace<BinaryField8> for BinaryField32
Source§fn flatten_to_base(vec: Vec<Self>) -> Vec<BinaryField8>
fn flatten_to_base(vec: Vec<Self>) -> Vec<BinaryField8>
A whole vector of elements is one contiguous run of coefficients, for the same reason a single element is, so the flattening is a single copy of the buffer.
The inverse direction is not symmetric: a Vec<$lower> is allocated at $lower’s
alignment, which is weaker than $upper’s, so freeing it under a Layout whose
alignment differs from the one it was made with would be undefined behaviour.
reconstitute_from_base below instead copies into a freshly allocated buffer at
$upper’s own alignment.
Source§const DIMENSION: usize
const DIMENSION: usize
Source§fn as_basis_coefficients_slice(&self) -> &[BinaryField8]
fn as_basis_coefficients_slice(&self) -> &[BinaryField8]
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) -> BinaryField8>(f: Fn) -> Self
fn from_basis_coefficients_fn<Fn: FnMut(usize) -> BinaryField8>(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 = BinaryField8>>(
iter: I,
) -> Option<Self>
fn from_basis_coefficients_iter<I: ExactSizeIterator<Item = BinaryField8>>( iter: I, ) -> Option<Self>
A and uses this to
map DIMENSION F elements to an element of A. Read moreSource§fn reconstitute_from_base(vec: Vec<BinaryField8>) -> Vec<Self>
fn reconstitute_from_base(vec: Vec<BinaryField8>) -> Vec<Self>
Source§impl BasedVectorSpace<BinaryField8> for BinaryField64
impl BasedVectorSpace<BinaryField8> for BinaryField64
Source§fn flatten_to_base(vec: Vec<Self>) -> Vec<BinaryField8>
fn flatten_to_base(vec: Vec<Self>) -> Vec<BinaryField8>
A whole vector of elements is one contiguous run of coefficients, for the same reason a single element is, so the flattening is a single copy of the buffer.
The inverse direction is not symmetric: a Vec<$lower> is allocated at $lower’s
alignment, which is weaker than $upper’s, so freeing it under a Layout whose
alignment differs from the one it was made with would be undefined behaviour.
reconstitute_from_base below instead copies into a freshly allocated buffer at
$upper’s own alignment.
Source§const DIMENSION: usize
const DIMENSION: usize
Source§fn as_basis_coefficients_slice(&self) -> &[BinaryField8]
fn as_basis_coefficients_slice(&self) -> &[BinaryField8]
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) -> BinaryField8>(f: Fn) -> Self
fn from_basis_coefficients_fn<Fn: FnMut(usize) -> BinaryField8>(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 = BinaryField8>>(
iter: I,
) -> Option<Self>
fn from_basis_coefficients_iter<I: ExactSizeIterator<Item = BinaryField8>>( iter: I, ) -> Option<Self>
A and uses this to
map DIMENSION F elements to an element of A. Read moreSource§fn reconstitute_from_base(vec: Vec<BinaryField8>) -> Vec<Self>
fn reconstitute_from_base(vec: Vec<BinaryField8>) -> Vec<Self>
Source§impl BasedVectorSpace<BinaryField8> for BinaryField128
impl BasedVectorSpace<BinaryField8> for BinaryField128
Source§fn flatten_to_base(vec: Vec<Self>) -> Vec<BinaryField8>
fn flatten_to_base(vec: Vec<Self>) -> Vec<BinaryField8>
A whole vector of elements is one contiguous run of coefficients, for the same reason a single element is, so the flattening is a single copy of the buffer.
The inverse direction is not symmetric: a Vec<$lower> is allocated at $lower’s
alignment, which is weaker than $upper’s, so freeing it under a Layout whose
alignment differs from the one it was made with would be undefined behaviour.
reconstitute_from_base below instead copies into a freshly allocated buffer at
$upper’s own alignment.
Source§const DIMENSION: usize
const DIMENSION: usize
Source§fn as_basis_coefficients_slice(&self) -> &[BinaryField8]
fn as_basis_coefficients_slice(&self) -> &[BinaryField8]
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) -> BinaryField8>(f: Fn) -> Self
fn from_basis_coefficients_fn<Fn: FnMut(usize) -> BinaryField8>(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 = BinaryField8>>(
iter: I,
) -> Option<Self>
fn from_basis_coefficients_iter<I: ExactSizeIterator<Item = BinaryField8>>( iter: I, ) -> Option<Self>
A and uses this to
map DIMENSION F elements to an element of A. Read moreSource§fn reconstitute_from_base(vec: Vec<BinaryField8>) -> Vec<Self>
fn reconstitute_from_base(vec: Vec<BinaryField8>) -> Vec<Self>
Source§impl Clone for BinaryField8
impl Clone for BinaryField8
impl Copy for BinaryField8
Source§impl Debug for BinaryField8
impl Debug for BinaryField8
Source§impl Default for BinaryField8
impl Default for BinaryField8
Source§impl<'de> Deserialize<'de> for BinaryField8
impl<'de> Deserialize<'de> for BinaryField8
Source§fn deserialize<D: Deserializer<'de>>(d: D) -> Result<Self, D::Error>
fn deserialize<D: Deserializer<'de>>(d: D) -> Result<Self, D::Error>
Source§impl Display for BinaryField8
impl Display for BinaryField8
Source§impl Distribution<BinaryField8> for StandardUniform
impl Distribution<BinaryField8> for StandardUniform
Source§impl Div for BinaryField8
impl Div for BinaryField8
Source§type Output = BinaryField8
type Output = BinaryField8
/ operator.Source§fn div(self, rhs: BinaryField8) -> Self
fn div(self, rhs: BinaryField8) -> Self
/ operation. Read moreSource§impl DivAssign for BinaryField8
impl DivAssign for BinaryField8
Source§fn div_assign(&mut self, rhs: BinaryField8)
fn div_assign(&mut self, rhs: BinaryField8)
/= operation. Read moreimpl Eq for BinaryField8
Source§impl ExtensionField<BinaryField8> for BinaryField16
impl ExtensionField<BinaryField8> for BinaryField16
type ExtensionPacking = BinaryField16
Source§fn is_in_basefield(&self) -> bool
fn is_in_basefield(&self) -> bool
Source§fn as_base(&self) -> Option<BinaryField8>
fn as_base(&self) -> Option<BinaryField8>
Source§fn from_ext_basis_coefficients(coeffs: &[Self]) -> Option<Self>
fn from_ext_basis_coefficients(coeffs: &[Self]) -> Option<Self>
Self from D = DIMENSION coefficients in Self
via Σⱼ basisⱼ · coeffsⱼ. Returns None if coeffs.len() != Self::DIMENSION. Read moreSource§impl ExtensionField<BinaryField8> for BinaryField32
impl ExtensionField<BinaryField8> for BinaryField32
type ExtensionPacking = BinaryField32
Source§fn is_in_basefield(&self) -> bool
fn is_in_basefield(&self) -> bool
Source§fn as_base(&self) -> Option<BinaryField8>
fn as_base(&self) -> Option<BinaryField8>
Source§fn from_ext_basis_coefficients(coeffs: &[Self]) -> Option<Self>
fn from_ext_basis_coefficients(coeffs: &[Self]) -> Option<Self>
Self from D = DIMENSION coefficients in Self
via Σⱼ basisⱼ · coeffsⱼ. Returns None if coeffs.len() != Self::DIMENSION. Read moreSource§impl ExtensionField<BinaryField8> for BinaryField64
impl ExtensionField<BinaryField8> for BinaryField64
type ExtensionPacking = BinaryField64
Source§fn is_in_basefield(&self) -> bool
fn is_in_basefield(&self) -> bool
Source§fn as_base(&self) -> Option<BinaryField8>
fn as_base(&self) -> Option<BinaryField8>
Source§fn from_ext_basis_coefficients(coeffs: &[Self]) -> Option<Self>
fn from_ext_basis_coefficients(coeffs: &[Self]) -> Option<Self>
Self from D = DIMENSION coefficients in Self
via Σⱼ basisⱼ · coeffsⱼ. Returns None if coeffs.len() != Self::DIMENSION. Read moreSource§impl ExtensionField<BinaryField8> for BinaryField128
impl ExtensionField<BinaryField8> for BinaryField128
type ExtensionPacking = BinaryField128
Source§fn is_in_basefield(&self) -> bool
fn is_in_basefield(&self) -> bool
Source§fn as_base(&self) -> Option<BinaryField8>
fn as_base(&self) -> Option<BinaryField8>
Source§fn from_ext_basis_coefficients(coeffs: &[Self]) -> Option<Self>
fn from_ext_basis_coefficients(coeffs: &[Self]) -> Option<Self>
Self from D = DIMENSION coefficients in Self
via Σⱼ basisⱼ · coeffsⱼ. Returns None if coeffs.len() != Self::DIMENSION. Read moreSource§impl Field for BinaryField8
impl Field for BinaryField8
Source§fn interpolation_node(i: usize) -> Self
fn interpolation_node(i: usize) -> Self
The enumeration by bit pattern: interpolation_node(i) is the element whose
coefficients over GF(2) are the bits of i. It is injective for i < 2^BITS.
§Panics
Panics if i >= 2^BITS. from_repr masks, so an out-of-range index would
otherwise alias an earlier node in release builds and break an interpolation
argument silently; the check is paid once per node at setup, never in a loop.
type Packing = BinaryField8
Source§fn try_inverse(&self) -> Option<Self>
fn try_inverse(&self) -> Option<Self>
Source§fn try_sqrt(&self) -> Option<Self>
fn try_sqrt(&self) -> Option<Self>
Source§const BENEFITS_FROM_LOCKSTEP_EVALUATION: bool = false
const BENEFITS_FROM_LOCKSTEP_EVALUATION: bool = false
Source§fn is_zero(&self) -> bool
fn is_zero(&self) -> bool
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§fn batched_columnwise_dot_product<EF, R, I, const N: usize>(
acc: &mut [<EF as ExtensionField<Self>>::ExtensionPacking],
items: I,
)where
EF: ExtensionField<Self>,
R: Iterator<Item = Self::Packing>,
I: Iterator<Item = (R, [EF; N])>,
fn batched_columnwise_dot_product<EF, R, I, const N: usize>(
acc: &mut [<EF as ExtensionField<Self>>::ExtensionPacking],
items: I,
)where
EF: ExtensionField<Self>,
R: Iterator<Item = Self::Packing>,
I: Iterator<Item = (R, [EF; N])>,
acc[c * N + j] += scales[j] * row[c] over a stream of packed rows. Read moreSource§impl From<BinaryField8> for Rijndael8b
impl From<BinaryField8> for Rijndael8b
Source§fn from(x: BinaryField8) -> Self
fn from(x: BinaryField8) -> Self
The same field element, seen in the polynomial basis.
Source§impl From<BinaryField8> for BinaryField16
impl From<BinaryField8> for BinaryField16
Source§fn from(x: BinaryField8) -> Self
fn from(x: BinaryField8) -> Self
The lower level occupies the low BITS bits; the other coefficients vanish.
Source§impl From<BinaryField8> for BinaryField32
impl From<BinaryField8> for BinaryField32
Source§fn from(x: BinaryField8) -> Self
fn from(x: BinaryField8) -> Self
The lower level occupies the low BITS bits; the other coefficients vanish.
Source§impl From<BinaryField8> for BinaryField64
impl From<BinaryField8> for BinaryField64
Source§fn from(x: BinaryField8) -> Self
fn from(x: BinaryField8) -> Self
The lower level occupies the low BITS bits; the other coefficients vanish.
Source§impl From<BinaryField8> for BinaryField128
impl From<BinaryField8> for BinaryField128
Source§fn from(x: BinaryField8) -> Self
fn from(x: BinaryField8) -> Self
The lower level occupies the low BITS bits; the other coefficients vanish.
Source§impl From<BinaryField8> for Ghash128
impl From<BinaryField8> for Ghash128
Source§fn from(x: BinaryField8) -> Self
fn from(x: BinaryField8) -> Self
Source§impl From<BinaryField8> for Poly64
impl From<BinaryField8> for Poly64
Source§fn from(x: BinaryField8) -> Self
fn from(x: BinaryField8) -> Self
Source§impl From<Gf2> for BinaryField8
impl From<Gf2> for BinaryField8
Source§impl From<Rijndael8b> for BinaryField8
impl From<Rijndael8b> for BinaryField8
Source§fn from(x: Rijndael8b) -> Self
fn from(x: Rijndael8b) -> Self
The same field element, seen in the tower basis.
Source§impl HasFrobenius<BinaryField8> for BinaryField16
impl HasFrobenius<BinaryField8> for BinaryField16
Source§fn repeated_frobenius(&self, count: usize) -> Self
fn repeated_frobenius(&self, count: usize) -> Self
count times. Read moreSource§fn pseudo_inv(&self) -> Self
fn pseudo_inv(&self) -> Self
Source§fn galois_orbit(self) -> Vec<Self>
fn galois_orbit(self) -> Vec<Self>
Source§impl HasFrobenius<BinaryField8> for BinaryField32
impl HasFrobenius<BinaryField8> for BinaryField32
Source§fn repeated_frobenius(&self, count: usize) -> Self
fn repeated_frobenius(&self, count: usize) -> Self
count times. Read moreSource§fn pseudo_inv(&self) -> Self
fn pseudo_inv(&self) -> Self
Source§fn galois_orbit(self) -> Vec<Self>
fn galois_orbit(self) -> Vec<Self>
Source§impl HasFrobenius<BinaryField8> for BinaryField64
impl HasFrobenius<BinaryField8> for BinaryField64
Source§fn repeated_frobenius(&self, count: usize) -> Self
fn repeated_frobenius(&self, count: usize) -> Self
count times. Read moreSource§fn pseudo_inv(&self) -> Self
fn pseudo_inv(&self) -> Self
Source§fn galois_orbit(self) -> Vec<Self>
fn galois_orbit(self) -> Vec<Self>
Source§impl HasFrobenius<BinaryField8> for BinaryField128
impl HasFrobenius<BinaryField8> for BinaryField128
Source§fn repeated_frobenius(&self, count: usize) -> Self
fn repeated_frobenius(&self, count: usize) -> Self
count times. Read moreSource§fn pseudo_inv(&self) -> Self
fn pseudo_inv(&self) -> Self
Source§fn galois_orbit(self) -> Vec<Self>
fn galois_orbit(self) -> Vec<Self>
Source§impl Hash for BinaryField8
impl Hash for BinaryField8
Source§impl Mul for BinaryField8
impl Mul for BinaryField8
Source§impl Mul<BinaryField8> for BinaryField16
impl Mul<BinaryField8> for BinaryField16
Source§type Output = BinaryField16
type Output = BinaryField16
* operator.Source§fn mul(self, rhs: BinaryField8) -> Self
fn mul(self, rhs: BinaryField8) -> Self
* operation. Read moreSource§impl Mul<BinaryField8> for BinaryField32
impl Mul<BinaryField8> for BinaryField32
Source§type Output = BinaryField32
type Output = BinaryField32
* operator.Source§fn mul(self, rhs: BinaryField8) -> Self
fn mul(self, rhs: BinaryField8) -> Self
* operation. Read moreSource§impl Mul<BinaryField8> for BinaryField64
impl Mul<BinaryField8> for BinaryField64
Source§type Output = BinaryField64
type Output = BinaryField64
* operator.Source§fn mul(self, rhs: BinaryField8) -> Self
fn mul(self, rhs: BinaryField8) -> Self
* operation. Read moreSource§impl Mul<BinaryField8> for BinaryField128
impl Mul<BinaryField8> for BinaryField128
Source§type Output = BinaryField128
type Output = BinaryField128
* operator.Source§fn mul(self, rhs: BinaryField8) -> Self
fn mul(self, rhs: BinaryField8) -> Self
* operation. Read moreSource§impl Mul<BinaryField8> for Ghash128
impl Mul<BinaryField8> for Ghash128
Source§impl Mul<BinaryField8> for Poly64
impl Mul<BinaryField8> for Poly64
Source§impl Mul<BinaryField8> for Gf2
impl Mul<BinaryField8> for Gf2
Source§type Output = BinaryField8
type Output = BinaryField8
* operator.Source§fn mul(self, rhs: BinaryField8) -> BinaryField8
fn mul(self, rhs: BinaryField8) -> BinaryField8
* operation. Read moreSource§impl Mul<BinaryField16> for BinaryField8
impl Mul<BinaryField16> for BinaryField8
Source§type Output = BinaryField16
type Output = BinaryField16
* operator.Source§fn mul(self, rhs: BinaryField16) -> BinaryField16
fn mul(self, rhs: BinaryField16) -> BinaryField16
* operation. Read moreSource§impl Mul<BinaryField32> for BinaryField8
impl Mul<BinaryField32> for BinaryField8
Source§type Output = BinaryField32
type Output = BinaryField32
* operator.Source§fn mul(self, rhs: BinaryField32) -> BinaryField32
fn mul(self, rhs: BinaryField32) -> BinaryField32
* operation. Read moreSource§impl Mul<BinaryField64> for BinaryField8
impl Mul<BinaryField64> for BinaryField8
Source§type Output = BinaryField64
type Output = BinaryField64
* operator.Source§fn mul(self, rhs: BinaryField64) -> BinaryField64
fn mul(self, rhs: BinaryField64) -> BinaryField64
* operation. Read moreSource§impl Mul<BinaryField128> for BinaryField8
impl Mul<BinaryField128> for BinaryField8
Source§type Output = BinaryField128
type Output = BinaryField128
* operator.Source§fn mul(self, rhs: BinaryField128) -> BinaryField128
fn mul(self, rhs: BinaryField128) -> BinaryField128
* operation. Read moreSource§impl Mul<Gf2> for BinaryField8
impl Mul<Gf2> for BinaryField8
Source§impl Mul<Ghash128> for BinaryField8
impl Mul<Ghash128> for BinaryField8
Source§impl Mul<Poly64> for BinaryField8
impl Mul<Poly64> for BinaryField8
Source§impl<T: Into<Self>> MulAssign<T> for BinaryField8
impl<T: Into<Self>> MulAssign<T> for BinaryField8
Source§fn mul_assign(&mut self, rhs: T)
fn mul_assign(&mut self, rhs: T)
*= operation. Read moreSource§impl Neg for BinaryField8
impl Neg for BinaryField8
Source§impl Ord for BinaryField8
impl Ord for BinaryField8
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
1.21.0 (const: unstable) · Source§fn min(self, other: Self) -> Selfwhere
Self: Sized,
fn min(self, other: Self) -> Selfwhere
Self: Sized,
impl Packable for BinaryField8
Source§impl PackedFieldExtension<BinaryField8, BinaryField16> for BinaryField16
A tower level packs one element per vector, so every lane index is 0.
impl PackedFieldExtension<BinaryField8, BinaryField16> for BinaryField16
A tower level packs one element per vector, so every lane index is 0.
Source§fn from_ext_fn(f: impl Fn(usize) -> Self) -> Self
fn from_ext_fn(f: impl Fn(usize) -> Self) -> Self
f to each lane. Read moreSource§fn from_ext_slice(slice: &[Self]) -> Self
fn from_ext_slice(slice: &[Self]) -> Self
WIDTH slice of extension field elements into one packed extension. Read moreSource§fn extract(&self, lane: usize) -> Self
fn extract(&self, lane: usize) -> Self
Source§fn add_assign_lane(&mut self, lane: usize, value: Self)
fn add_assign_lane(&mut self, lane: usize, value: Self)
Source§fn packed_ext_powers(base: Self) -> Powers<Self> ⓘ
fn packed_ext_powers(base: Self) -> Powers<Self> ⓘ
packed_powers, construct an iterator which returns
powers of base packed into PackedFieldExtension elements.Source§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 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§fn unpack_transpose_into(src: &[Self], dst: &mut [ExtField], src_width: usize)
fn unpack_transpose_into(src: &[Self], dst: &mut [ExtField], src_width: usize)
Source§impl PackedFieldExtension<BinaryField8, BinaryField32> for BinaryField32
A tower level packs one element per vector, so every lane index is 0.
impl PackedFieldExtension<BinaryField8, BinaryField32> for BinaryField32
A tower level packs one element per vector, so every lane index is 0.
Source§fn from_ext_fn(f: impl Fn(usize) -> Self) -> Self
fn from_ext_fn(f: impl Fn(usize) -> Self) -> Self
f to each lane. Read moreSource§fn from_ext_slice(slice: &[Self]) -> Self
fn from_ext_slice(slice: &[Self]) -> Self
WIDTH slice of extension field elements into one packed extension. Read moreSource§fn extract(&self, lane: usize) -> Self
fn extract(&self, lane: usize) -> Self
Source§fn add_assign_lane(&mut self, lane: usize, value: Self)
fn add_assign_lane(&mut self, lane: usize, value: Self)
Source§fn packed_ext_powers(base: Self) -> Powers<Self> ⓘ
fn packed_ext_powers(base: Self) -> Powers<Self> ⓘ
packed_powers, construct an iterator which returns
powers of base packed into PackedFieldExtension elements.Source§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 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§fn unpack_transpose_into(src: &[Self], dst: &mut [ExtField], src_width: usize)
fn unpack_transpose_into(src: &[Self], dst: &mut [ExtField], src_width: usize)
Source§impl PackedFieldExtension<BinaryField8, BinaryField64> for BinaryField64
A tower level packs one element per vector, so every lane index is 0.
impl PackedFieldExtension<BinaryField8, BinaryField64> for BinaryField64
A tower level packs one element per vector, so every lane index is 0.
Source§fn from_ext_fn(f: impl Fn(usize) -> Self) -> Self
fn from_ext_fn(f: impl Fn(usize) -> Self) -> Self
f to each lane. Read moreSource§fn from_ext_slice(slice: &[Self]) -> Self
fn from_ext_slice(slice: &[Self]) -> Self
WIDTH slice of extension field elements into one packed extension. Read moreSource§fn extract(&self, lane: usize) -> Self
fn extract(&self, lane: usize) -> Self
Source§fn add_assign_lane(&mut self, lane: usize, value: Self)
fn add_assign_lane(&mut self, lane: usize, value: Self)
Source§fn packed_ext_powers(base: Self) -> Powers<Self> ⓘ
fn packed_ext_powers(base: Self) -> Powers<Self> ⓘ
packed_powers, construct an iterator which returns
powers of base packed into PackedFieldExtension elements.Source§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 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§fn unpack_transpose_into(src: &[Self], dst: &mut [ExtField], src_width: usize)
fn unpack_transpose_into(src: &[Self], dst: &mut [ExtField], src_width: usize)
Source§impl PackedFieldExtension<BinaryField8, BinaryField128> for BinaryField128
A tower level packs one element per vector, so every lane index is 0.
impl PackedFieldExtension<BinaryField8, BinaryField128> for BinaryField128
A tower level packs one element per vector, so every lane index is 0.
Source§fn from_ext_fn(f: impl Fn(usize) -> Self) -> Self
fn from_ext_fn(f: impl Fn(usize) -> Self) -> Self
f to each lane. Read moreSource§fn from_ext_slice(slice: &[Self]) -> Self
fn from_ext_slice(slice: &[Self]) -> Self
WIDTH slice of extension field elements into one packed extension. Read moreSource§fn extract(&self, lane: usize) -> Self
fn extract(&self, lane: usize) -> Self
Source§fn add_assign_lane(&mut self, lane: usize, value: Self)
fn add_assign_lane(&mut self, lane: usize, value: Self)
Source§fn packed_ext_powers(base: Self) -> Powers<Self> ⓘ
fn packed_ext_powers(base: Self) -> Powers<Self> ⓘ
packed_powers, construct an iterator which returns
powers of base packed into PackedFieldExtension elements.Source§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 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§fn unpack_transpose_into(src: &[Self], dst: &mut [ExtField], src_width: usize)
fn unpack_transpose_into(src: &[Self], dst: &mut [ExtField], src_width: usize)
Source§impl PartialEq for BinaryField8
impl PartialEq for BinaryField8
Source§impl PartialOrd for BinaryField8
impl PartialOrd for BinaryField8
Source§impl PrimeCharacteristicRing for BinaryField8
impl PrimeCharacteristicRing for BinaryField8
Source§fn div_2exp_u64(&self, _exp: u64) -> Self
fn div_2exp_u64(&self, _exp: u64) -> Self
§Panics
Always panics: 2 is not invertible in characteristic 2.
Source§fn bool_check(&self) -> Self
fn bool_check(&self) -> Self
x·(x - 1) = x² - x = x² + x in characteristic 2, and squaring is a linear
map here, so this avoids the tower/polynomial basis changes a general product
pays for.
Source§type PrimeSubfield = Gf2
type PrimeSubfield = Gf2
ℤ/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 xor(&self, y: &Self) -> Self
fn xor(&self, y: &Self) -> Self
xor. Read moreSource§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 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 dot_product<const N: usize>(u: &[Self; N], v: &[Self; N]) -> Self
fn dot_product<const N: usize>(u: &[Self; N], v: &[Self; N]) -> 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 xor3(&self, y: &Self, z: &Self) -> Self
fn xor3(&self, y: &Self, z: &Self) -> Self
xor. Read moreSource§fn exp_const_u64<const POWER: u64>(&self) -> Self
fn exp_const_u64<const POWER: u64>(&self) -> Self
Source§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 Product for BinaryField8
impl Product for BinaryField8
Source§impl RawDataSerializable for BinaryField8
impl RawDataSerializable for BinaryField8
Source§const NUM_BYTES: usize
const NUM_BYTES: usize
Source§fn into_bytes(self) -> [u8; 1]
fn into_bytes(self) -> [u8; 1]
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_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_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§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_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§impl Serialize for BinaryField8
impl Serialize for BinaryField8
impl StructuralPartialEq for BinaryField8
Source§impl Sub for BinaryField8
impl Sub for BinaryField8
Source§impl Sub<BinaryField8> for BinaryField16
impl Sub<BinaryField8> for BinaryField16
Source§type Output = BinaryField16
type Output = BinaryField16
- operator.Source§fn sub(self, rhs: BinaryField8) -> Self
fn sub(self, rhs: BinaryField8) -> Self
- operation. Read moreSource§impl Sub<BinaryField8> for BinaryField32
impl Sub<BinaryField8> for BinaryField32
Source§type Output = BinaryField32
type Output = BinaryField32
- operator.Source§fn sub(self, rhs: BinaryField8) -> Self
fn sub(self, rhs: BinaryField8) -> Self
- operation. Read moreSource§impl Sub<BinaryField8> for BinaryField64
impl Sub<BinaryField8> for BinaryField64
Source§type Output = BinaryField64
type Output = BinaryField64
- operator.Source§fn sub(self, rhs: BinaryField8) -> Self
fn sub(self, rhs: BinaryField8) -> Self
- operation. Read moreSource§impl Sub<BinaryField8> for BinaryField128
impl Sub<BinaryField8> for BinaryField128
Source§type Output = BinaryField128
type Output = BinaryField128
- operator.Source§fn sub(self, rhs: BinaryField8) -> Self
fn sub(self, rhs: BinaryField8) -> Self
- operation. Read moreSource§impl Sub<BinaryField8> for Ghash128
impl Sub<BinaryField8> for Ghash128
Source§impl Sub<BinaryField8> for Poly64
impl Sub<BinaryField8> for Poly64
Source§impl Sub<BinaryField8> for Gf2
impl Sub<BinaryField8> for Gf2
Source§type Output = BinaryField8
type Output = BinaryField8
- operator.Source§impl Sub<BinaryField16> for BinaryField8
impl Sub<BinaryField16> for BinaryField8
Source§type Output = BinaryField16
type Output = BinaryField16
- operator.Source§impl Sub<BinaryField32> for BinaryField8
impl Sub<BinaryField32> for BinaryField8
Source§type Output = BinaryField32
type Output = BinaryField32
- operator.Source§impl Sub<BinaryField64> for BinaryField8
impl Sub<BinaryField64> for BinaryField8
Source§type Output = BinaryField64
type Output = BinaryField64
- operator.Source§impl Sub<BinaryField128> for BinaryField8
impl Sub<BinaryField128> for BinaryField8
Source§type Output = BinaryField128
type Output = BinaryField128
- operator.Source§impl Sub<Gf2> for BinaryField8
impl Sub<Gf2> for BinaryField8
Source§impl Sub<Ghash128> for BinaryField8
impl Sub<Ghash128> for BinaryField8
Source§impl Sub<Poly64> for BinaryField8
impl Sub<Poly64> for BinaryField8
Source§impl<T: Into<Self>> SubAssign<T> for BinaryField8
impl<T: Into<Self>> SubAssign<T> for BinaryField8
Source§fn sub_assign(&mut self, rhs: T)
fn sub_assign(&mut self, rhs: T)
-= operation. Read moreSource§impl Sum for BinaryField8
impl Sum for BinaryField8
Source§impl TowerLevel for BinaryField8
impl TowerLevel for BinaryField8
Source§fn from_repr(r: Self::Repr) -> Self
fn from_repr(r: Self::Repr) -> Self
2^LOG_BITS.Source§fn from_le_byte_iter(bytes: impl Iterator<Item = u8>) -> Self
fn from_le_byte_iter(bytes: impl Iterator<Item = u8>) -> Self
RawDataSerializable::NUM_BYTES bytes of a
little-endian byte stream, discarding the bits above 2^LOG_BITS. Read moreSource§fn cantor_basis(i: usize) -> Self
fn cantor_basis(i: usize) -> Self
i-th vector of the Cantor basis of this level. Read moreSource§impl TranscriptField for BinaryField8
impl TranscriptField for BinaryField8
Source§fn algebra_tag(degree: usize, basis: [u8; 32]) -> TypeTag
fn algebra_tag(degree: usize, basis: [u8; 32]) -> TypeTag
degree coefficients over this field.
basis is Keccak-256 of its p3_field::AlgebraIdentity bytes and must be
included unchanged in the returned tag.Source§fn observe_seed<C: CanObserve<Self>>(challenger: &mut C, bytes: &[u8])
fn observe_seed<C: CanObserve<Self>>(challenger: &mut C, bytes: &[u8])
Auto Trait Implementations§
impl Freeze for BinaryField8
impl RefUnwindSafe for BinaryField8
impl Send for BinaryField8
impl Sync for BinaryField8
impl Unpin for BinaryField8
impl UnsafeUnpin for BinaryField8
impl UnwindSafe for BinaryField8
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: &[R; N], f: &[R; N]) -> R
fn mixed_dot_product<const N: usize>(a: &[R; N], f: &[R; N]) -> R
Source§fn quadratic_extension_square(a: &[Self; 2], w: F) -> [Self; 2]
fn quadratic_extension_square(a: &[Self; 2], w: F) -> [Self; 2]
Source§const BATCHED_LC_CHUNK: usize = 8
const BATCHED_LC_CHUNK: usize = 8
batched_linear_combination. Read moreSource§impl<F> AlgebraIdentity<F> for Fwhere
F: PrimeCharacteristicRing,
impl<F> AlgebraIdentity<F> for Fwhere
F: PrimeCharacteristicRing,
Source§impl<F> BasedVectorSpace<F> for Fwhere
F: PrimeCharacteristicRing,
impl<F> BasedVectorSpace<F> for Fwhere
F: PrimeCharacteristicRing,
Source§const DIMENSION: usize = 1
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