From be9ea35a15784248c4d5da19d845167d490db3b6 Mon Sep 17 00:00:00 2001 From: Balazs Komuves Date: Fri, 6 Dec 2024 14:12:42 +0100 Subject: [PATCH] band-aid quick fix for https://github.com/0xPolygonZero/plonky2/issues/1641 --- plonky2/src/gates/lookup.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/plonky2/src/gates/lookup.rs b/plonky2/src/gates/lookup.rs index 7069113b..2bd3e60f 100644 --- a/plonky2/src/gates/lookup.rs +++ b/plonky2/src/gates/lookup.rs @@ -201,8 +201,14 @@ impl, const D: usize> SimpleGenerator for Loo let get_wire = |wire: usize| -> F { witness.get_target(Target::wire(self.row, wire)) }; let input_val = get_wire(LookupGate::wire_ith_looking_inp(self.slot_nb)); - let (input, output) = self.lut[input_val.to_canonical_u64() as usize]; - if input_val == F::from_canonical_u16(input) { + let idx_candidate: usize = input_val.to_canonical_u64() as usize; + let ((input, output), ok) = if idx_candidate < self.lut.len() { + (self.lut[idx_candidate], true) + } + else { + ((0,0), false) + }; + if ok && (input_val == F::from_canonical_u16(input)) { let output_val = F::from_canonical_u16(output); let out_wire = Target::wire(self.row, LookupGate::wire_ith_looking_out(self.slot_nb));