binius_core::polynomial::multivariate

Trait MultivariatePoly

source
pub trait MultivariatePoly<P>:
    Debug
    + Send
    + Sync {
    // Required methods
    fn n_vars(&self) -> usize;
    fn degree(&self) -> usize;
    fn evaluate(&self, query: &[P]) -> Result<P, Error>;
    fn binary_tower_level(&self) -> usize;
}
Expand description

A multivariate polynomial over a binary tower field.

The definition MultivariatePoly is nearly identical to that of CompositionPolyOS, except that MultivariatePoly is object safe, whereas CompositionPolyOS is not.

Required Methods§

source

fn n_vars(&self) -> usize

The number of variables.

source

fn degree(&self) -> usize

Total degree of the polynomial.

source

fn evaluate(&self, query: &[P]) -> Result<P, Error>

Evaluate the polynomial at a point in the extension field.

source

fn binary_tower_level(&self) -> usize

Returns the maximum binary tower level of all constants in the arithmetic expression.

Implementors§

source§

impl<F> MultivariatePoly<F> for TowerBasis<F>
where F: TowerField,

source§

impl<F, P, PE, Data> MultivariatePoly<F> for MultilinearExtensionTransparent<P, PE, Data>
where F: TowerField + ExtensionField<P::Scalar>, P: PackedField, PE: PackedField<Scalar = F> + RepackedExtension<P>, Data: Deref<Target = [P]> + Send + Sync + Debug,

source§

impl<F: TowerField> MultivariatePoly<F> for Constant<F>

source§

impl<F: TowerField> MultivariatePoly<F> for ShiftIndPartialEval<F>

source§

impl<F: TowerField, P: PackedField<Scalar = F>> MultivariatePoly<P> for EqIndPartialEval<F>

source§

impl<F: TowerField, P: PackedField<Scalar = F>> MultivariatePoly<P> for Powers<F>

source§

impl<F: Field> MultivariatePoly<F> for SelectRow

source§

impl<F: Field> MultivariatePoly<F> for StepDown

source§

impl<F: Field> MultivariatePoly<F> for StepUp

source§

impl<F: Field, P0, P1> MultivariatePoly<F> for DisjointProduct<P0, P1>
where P0: MultivariatePoly<F>, P1: MultivariatePoly<F>,

source§

impl<FS, F> MultivariatePoly<F> for RingSwitchEqInd<FS, F>
where FS: TowerField, F: ExtensionField<FS> + PackedField<Scalar = F> + PackedExtension<FS> + TowerField,

source§

impl<Tower> MultivariatePoly<<Tower as TowerFamily>::B128> for TowerRingSwitchEqInd<Tower>
where Tower: TowerFamily + Debug, Tower::B128: PackedField<Scalar = Tower::B128> + PackedExtension<Tower::B1> + PackedExtension<Tower::B8> + PackedExtension<Tower::B16> + PackedExtension<Tower::B32> + PackedExtension<Tower::B64> + PackedExtension<Tower::B128>,