mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-06 15:53:10 +00:00
Change number of coeffs supported in ReducingGate depending on config
This commit is contained in:
parent
c16d93ab33
commit
5a16d7c555
@ -20,6 +20,10 @@ impl<const D: usize> ReducingGate<D> {
|
|||||||
Self { num_coeffs }
|
Self { num_coeffs }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn max_coeffs_len(num_wires: usize, num_routed_wires: usize) -> usize {
|
||||||
|
(num_routed_wires - 3 * D).min((num_wires - 3 * D) / (D + 1))
|
||||||
|
}
|
||||||
|
|
||||||
pub fn wires_output() -> Range<usize> {
|
pub fn wires_output() -> Range<usize> {
|
||||||
0..D
|
0..D
|
||||||
}
|
}
|
||||||
|
|||||||
@ -100,7 +100,10 @@ impl<const D: usize> ReducingFactorTarget<D> {
|
|||||||
where
|
where
|
||||||
F: Extendable<D>,
|
F: Extendable<D>,
|
||||||
{
|
{
|
||||||
let max_coeffs = 21;
|
let max_coeffs_len = ReducingGate::<D>::max_coeffs_len(
|
||||||
|
builder.config.num_wires,
|
||||||
|
builder.config.num_routed_wires,
|
||||||
|
);
|
||||||
self.count += terms.len() as u64;
|
self.count += terms.len() as u64;
|
||||||
let zero = builder.zero();
|
let zero = builder.zero();
|
||||||
let zero_ext = builder.zero_extension();
|
let zero_ext = builder.zero_extension();
|
||||||
@ -108,12 +111,12 @@ impl<const D: usize> ReducingFactorTarget<D> {
|
|||||||
let mut gate_index;
|
let mut gate_index;
|
||||||
let mut acc = zero_ext;
|
let mut acc = zero_ext;
|
||||||
let mut reversed_terms = terms.to_vec();
|
let mut reversed_terms = terms.to_vec();
|
||||||
while reversed_terms.len() % max_coeffs != 0 {
|
while reversed_terms.len() % max_coeffs_len != 0 {
|
||||||
reversed_terms.push(zero);
|
reversed_terms.push(zero);
|
||||||
}
|
}
|
||||||
reversed_terms.reverse();
|
reversed_terms.reverse();
|
||||||
for chunk in reversed_terms.chunks_exact(max_coeffs) {
|
for chunk in reversed_terms.chunks_exact(max_coeffs_len) {
|
||||||
gate = ReducingGate::new(max_coeffs);
|
gate = ReducingGate::new(max_coeffs_len);
|
||||||
gate_index = builder.add_gate(gate.clone(), Vec::new());
|
gate_index = builder.add_gate(gate.clone(), Vec::new());
|
||||||
|
|
||||||
builder.route_extension(
|
builder.route_extension(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user