pub trait SumcheckEvaluator<PBase: PackedField, P: PackedField> {
// Required methods
fn eval_point_indices(&self) -> Range<usize>;
fn process_subcube_at_eval_point(
&self,
subcube_vars: usize,
subcube_index: usize,
sparse_batch_query: &[&[PBase]],
) -> P;
fn round_evals_to_coeffs(
&self,
last_sum: P::Scalar,
round_evals: Vec<P::Scalar>,
) -> Result<Vec<P::Scalar>, PolynomialError>;
}
Required Methods§
sourcefn eval_point_indices(&self) -> Range<usize>
fn eval_point_indices(&self) -> Range<usize>
The range of eval point indices over which composition evaluation and summation should happen.
Returned range must equal the result of n_round_evals()
in length.
sourcefn process_subcube_at_eval_point(
&self,
subcube_vars: usize,
subcube_index: usize,
sparse_batch_query: &[&[PBase]],
) -> P
fn process_subcube_at_eval_point( &self, subcube_vars: usize, subcube_index: usize, sparse_batch_query: &[&[PBase]], ) -> P
Compute composition evals over a subcube.
sparse_batch_query
should contain multilinears evals over a subcube represented
by subcube_vars
and subcube_index
.
Returns a packed sum (which may be spread across scalars).
sourcefn round_evals_to_coeffs(
&self,
last_sum: P::Scalar,
round_evals: Vec<P::Scalar>,
) -> Result<Vec<P::Scalar>, PolynomialError>
fn round_evals_to_coeffs( &self, last_sum: P::Scalar, round_evals: Vec<P::Scalar>, ) -> Result<Vec<P::Scalar>, PolynomialError>
Given evaluations of the round polynomial, interpolate and return monomial coefficients
§Arguments
round_evals
: the computed evaluations of the round polynomial