pub fn pushforward<F, P>(
eq_r: &FieldBuffer<P>,
index: &[usize],
table_n_vars: usize,
) -> FieldBuffer<P>where
F: Field,
P: PackedField<Scalar = F>,Expand description
Build the pushforward Y = I_* eq_r over the m-variable table cube.
Y[j] = sum_{i : index[i] = j} eq_r[i]Y is the dual of the pullback under the inner product, so <T, Y> = (I^* T)(eval_point).
It has only 2^m entries, which is the cost saving over committing the 2^n-entry pullback.
This is the single-looker scatter. The prover combines many lookers by summing their scatters onto the same cube.
ยงPreconditions
- every
index[i]is less than2^table_n_vars.