Use ArithmeticGate for select

This commit is contained in:
wborgeaud 2022-10-05 16:42:55 +02:00
parent 66c21931ce
commit ce0a4f4480
2 changed files with 4 additions and 5 deletions

View File

@ -32,9 +32,8 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
/// See `select_ext`.
pub fn select(&mut self, b: BoolTarget, x: Target, y: Target) -> Target {
let x_ext = self.convert_to_ext(x);
let y_ext = self.convert_to_ext(y);
self.select_ext(b, x_ext, y_ext).to_target_array()[0]
let tmp = self.mul_sub(b.target, y, y);
self.mul_sub(b.target, x, tmp)
}
}

View File

@ -24,7 +24,7 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
proof_with_pis0: ProofWithPublicInputsTarget<D>,
inner_verifier_data0: &VerifierCircuitTarget,
proof_with_pis1: ProofWithPublicInputsTarget<D>,
verifier_data1: &VerifierCircuitTarget,
inner_verifier_data1: &VerifierCircuitTarget,
inner_common_data: &CommonCircuitData<F, C, D>,
) where
C::Hasher: AlgebraicHasher<F>,
@ -82,7 +82,7 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
constants_sigmas_cap: self.select_cap(
condition,
inner_verifier_data0.constants_sigmas_cap.clone(),
verifier_data1.constants_sigmas_cap.clone(),
inner_verifier_data1.constants_sigmas_cap.clone(),
),
};