From 350b9029989a433480152efb00fa3300235fa578 Mon Sep 17 00:00:00 2001 From: Sladuca Date: Wed, 28 Dec 2022 11:30:24 -0500 Subject: [PATCH] add or gadget --- plonky2/src/gadgets/arithmetic.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plonky2/src/gadgets/arithmetic.rs b/plonky2/src/gadgets/arithmetic.rs index 39755bd4..e7b124b9 100644 --- a/plonky2/src/gadgets/arithmetic.rs +++ b/plonky2/src/gadgets/arithmetic.rs @@ -337,6 +337,12 @@ impl, const D: usize> CircuitBuilder { BoolTarget::new_unsafe(self.mul(b1.target, b2.target)) } + // computes the arithmetic extension of logical "or": `b1 + b2 - b1 * b2` + pub fn or(&mut self, b1: BoolTarget, b2: BoolTarget) -> BoolTarget { + let res_minus_b2 = self.arithmetic(-F::ONE, F::ONE, b1.target, b2.target, b1.target); + BoolTarget::new_unsafe(self.add(res_minus_b2, b2.target)) + } + pub fn _if(&mut self, b: BoolTarget, x: Target, y: Target) -> Target { let not_b = self.not(b); let maybe_x = self.mul(b.target, x);