MuAlgebra

Trait MuAlgebra 

Source
pub trait MuAlgebra<const U: bool>: Algebra {
    // Required methods
    fn dimension_unstable(&self, degree: i32, excess: i32) -> usize;
    fn multiply_basis_elements_unstable(
        &self,
        result: FpSliceMut<'_>,
        coeff: u32,
        r_degree: i32,
        r_index: usize,
        s_degree: i32,
        s_index: usize,
        excess: i32,
    );
    fn multiply_basis_element_by_element_unstable(
        &self,
        result: FpSliceMut<'_>,
        coeff: u32,
        r_degree: i32,
        r_idx: usize,
        s_degree: i32,
        s: FpSlice<'_>,
        excess: i32,
    );
    fn multiply_element_by_basis_element_unstable(
        &self,
        result: FpSliceMut<'_>,
        coeff: u32,
        r_degree: i32,
        r: FpSlice<'_>,
        s_degree: i32,
        s_idx: usize,
        excess: i32,
    );
    fn multiply_element_by_element_unstable(
        &self,
        result: FpSliceMut<'_>,
        coeff: u32,
        r_degree: i32,
        r: FpSlice<'_>,
        s_degree: i32,
        s: FpSlice<'_>,
        excess: i32,
    );
}
Expand description

An algebra that is maybe unstable.

Every Algebra implements MuAlgebra<false> by ignoring the excess parameter, and every UnstableAlgebra implements MuAlgebra<true>. This makes it possible to write code that is generic over stable and unstable algebras.

Required Methods§

Source

fn dimension_unstable(&self, degree: i32, excess: i32) -> usize

Source

fn multiply_basis_elements_unstable( &self, result: FpSliceMut<'_>, coeff: u32, r_degree: i32, r_index: usize, s_degree: i32, s_index: usize, excess: i32, )

Source

fn multiply_basis_element_by_element_unstable( &self, result: FpSliceMut<'_>, coeff: u32, r_degree: i32, r_idx: usize, s_degree: i32, s: FpSlice<'_>, excess: i32, )

Source

fn multiply_element_by_basis_element_unstable( &self, result: FpSliceMut<'_>, coeff: u32, r_degree: i32, r: FpSlice<'_>, s_degree: i32, s_idx: usize, excess: i32, )

Computes the product r * s of a general element r and a basis element s, and adds the result to result.

Neither result nor r must be aligned.

Source

fn multiply_element_by_element_unstable( &self, result: FpSliceMut<'_>, coeff: u32, r_degree: i32, r: FpSlice<'_>, s_degree: i32, s: FpSlice<'_>, excess: i32, )

Computes the product r * s of two general elements, and adds the result to result.

Neither result, s, nor r must be aligned.

Implementors§

Source§

impl<A: Algebra> MuAlgebra<false> for A

Source§

impl<A: UnstableAlgebra> MuAlgebra<true> for A