Skip to main content

combined_lookers

Function combined_lookers 

Source
pub fn combined_lookers<A, F, P>(
    alloc: &A,
    gamma: F,
    tables: &[TableLookup<'_, P>],
) -> (Vec<Vec<FieldVec<P, A>>>, Vec<FieldVec<P, A>>)
where A: Allocator, F: Field, P: PackedField<Scalar = F>,
Expand description

Build each table’s gamma-scaled looker numerators and its combined pushforward Y.

Within a table, looker i’s numerator is gamma^i * eq_{r_i}, the scaled equality indicator its fractional-addition circuit runs over, so the fractional sum of that table’s looker circuits is the gamma-combination of their sums. The table’s pushforward is the scatter of those same numerators:

    Y = sum_i gamma^i * (I_i)_* eq_{r_i}

Each table uses its own gamma, so the tables share nothing here.

Both the numerators and the pushforwards are drawn from alloc: the numerators become the leaf layers of the per-looker fractional-addition circuits, and a committing caller hands the pushforwards to the channel, which owns them until the openings run.

§Preconditions

  • tables is non-empty, every table has at least one looker, every looker’s index column has 2^n entries for its own evaluation point length n, and every index entry is less than its table’s size.

§Panics

Panics if any precondition is violated.