Skip to main content

ExtensionAlgebra

Trait ExtensionAlgebra 

Source
pub trait ExtensionAlgebra<F, const D: usize, Shape>: Algebra<F>
where F: Field, Shape: ExtensionShape,
{ // Required method fn ext_mul(a: &[Self; D], b: &[Self; D], res: &mut [Self; D]); // Provided methods fn ext_square(a: &[Self; D], res: &mut [Self; D]) { ... } fn ext_add(a: &[Self; D], b: &[Self; D]) -> [Self; D] { ... } fn ext_sub(a: &[Self; D], b: &[Self; D]) -> [Self; D] { ... } fn ext_base_mul(lhs: [Self; D], rhs: Self) -> [Self; D] { ... } }
Expand description

Algebra over F that supports degree-D extension arithmetic with a given reducer Shape.

Required Methods§

Source

fn ext_mul(a: &[Self; D], b: &[Self; D], res: &mut [Self; D])

Multiplication in the algebra extension ring.

Provided Methods§

Source

fn ext_square(a: &[Self; D], res: &mut [Self; D])

Squaring in the algebra extension ring.

Override when a dedicated symmetry-exploiting kernel beats a general multiply.

Source

fn ext_add(a: &[Self; D], b: &[Self; D]) -> [Self; D]

Coefficient-wise addition.

Source

fn ext_sub(a: &[Self; D], b: &[Self; D]) -> [Self; D]

Coefficient-wise subtraction.

Source

fn ext_base_mul(lhs: [Self; D], rhs: Self) -> [Self; D]

Multiply an extension element by a base-field scalar.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl ExtensionAlgebra<Goldilocks, 2, Binomial<Goldilocks>> for Goldilocks

Source§

fn ext_mul(a: &[Goldilocks; 2], b: &[Goldilocks; 2], res: &mut [Goldilocks; 2])

Source§

impl ExtensionAlgebra<Goldilocks, 3, CubicTrinomial> for Goldilocks

Source§

fn ext_mul(a: &[Goldilocks; 3], b: &[Goldilocks; 3], res: &mut [Goldilocks; 3])

Source§

fn ext_square(a: &[Goldilocks; 3], res: &mut [Goldilocks; 3])

Source§

impl ExtensionAlgebra<Goldilocks, 5, Binomial<Goldilocks>> for Goldilocks

Source§

fn ext_mul(a: &[Goldilocks; 5], b: &[Goldilocks; 5], res: &mut [Goldilocks; 5])

Source§

impl<FP> ExtensionAlgebra<MontyField31<FP>, 5, QuinticTrinomial> for MontyField31<FP>

Source§

fn ext_mul( a: &[MontyField31<FP>; 5], b: &[MontyField31<FP>; 5], res: &mut [MontyField31<FP>; 5], )

Source§

fn ext_add( a: &[MontyField31<FP>; 5], b: &[MontyField31<FP>; 5], ) -> [MontyField31<FP>; 5]

Source§

fn ext_sub( a: &[MontyField31<FP>; 5], b: &[MontyField31<FP>; 5], ) -> [MontyField31<FP>; 5]

Source§

fn ext_base_mul( lhs: [MontyField31<FP>; 5], rhs: MontyField31<FP>, ) -> [MontyField31<FP>; 5]

Source§

impl<const WIDTH: usize, FP> ExtensionAlgebra<MontyField31<FP>, WIDTH, Binomial<MontyField31<FP>>> for MontyField31<FP>

Source§

fn ext_mul( a: &[MontyField31<FP>; WIDTH], b: &[MontyField31<FP>; WIDTH], res: &mut [MontyField31<FP>; WIDTH], )

Source§

fn ext_add( a: &[MontyField31<FP>; WIDTH], b: &[MontyField31<FP>; WIDTH], ) -> [MontyField31<FP>; WIDTH]

Source§

fn ext_sub( a: &[MontyField31<FP>; WIDTH], b: &[MontyField31<FP>; WIDTH], ) -> [MontyField31<FP>; WIDTH]

Source§

fn ext_base_mul( lhs: [MontyField31<FP>; WIDTH], rhs: MontyField31<FP>, ) -> [MontyField31<FP>; WIDTH]

Implementors§