pub struct QuadraticExtensionField<T> { /* private fields */ }
Expand description
A general quadratic extension field over F
with quadratic non residue Q::residue()
Trait Implementations§
source§impl<T: Clone> Clone for QuadraticExtensionField<T>
impl<T: Clone> Clone for QuadraticExtensionField<T>
source§fn clone(&self) -> QuadraticExtensionField<T>
fn clone(&self) -> QuadraticExtensionField<T>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<T: Debug> Debug for QuadraticExtensionField<T>
impl<T: Debug> Debug for QuadraticExtensionField<T>
source§impl<Q> IsField for QuadraticExtensionField<Q>where
Q: Clone + Debug + HasQuadraticNonResidue,
impl<Q> IsField for QuadraticExtensionField<Q>where Q: Clone + Debug + HasQuadraticNonResidue,
source§fn add(
a: &[FieldElement<Q::BaseField>; 2],
b: &[FieldElement<Q::BaseField>; 2]
) -> [FieldElement<Q::BaseField>; 2]
fn add( a: &[FieldElement<Q::BaseField>; 2], b: &[FieldElement<Q::BaseField>; 2] ) -> [FieldElement<Q::BaseField>; 2]
Returns the component wise addition of a
and b
source§fn mul(
a: &[FieldElement<Q::BaseField>; 2],
b: &[FieldElement<Q::BaseField>; 2]
) -> [FieldElement<Q::BaseField>; 2]
fn mul( a: &[FieldElement<Q::BaseField>; 2], b: &[FieldElement<Q::BaseField>; 2] ) -> [FieldElement<Q::BaseField>; 2]
Returns the multiplication of a
and b
using the following
equation:
(a0 + a1 * t) * (b0 + b1 * t) = a0 * b0 + a1 * b1 * Q::residue() + (a0 * b1 + a1 * b0) * t
where t.pow(2)
equals Q::residue()
.
source§fn sub(
a: &[FieldElement<Q::BaseField>; 2],
b: &[FieldElement<Q::BaseField>; 2]
) -> [FieldElement<Q::BaseField>; 2]
fn sub( a: &[FieldElement<Q::BaseField>; 2], b: &[FieldElement<Q::BaseField>; 2] ) -> [FieldElement<Q::BaseField>; 2]
Returns the component wise subtraction of a
and b
source§fn neg(a: &[FieldElement<Q::BaseField>; 2]) -> [FieldElement<Q::BaseField>; 2]
fn neg(a: &[FieldElement<Q::BaseField>; 2]) -> [FieldElement<Q::BaseField>; 2]
Returns the component wise negation of a
source§fn inv(
a: &[FieldElement<Q::BaseField>; 2]
) -> Result<[FieldElement<Q::BaseField>; 2], FieldError>
fn inv( a: &[FieldElement<Q::BaseField>; 2] ) -> Result<[FieldElement<Q::BaseField>; 2], FieldError>
Returns the multiplicative inverse of a
This uses the equality (a0 + a1 * t) * (a0 - a1 * t) = a0.pow(2) - a1.pow(2) * Q::residue()
source§fn div(
a: &[FieldElement<Q::BaseField>; 2],
b: &[FieldElement<Q::BaseField>; 2]
) -> [FieldElement<Q::BaseField>; 2]
fn div( a: &[FieldElement<Q::BaseField>; 2], b: &[FieldElement<Q::BaseField>; 2] ) -> [FieldElement<Q::BaseField>; 2]
Returns the division of a
and b
source§fn eq(
a: &[FieldElement<Q::BaseField>; 2],
b: &[FieldElement<Q::BaseField>; 2]
) -> bool
fn eq( a: &[FieldElement<Q::BaseField>; 2], b: &[FieldElement<Q::BaseField>; 2] ) -> bool
Returns a boolean indicating whether a
and b
are equal component wise.
source§fn zero() -> [FieldElement<Q::BaseField>; 2]
fn zero() -> [FieldElement<Q::BaseField>; 2]
Returns the additive neutral element of the field extension.
source§fn one() -> [FieldElement<Q::BaseField>; 2]
fn one() -> [FieldElement<Q::BaseField>; 2]
Returns the multiplicative neutral element of the field extension.
source§fn from_u64(x: u64) -> Self::BaseType
fn from_u64(x: u64) -> Self::BaseType
Returns the element x * 1
where 1 is the multiplicative neutral element.
source§fn from_base_type(
x: [FieldElement<Q::BaseField>; 2]
) -> [FieldElement<Q::BaseField>; 2]
fn from_base_type( x: [FieldElement<Q::BaseField>; 2] ) -> [FieldElement<Q::BaseField>; 2]
Takes as input an element of BaseType and returns the internal representation of that element in the field. Note: for this case this is simply the identity, because the components already have correct representations.
§type BaseType = [FieldElement<<Q as HasQuadraticNonResidue>::BaseField>; 2]
type BaseType = [FieldElement<<Q as HasQuadraticNonResidue>::BaseField>; 2]
source§fn square(
a: &[FieldElement<Q::BaseField>; 2]
) -> [FieldElement<Q::BaseField>; 2]
fn square( a: &[FieldElement<Q::BaseField>; 2] ) -> [FieldElement<Q::BaseField>; 2]
a
and a
.fn pow<T>(a: &Self::BaseType, exponent: T) -> Self::BaseTypewhere T: IsUnsignedInteger,
source§impl<T: PartialEq> PartialEq for QuadraticExtensionField<T>
impl<T: PartialEq> PartialEq for QuadraticExtensionField<T>
source§fn eq(&self, other: &QuadraticExtensionField<T>) -> bool
fn eq(&self, other: &QuadraticExtensionField<T>) -> bool
self
and other
values to be equal, and is used
by ==
.