Skip to content

Commit ede88d2

Browse files
author
maramihali
committed
fix op relation
1 parent f60efd2 commit ede88d2

File tree

2 files changed

+70
-86
lines changed

2 files changed

+70
-86
lines changed

barretenberg/cpp/src/barretenberg/relations/translator_vm/translator_extra_relations.hpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ template <typename FF_> class TranslatorOpcodeConstraintRelationImpl {
1717
static constexpr size_t RELATION_LENGTH = 6;
1818
static constexpr std::array<size_t, 5> SUBRELATION_PARTIAL_LENGTHS{
1919
6, // opcode constraint relation
20-
7, // opcode constraint relation
21-
7, // opcode constraint relation
22-
7, // opcode constraint relation
23-
7 // opcode constraint relation
20+
6, // opcode constraint relation
21+
6, // opcode constraint relation
22+
6, // opcode constraint relation
23+
6 // opcode constraint relation
2424
};
2525

2626
/**
@@ -29,7 +29,7 @@ template <typename FF_> class TranslatorOpcodeConstraintRelationImpl {
2929
*/
3030
template <typename AllEntities> inline static bool skip(const AllEntities& in)
3131
{
32-
return in.lagrange_even_in_minicircuit.is_zero();
32+
return (in.lagrange_even_in_minicircuit + in.lagrange_mini_masking).is_zero();
3333
}
3434
/**
3535
* @brief Expression for enforcing the value of the Opcode to be {0,3,4,8}

barretenberg/cpp/src/barretenberg/relations/translator_vm/translator_extra_relations_impl.hpp

Lines changed: 65 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -28,87 +28,71 @@ void TranslatorOpcodeConstraintRelationImpl<FF>::accumulate(ContainerOverSubrela
2828
const FF& scaling_factor)
2929
{
3030

31-
[&]() {
32-
using Accumulator = std::tuple_element_t<0, ContainerOverSubrelations>;
33-
using View = typename Accumulator::View;
34-
35-
auto op = View(in.op);
36-
auto lagrange_mini_masking = View(in.lagrange_mini_masking);
37-
static const FF minus_three = FF(-3);
38-
static const FF minus_four = FF(-4);
39-
static const FF minus_eight = FF(-8);
40-
static const FF minus_one = FF(-1);
41-
42-
// Contribution (1) op(op-3)(op-4)(op-8))
43-
auto tmp_1 = op * (op + minus_three);
44-
tmp_1 *= (op + minus_four);
45-
tmp_1 *= (op + minus_eight);
46-
tmp_1 *= (lagrange_mini_masking + minus_one);
47-
tmp_1 *= scaling_factor;
48-
std::get<0>(accumulators) += tmp_1;
49-
}();
50-
51-
[&]() {
52-
using Accumulator = std::tuple_element_t<1, ContainerOverSubrelations>;
53-
using View = typename Accumulator::View;
54-
auto op = View(in.op);
55-
auto lagrange_mini_masking = View(in.lagrange_mini_masking);
56-
auto lagrange_even_in_minicircuit = View(in.lagrange_even_in_minicircuit);
57-
static const FF minus_three = FF(-3);
58-
static const FF minus_four = FF(-4);
59-
static const FF minus_eight = FF(-8);
60-
static const FF minus_one = FF(-1);
61-
62-
auto accumulators_binary_limbs_0 = View(in.accumulators_binary_limbs_0);
63-
auto accumulators_binary_limbs_1 = View(in.accumulators_binary_limbs_1);
64-
auto accumulators_binary_limbs_2 = View(in.accumulators_binary_limbs_2);
65-
auto accumulators_binary_limbs_3 = View(in.accumulators_binary_limbs_3);
66-
auto accumulators_binary_limbs_0_shift = View(in.accumulators_binary_limbs_0_shift);
67-
auto accumulators_binary_limbs_1_shift = View(in.accumulators_binary_limbs_1_shift);
68-
auto accumulators_binary_limbs_2_shift = View(in.accumulators_binary_limbs_2_shift);
69-
auto accumulators_binary_limbs_3_shift = View(in.accumulators_binary_limbs_3_shift);
70-
71-
// Contribution (2) (2-5 ensure that the accumulator stays the same at even indices within the no-op range if
72-
// one exists)
73-
auto tmp_2 = (accumulators_binary_limbs_0 - accumulators_binary_limbs_0_shift);
74-
tmp_2 *= (op + minus_three);
75-
tmp_2 *= (op + minus_four);
76-
tmp_2 *= (op + minus_eight);
77-
tmp_2 *= (lagrange_mini_masking + minus_one);
78-
tmp_2 *= lagrange_even_in_minicircuit;
79-
tmp_2 *= scaling_factor;
80-
std::get<1>(accumulators) += tmp_2;
81-
82-
// Contribution (3)
83-
auto tmp_3 = (accumulators_binary_limbs_1 - accumulators_binary_limbs_1_shift);
84-
tmp_3 *= (op + minus_three);
85-
tmp_3 *= (op + minus_four);
86-
tmp_3 *= (op + minus_eight);
87-
tmp_3 *= (lagrange_mini_masking + minus_one);
88-
tmp_3 *= lagrange_even_in_minicircuit;
89-
tmp_3 *= scaling_factor;
90-
std::get<2>(accumulators) += tmp_3;
91-
92-
// Contribution (4)
93-
auto tmp_4 = (accumulators_binary_limbs_2 - accumulators_binary_limbs_2_shift);
94-
tmp_4 *= (op + minus_three);
95-
tmp_4 *= (op + minus_four);
96-
tmp_4 *= (op + minus_eight);
97-
tmp_4 *= (lagrange_mini_masking + minus_one);
98-
tmp_4 *= lagrange_even_in_minicircuit;
99-
tmp_4 *= scaling_factor;
100-
std::get<3>(accumulators) += tmp_4;
101-
102-
// Contribution (5)
103-
auto tmp_5 = (accumulators_binary_limbs_3 - accumulators_binary_limbs_3_shift);
104-
tmp_5 *= (op + minus_three);
105-
tmp_5 *= (op + minus_four);
106-
tmp_5 *= (op + minus_eight);
107-
tmp_5 *= (lagrange_mini_masking + minus_one);
108-
tmp_5 *= lagrange_even_in_minicircuit;
109-
tmp_5 *= scaling_factor;
110-
std::get<4>(accumulators) += tmp_5;
111-
}();
31+
using Accumulator = std::tuple_element_t<0, ContainerOverSubrelations>;
32+
using View = typename Accumulator::View;
33+
34+
auto op = View(in.op);
35+
auto lagrange_mini_masking = View(in.lagrange_mini_masking);
36+
static const FF minus_three = FF(-3);
37+
static const FF minus_four = FF(-4);
38+
static const FF minus_eight = FF(-8);
39+
static const FF minus_one = FF(-1);
40+
41+
// Contribution (1) op(op-3)(op-4)(op-8))
42+
auto tmp_1 = op * (op + minus_three);
43+
tmp_1 *= (op + minus_four);
44+
tmp_1 *= (op + minus_eight);
45+
tmp_1 *= (lagrange_mini_masking + minus_one);
46+
tmp_1 *= scaling_factor;
47+
std::get<0>(accumulators) += tmp_1;
48+
49+
auto lagrange_even_in_minicircuit = View(in.lagrange_even_in_minicircuit);
50+
51+
auto accumulators_binary_limbs_0 = View(in.accumulators_binary_limbs_0);
52+
auto accumulators_binary_limbs_1 = View(in.accumulators_binary_limbs_1);
53+
auto accumulators_binary_limbs_2 = View(in.accumulators_binary_limbs_2);
54+
auto accumulators_binary_limbs_3 = View(in.accumulators_binary_limbs_3);
55+
auto accumulators_binary_limbs_0_shift = View(in.accumulators_binary_limbs_0_shift);
56+
auto accumulators_binary_limbs_1_shift = View(in.accumulators_binary_limbs_1_shift);
57+
auto accumulators_binary_limbs_2_shift = View(in.accumulators_binary_limbs_2_shift);
58+
auto accumulators_binary_limbs_3_shift = View(in.accumulators_binary_limbs_3_shift);
59+
60+
// Contribution (2) (2-5 ensure that the accumulator stays the same at even indices within the no-op range if
61+
// one exists)
62+
auto tmp_2 = (accumulators_binary_limbs_0 - accumulators_binary_limbs_0_shift);
63+
tmp_2 *= (op + minus_three);
64+
tmp_2 *= (op + minus_four);
65+
tmp_2 *= (op + minus_eight);
66+
tmp_2 *= lagrange_even_in_minicircuit;
67+
tmp_2 *= scaling_factor;
68+
std::get<1>(accumulators) += tmp_2;
69+
70+
// Contribution (3)
71+
auto tmp_3 = (accumulators_binary_limbs_1 - accumulators_binary_limbs_1_shift);
72+
tmp_3 *= (op + minus_three);
73+
tmp_3 *= (op + minus_four);
74+
tmp_3 *= (op + minus_eight);
75+
tmp_3 *= lagrange_even_in_minicircuit;
76+
tmp_3 *= scaling_factor;
77+
std::get<2>(accumulators) += tmp_3;
78+
79+
// Contribution (4)
80+
auto tmp_4 = (accumulators_binary_limbs_2 - accumulators_binary_limbs_2_shift);
81+
tmp_4 *= (op + minus_three);
82+
tmp_4 *= (op + minus_four);
83+
tmp_4 *= (op + minus_eight);
84+
tmp_4 *= lagrange_even_in_minicircuit;
85+
tmp_4 *= scaling_factor;
86+
std::get<3>(accumulators) += tmp_4;
87+
88+
// Contribution (5)
89+
auto tmp_5 = (accumulators_binary_limbs_3 - accumulators_binary_limbs_3_shift);
90+
tmp_5 *= (op + minus_three);
91+
tmp_5 *= (op + minus_four);
92+
tmp_5 *= (op + minus_eight);
93+
tmp_5 *= lagrange_even_in_minicircuit;
94+
tmp_5 *= scaling_factor;
95+
std::get<4>(accumulators) += tmp_5;
11296
};
11397

11498
/**

0 commit comments

Comments
 (0)