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]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.