Skip to main content

BinomiallyExtendable

Trait BinomiallyExtendable 

pub trait BinomiallyExtendable<const D: usize>: Field + BinomiallyExtendableAlgebra<Self, D> {
    const W: Self;
    const DTH_ROOT: Self;
    const EXT_GENERATOR: [Self; D];
}
Expand description

Trait for fields that support binomial extension of the form F[X]/(X^D - W).

A type implementing this trait can define a degree-D extension field using an irreducible binomial polynomial X^D - W, where W is a nonzero constant in the base field.

This is used to construct extension fields with efficient arithmetic.

Required Associated Constants§

const W: Self

The constant coefficient W in the binomial X^D - W.

const DTH_ROOT: Self

A D-th root of unity derived from W.

This is W^((n - 1)/D), where n is the order of the field. Valid only when n = kD + 1 for some k.

const EXT_GENERATOR: [Self; D]

A generator for the extension field, expressed as a degree-D polynomial.

This is an array of size D, where each entry is a base field element.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

§

impl BinomiallyExtendable<2> for Felt

§

const W: Felt

§

const DTH_ROOT: Felt

§

const EXT_GENERATOR: [Felt; 2]

§

impl BinomiallyExtendable<2> for Goldilocks

§

const W: Goldilocks

§

const DTH_ROOT: Goldilocks

§

const EXT_GENERATOR: [Goldilocks; 2]

§

impl BinomiallyExtendable<5> for Felt

§

const W: Felt

§

const DTH_ROOT: Felt

§

const EXT_GENERATOR: [Felt; 5]

§

impl BinomiallyExtendable<5> for Goldilocks

§

const W: Goldilocks

§

const DTH_ROOT: Goldilocks

§

const EXT_GENERATOR: [Goldilocks; 5]

§

impl<const WIDTH: usize, FP> BinomiallyExtendable<WIDTH> for MontyField31<FP>
where FP: BinomialExtensionData<WIDTH> + FieldParameters,

§

const W: MontyField31<FP> = FP::W

§

const DTH_ROOT: MontyField31<FP> = FP::DTH_ROOT

§

const EXT_GENERATOR: [MontyField31<FP>; WIDTH] = FP::EXT_GENERATOR

Implementors§

§

impl<F> BinomiallyExtendable<2> for F
where F: ComplexExtendable,

§

const W: F = F::NEG_ONE

§

const DTH_ROOT: F = F::NEG_ONE

§

const EXT_GENERATOR: [F; 2]

§

impl<F, const D: usize> BinomiallyExtendable<D> for BinomialExtensionField<F, 2>
where F: HasComplexBinomialExtension<D>,

§

const W: BinomialExtensionField<F, 2>

§

const DTH_ROOT: BinomialExtensionField<F, 2>

§

const EXT_GENERATOR: [BinomialExtensionField<F, 2>; D] = F::EXT_GENERATOR