Skip to main content

sumcheck_round_poly_evals

Function sumcheck_round_poly_evals 

Source
pub fn sumcheck_round_poly_evals<F, FN, const WD: usize>(
    n: usize,
    d: usize,
    mats: &[ColMajorMatrixView<'_, F>],
    w: FN,
) -> [Vec<F>; WD]
where F: Field, FN: Fn(F, usize, &[Vec<F>]) -> [F; WD] + Sync,
Expand description

For a sumcheck round, we want to compute the univariate polynomial s(X) = sum_{y \in H_{n-1}} \hat{f}(X, y). For this function, assume that \hat{f}(\vec x) = W(\hat{T}_0(\vec x), .., \hat{T}_{m-1}(\vec x)) for a sequence of \hat{T}_i where each \hat{T}_i consists of a collection of MLE polynomials in n variables.

The mats consists of the evaluations of \hat{T}_i on the hypercube H_n, where evaluations of each \hat{T}_i are in column-major order.

Let W be degree d in each variable. Then s is degree d, so it can be interpolated using d + 1 points. This function returns the evaluations of s at {1, ..., d}. The evaluation at 0 is omitted because our use of sumcheck always leaves the verifier to infer the evaluation at 0 from the previous round’s claim.

The generic WF is a closure {\hat{T}_i(X, y)}_i -> W(\hat{T}_0(X, y), .., \hat{T}_{m-1}(X, y)).

This function should not be used for the univariate skip round.