From 753389a2caa76e8e36b28f48abaf09c5b7ec4126 Mon Sep 17 00:00:00 2001 From: Linda Guiga <101227802+LindaGuiga@users.noreply.github.com> Date: Thu, 30 Jan 2025 21:02:20 +0100 Subject: [PATCH] Fix padding for LookupTableGate (#1661) --- plonky2/src/plonk/prover.rs | 1 - plonky2/src/plonk/vanishing_poly.rs | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/plonky2/src/plonk/prover.rs b/plonky2/src/plonk/prover.rs index 2b450b01e0..ff3bb0c641 100644 --- a/plonky2/src/plonk/prover.rs +++ b/plonky2/src/plonk/prover.rs @@ -94,7 +94,6 @@ pub fn set_lookup_wires< multiplicities[0] += 1; } - // We don't need to pad the last `LookupTableGate`; extra wires are set to 0 by default, which satisfies the constraints. for lut_entry in 0..lut_len { let row = first_lut_gate - lut_entry / num_lut_entries; let col = lut_entry % num_lut_entries; diff --git a/plonky2/src/plonk/vanishing_poly.rs b/plonky2/src/plonk/vanishing_poly.rs index 5d26f68e06..48179ce638 100644 --- a/plonky2/src/plonk/vanishing_poly.rs +++ b/plonky2/src/plonk/vanishing_poly.rs @@ -36,8 +36,8 @@ pub(crate) fn get_lut_poly, const D: usize>( let b = deltas[LookupChallenges::ChallengeB as usize]; let mut coeffs = Vec::with_capacity(common_data.luts[lut_index].len()); let n = common_data.luts[lut_index].len(); - let nb_padded_elts = LookupTableGate::num_slots(&common_data.config) - - n % LookupTableGate::num_slots(&common_data.config); + let nb_slots = LookupTableGate::num_slots(&common_data.config); + let nb_padded_elts = (nb_slots - n % nb_slots) % nb_slots; let (padding_inp, padding_out) = common_data.luts[lut_index][0]; for (input, output) in common_data.luts[lut_index].iter() { coeffs.push(F::from_canonical_u16(*input) + b * F::from_canonical_u16(*output)); @@ -763,8 +763,8 @@ pub(crate) fn get_lut_poly_circuit, const D: usize> let b = deltas[LookupChallenges::ChallengeB as usize]; let delta = deltas[LookupChallenges::ChallengeDelta as usize]; let n = common_data.luts[lut_index].len(); - let nb_padded_elts = LookupTableGate::num_slots(&common_data.config) - - n % LookupTableGate::num_slots(&common_data.config); + let nb_slots = LookupTableGate::num_slots(&common_data.config); + let nb_padded_elts = (nb_slots - n % nb_slots) % nb_slots; let (padding_inp, padding_out) = common_data.luts[lut_index][0]; let mut coeffs: Vec = common_data.luts[lut_index] .iter()