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 CompositionPoly, except that MultivariatePoly is object safe, whereas CompositionPoly 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, Backend, Data> MultivariatePoly<F> for MultilinearExtensionTransparent<P, PE, Backend, Data>
where F: TowerField + ExtensionField<P::Scalar>, P: PackedField, PE: PackedField<Scalar = F>, Backend: ComputationBackend, 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: Field> MultivariatePoly<F> for SelectRow

source§

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

source§

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