Skip to main content

sumcheck_uni_round0_poly

Function sumcheck_uni_round0_poly 

Source
pub fn sumcheck_uni_round0_poly<F, EF, FN, const WD: usize>(
    l_skip: usize,
    n: usize,
    d: usize,
    mats: &[(StridedColMajorMatrixView<'_, F>, bool)],
    w: FN,
) -> [UnivariatePoly<EF>; WD]
where F: TwoAdicField, EF: ExtensionField<F> + TwoAdicField, FN: Fn(F, usize, &[Vec<F>]) -> [EF; WD] + Sync,
Expand description

The univariate skip round 0: we want to compute the univariate polynomial s(Z) = sum_{x \in H_n} \hat{f}(Z, x). For this function, assume that \hat{f}(\vec z) = \hat\eps(\vec z) W(\hat{T}_0(\vec z), .., \hat{T}_{m-1}(\vec z)) for a sequence of \hat{T}_i where each \hat{T}_i consists of a collection of prismalinear polynomials in n + 1 variables, with degree < 2^{l_skip} in the first variable.

The mats consists of the evaluations of \hat{T}_i on the hyperprism D_n, where evaluations of each \hat{T}_i are in column-major order. For round 0, we also provide a boolean is_rotation indicating whether the matrix should be accessed at a cyclic offset of 1 (aka rotation).

eps is a single column vector of evaluations on D_n, except valued in extension field.

Let W be degree d in each variable. Then s is degree <= d * (2^{l_skip} - 1), so it can be interpolated using d * (2^{l_skip} - 1) + 1 points.

This function returns s in coefficient form.

If n > 0, then all mats should have the same height equal to 2^{l_skip + n}. If n = 0, then all mats should have height <= 2^{l_skip} and they will be univariate lifted to height 2^l_skip.