Skip to main content

pushforward

Function pushforward 

Source
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 than 2^table_n_vars.