More eval_unfiltered_recursively tweaks (#156)

This commit is contained in:
Daniel Lubarov 2021-08-05 08:03:49 -07:00 committed by GitHub
parent 6aaebfcac9
commit 7b20f342df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 8 additions and 10 deletions

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);