mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-02 22:03:07 +00:00
More eval_unfiltered_recursively tweaks (#156)
This commit is contained in:
parent
6aaebfcac9
commit
7b20f342df
@ -110,7 +110,8 @@ impl<F: Extendable<D>, const D: usize> CircuitBuilder<F, D> {
|
||||
let zero = self.zero();
|
||||
let gate = ExponentiationGate::new(self.config.clone());
|
||||
let num_power_bits = gate.num_power_bits;
|
||||
let mut exp_bits_vec: Vec<Target> = exponent_bits.into_iter().map(|b| *b.borrow()).collect();
|
||||
let mut exp_bits_vec: Vec<Target> =
|
||||
exponent_bits.into_iter().map(|b| *b.borrow()).collect();
|
||||
while exp_bits_vec.len() < num_power_bits {
|
||||
exp_bits_vec.push(zero);
|
||||
}
|
||||
|
||||
@ -159,10 +159,8 @@ impl<F: Extendable<D>, const D: usize> Gate<F, D> for ExponentiationGate<F, D> {
|
||||
// power_bits is in LE order, but we accumulate in BE order.
|
||||
let cur_bit = power_bits[self.num_power_bits - i - 1];
|
||||
let mul_by = builder.select_ext(cur_bit, base, one);
|
||||
let computed_intermediate_value =
|
||||
builder.mul_extension(prev_intermediate_value, mul_by);
|
||||
let intermediate_value_diff =
|
||||
builder.sub_extension(computed_intermediate_value, intermediate_values[i]);
|
||||
builder.mul_sub_extension(prev_intermediate_value, mul_by, intermediate_values[i]);
|
||||
constraints.push(intermediate_value_diff);
|
||||
}
|
||||
|
||||
|
||||
@ -191,11 +191,10 @@ impl<F: Extendable<D>, const D: usize, const R: usize> Gate<F, D> for GMiMCGate<
|
||||
|
||||
let constant = builder.constant_extension(self.constants[r].into());
|
||||
let cubing_input =
|
||||
builder.add_many_extension(&[state[active], addition_buffer, constant]);
|
||||
builder.add_three_extension(state[active], addition_buffer, constant);
|
||||
let cubing_input_wire = vars.local_wires[Self::wire_cubing_input(r)];
|
||||
constraints.push(builder.sub_extension(cubing_input, cubing_input_wire));
|
||||
let square = builder.mul_extension(cubing_input_wire, cubing_input_wire);
|
||||
let f = builder.mul_extension(square, cubing_input_wire);
|
||||
let f = builder.cube_extension(cubing_input_wire);
|
||||
addition_buffer = builder.add_extension(addition_buffer, f);
|
||||
state[active] = builder.sub_extension(state[active], f);
|
||||
}
|
||||
|
||||
@ -140,10 +140,10 @@ impl<F: Extendable<D>, const D: usize> Gate<F, D> for RandomAccessGate<F, D> {
|
||||
let index_matches = vars.local_wires[self.wire_index_matches_for_index(i)];
|
||||
|
||||
// The two equality constraints.
|
||||
let prod = builder.mul_extension(difference, equality_dummy);
|
||||
let one = builder.constant_extension(F::Extension::ONE);
|
||||
let one = builder.one_extension();
|
||||
let not_index_matches = builder.sub_extension(one, index_matches);
|
||||
let first_equality_constraint = builder.sub_extension(prod, not_index_matches);
|
||||
let first_equality_constraint =
|
||||
builder.mul_sub_extension(difference, equality_dummy, not_index_matches);
|
||||
constraints.push(first_equality_constraint);
|
||||
|
||||
let second_equality_constraint = builder.mul_extension(index_matches, difference);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user