22 bool has_valid_witness_assignments)
31 for (
size_t i = 0; i < input.
points.size(); i += 3) {
36 has_valid_witness_assignments,
42 cycle_scalar_ct scalar(scalar_low_as_field, scalar_high_as_field);
46 if (input_point.x.is_constant() != input_point.y.is_constant()) {
47 if (input_point.x.is_constant()) {
48 input_point.x.convert_constant_to_fixed_witness(&
builder);
49 }
else if (input_point.y.is_constant()) {
50 input_point.y.convert_constant_to_fixed_witness(&
builder);
54 points.push_back(input_point);
55 scalars.push_back(scalar);
58 auto output_point = cycle_group_ct::batch_mul(points, scalars).get_standard_form();
61 if (output_point.is_point_at_infinity().is_constant()) {
64 builder.assert_equal(output_point.is_point_at_infinity().get_normalized_witness_index(),
67 if (output_point.x.is_constant()) {
72 if (output_point.y.is_constant()) {