plonky2/u32/src/gadgets/range_check.rs

24 lines
736 B
Rust
Raw Normal View History

use alloc::vec;
use alloc::vec::Vec;
use plonky2::field::extension::Extendable;
2022-04-06 08:50:45 +02:00
use plonky2::hash::hash_types::RichField;
use plonky2::iop::target::Target;
use plonky2::plonk::circuit_builder::CircuitBuilder;
use crate::gadgets::arithmetic_u32::U32Target;
use crate::gates::range_check_u32::U32RangeCheckGate;
pub fn range_check_u32_circuit<F: RichField + Extendable<D>, const D: usize>(
builder: &mut CircuitBuilder<F, D>,
vals: Vec<U32Target>,
) {
let num_input_limbs = vals.len();
let gate = U32RangeCheckGate::<F, D>::new(num_input_limbs);
2022-05-17 19:32:51 +02:00
let row = builder.add_gate(gate, vec![]);
2022-04-06 08:50:45 +02:00
for i in 0..num_input_limbs {
2022-05-17 19:32:51 +02:00
builder.connect(Target::wire(row, gate.wire_ith_input_limb(i)), vals[i].0);
2022-04-06 08:50:45 +02:00
}
}