Trait ark_ff::fields::models::quadratic_extension::QuadExtParameters[][src]

pub trait QuadExtParameters: 'static + Send + Sync + Sized {
    type BasePrimeField: PrimeField;
    type BaseField: Field<BasePrimeField = Self::BasePrimeField>;
    type FrobCoeff: Field;

    const DEGREE_OVER_BASE_PRIME_FIELD: usize;
    const NONRESIDUE: Self::BaseField;
    const FROBENIUS_COEFF_C1: &'static [Self::FrobCoeff];

    fn mul_base_field_by_frob_coeff(fe: &mut Self::BaseField, power: usize);

    fn mul_base_field_by_nonresidue(fe: &Self::BaseField) -> Self::BaseField { ... }
fn add_and_mul_base_field_by_nonresidue(
        x: &Self::BaseField,
        y: &Self::BaseField
    ) -> Self::BaseField { ... }
fn add_and_mul_base_field_by_nonresidue_plus_one(
        x: &Self::BaseField,
        y: &Self::BaseField
    ) -> Self::BaseField { ... }
fn sub_and_mul_base_field_by_nonresidue(
        x: &Self::BaseField,
        y: &Self::BaseField
    ) -> Self::BaseField { ... }
fn cyclotomic_exp(
        fe: &QuadExtField<Self>,
        exponent: impl AsRef<[u64]>
    ) -> QuadExtField<Self> { ... } }

Defines a Quadratic extension field from a quadratic non-residue.

Associated Types

type BasePrimeField: PrimeField[src]

The prime field that this quadratic extension is eventually an extension of.

type BaseField: Field<BasePrimeField = Self::BasePrimeField>[src]

The base field that this field is a quadratic extension of.

type FrobCoeff: Field[src]

The type of the coefficients for an efficient implemntation of the Frobenius endomorphism.

Loading content...

Associated Constants

const DEGREE_OVER_BASE_PRIME_FIELD: usize[src]

The degree of the extension over the base prime field.

const NONRESIDUE: Self::BaseField[src]

The quadratic non-residue used to construct the extension.

const FROBENIUS_COEFF_C1: &'static [Self::FrobCoeff][src]

Coefficients for the Frobenius automorphism.

Loading content...

Required methods

fn mul_base_field_by_frob_coeff(fe: &mut Self::BaseField, power: usize)[src]

A specializable method for multiplying an element of the base field by the appropriate Frobenius coefficient.

Loading content...

Provided methods

fn mul_base_field_by_nonresidue(fe: &Self::BaseField) -> Self::BaseField[src]

A specializable method for multiplying an element of the base field by the quadratic non-residue. This is used in Karatsuba multiplication and in complex squaring.

fn add_and_mul_base_field_by_nonresidue(
    x: &Self::BaseField,
    y: &Self::BaseField
) -> Self::BaseField
[src]

A specializable method for computing x + mul_base_field_by_nonresidue(y) This allows for optimizations when the non-residue is canonically negative in the field.

fn add_and_mul_base_field_by_nonresidue_plus_one(
    x: &Self::BaseField,
    y: &Self::BaseField
) -> Self::BaseField
[src]

A specializable method for computing x + mul_base_field_by_nonresidue(y) + y This allows for optimizations when the non-residue is not -1.

fn sub_and_mul_base_field_by_nonresidue(
    x: &Self::BaseField,
    y: &Self::BaseField
) -> Self::BaseField
[src]

A specializable method for computing x - mul_base_field_by_nonresidue(y) This allows for optimizations when the non-residue is canonically negative in the field.

fn cyclotomic_exp(
    fe: &QuadExtField<Self>,
    exponent: impl AsRef<[u64]>
) -> QuadExtField<Self>
[src]

A specializable method for exponentiating that is to be used only when fe is known to be in the cyclotommic subgroup.

Loading content...

Implementors

impl<P: Fp2Parameters> QuadExtParameters for Fp2ParamsWrapper<P>[src]

type BasePrimeField = P::Fp

type BaseField = P::Fp

type FrobCoeff = P::Fp

impl<P: Fp4Parameters> QuadExtParameters for Fp4ParamsWrapper<P>[src]

impl<P: Fp6Parameters> QuadExtParameters for Fp6ParamsWrapper<P>[src]

impl<P: Fp12Parameters> QuadExtParameters for Fp12ParamsWrapper<P>[src]

Loading content...