Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
translator_extra_relations_impl.hpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: not started, auditors: [], date: YYYY-MM-DD }
3// external_1: { status: not started, auditors: [], date: YYYY-MM-DD }
4// external_2: { status: not started, auditors: [], date: YYYY-MM-DD }
5// =====================
6
7#pragma once
9
10namespace bb {
11
23template <typename FF>
24template <typename ContainerOverSubrelations, typename AllEntities, typename Parameters>
25void TranslatorOpcodeConstraintRelationImpl<FF>::accumulate(ContainerOverSubrelations& accumulators,
26 const AllEntities& in,
27 const Parameters&,
28 const FF& scaling_factor)
29{
30
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
63template <typename FF>
64template <typename ContainerOverSubrelations, typename AllEntities, typename Parameters>
65void TranslatorAccumulatorTransferRelationImpl<FF>::accumulate(ContainerOverSubrelations& accumulators,
66 const AllEntities& in,
67 const Parameters& params,
68 const FF& scaling_factor)
69{
71 using View = typename Accumulator::View;
72 // We use combination of lagrange polynomials at odd indices in the minicircuit for copying the accumulator
73 auto lagrange_odd_in_minicircuit = View(in.lagrange_odd_in_minicircuit);
74
75 // Lagrange ensuring the accumulator result is validated at the correct row
76 auto lagrange_result_row = View(in.lagrange_result_row);
77
78 // Lagrange at index (size of minicircuit - 1) is used to enforce that the accumulator is initialized to zero in the
79 // circuit
80 auto lagrange_last_in_minicircuit = View(in.lagrange_last_in_minicircuit);
81
82 // Locations of randomness in the minicircuit
83 auto lagrange_mini_masking = View(in.lagrange_mini_masking);
84
85 auto accumulators_binary_limbs_0 = View(in.accumulators_binary_limbs_0);
86 auto accumulators_binary_limbs_1 = View(in.accumulators_binary_limbs_1);
87 auto accumulators_binary_limbs_2 = View(in.accumulators_binary_limbs_2);
88 auto accumulators_binary_limbs_3 = View(in.accumulators_binary_limbs_3);
89 auto accumulators_binary_limbs_0_shift = View(in.accumulators_binary_limbs_0_shift);
90 auto accumulators_binary_limbs_1_shift = View(in.accumulators_binary_limbs_1_shift);
91 auto accumulators_binary_limbs_2_shift = View(in.accumulators_binary_limbs_2_shift);
92 auto accumulators_binary_limbs_3_shift = View(in.accumulators_binary_limbs_3_shift);
93
94 FF minus_one = FF(-1);
95
96 // Contribution (0) (0-12 ensure that the accumulator is transferred correctly
97 // Contribution (1) (1-4 ensure transfer of accumulator limbs at odd indices of the minicircuit)
98 auto tmp_1 = accumulators_binary_limbs_0 - accumulators_binary_limbs_0_shift;
99 tmp_1 *= lagrange_odd_in_minicircuit * (lagrange_last_in_minicircuit + minus_one);
100 tmp_1 *= scaling_factor;
101 std::get<0>(accumulators) += tmp_1;
102
103 // Contribution (2)
104 auto tmp_2 = accumulators_binary_limbs_1 - accumulators_binary_limbs_1_shift;
105 tmp_2 *= lagrange_odd_in_minicircuit * (lagrange_last_in_minicircuit + minus_one);
106 tmp_2 *= scaling_factor;
107 std::get<1>(accumulators) += tmp_2;
108 // Contribution (3)
109 auto tmp_3 = accumulators_binary_limbs_2 - accumulators_binary_limbs_2_shift;
110 tmp_3 *= lagrange_odd_in_minicircuit * (lagrange_last_in_minicircuit + minus_one);
111 tmp_3 *= scaling_factor;
112 std::get<2>(accumulators) += tmp_3;
113 // Contribution (4)
114 auto tmp_4 = accumulators_binary_limbs_3 - accumulators_binary_limbs_3_shift;
115 tmp_4 *= lagrange_odd_in_minicircuit * (lagrange_last_in_minicircuit + minus_one);
116 tmp_4 *= scaling_factor;
117 std::get<3>(accumulators) += tmp_4;
118
119 // Contribution (5) (5-9 ensure that accumulator starts with zeroed-out limbs)
120 auto tmp_5 = accumulators_binary_limbs_0 * lagrange_last_in_minicircuit;
121 tmp_5 *= (lagrange_mini_masking + minus_one) * scaling_factor;
122 std::get<4>(accumulators) += tmp_5;
123
124 // Contribution (6)
125 auto tmp_6 = accumulators_binary_limbs_1 * lagrange_last_in_minicircuit;
126 tmp_6 *= (lagrange_mini_masking + minus_one) * scaling_factor;
127 std::get<5>(accumulators) += tmp_6;
128
129 // Contribution (7)
130 auto tmp_7 = accumulators_binary_limbs_2 * lagrange_last_in_minicircuit;
131 tmp_7 *= (lagrange_mini_masking + minus_one) * scaling_factor;
132 std::get<6>(accumulators) += tmp_7;
133
134 // Contribution (8)
135 auto tmp_8 = accumulators_binary_limbs_3 * lagrange_last_in_minicircuit;
136 tmp_8 *= (lagrange_mini_masking + minus_one) * scaling_factor;
137 std::get<7>(accumulators) += tmp_8;
138
139 // Contribution (9) (9-12 ensure the output is as stated, we basically use this to get the result out of the
140 // // proof)
141 auto tmp_9 = (accumulators_binary_limbs_0 - params.accumulated_result[0]) * lagrange_result_row;
142 tmp_9 *= (lagrange_mini_masking + minus_one) * scaling_factor;
143 std::get<8>(accumulators) += tmp_9;
144
145 // Contribution (10)
146 auto tmp_10 = (accumulators_binary_limbs_1 - params.accumulated_result[1]) * lagrange_result_row;
147 tmp_10 *= (lagrange_mini_masking + minus_one) * scaling_factor;
148 std::get<9>(accumulators) += tmp_10;
149
150 // Contribution (11)
151 auto tmp_11 = (accumulators_binary_limbs_2 - params.accumulated_result[2]) * lagrange_result_row;
152 tmp_11 *= (lagrange_mini_masking + minus_one) * scaling_factor;
153 std::get<10>(accumulators) += tmp_11;
154
155 // Contribution (12)
156 auto tmp_12 = (accumulators_binary_limbs_3 - params.accumulated_result[3]) * lagrange_result_row;
157 tmp_12 *= (lagrange_mini_masking + minus_one) * scaling_factor;
158 std::get<11>(accumulators) += tmp_12;
159};
160
170template <typename FF>
171template <typename ContainerOverSubrelations, typename AllEntities, typename Parameters>
172void TranslatorZeroConstraintsRelationImpl<FF>::accumulate(ContainerOverSubrelations& accumulators,
173 const AllEntities& in,
174 const Parameters&,
175 const FF& scaling_factor)
176{
178 using View = typename Accumulator::View;
179
180 // Minus one
181 static auto minus_one = -FF(1);
182
183 auto lagrange_even_in_minicircuit = View(in.lagrange_even_in_minicircuit);
184 auto lagrange_odd_in_minicircuit = View(in.lagrange_odd_in_minicircuit);
185
186 auto p_x_low_limbs_range_constraint_0 = View(in.p_x_low_limbs_range_constraint_0);
187 auto p_x_low_limbs_range_constraint_1 = View(in.p_x_low_limbs_range_constraint_1);
188 auto p_x_low_limbs_range_constraint_2 = View(in.p_x_low_limbs_range_constraint_2);
189 auto p_x_low_limbs_range_constraint_3 = View(in.p_x_low_limbs_range_constraint_3);
190 auto p_x_low_limbs_range_constraint_4 = View(in.p_x_low_limbs_range_constraint_4);
191 auto p_x_high_limbs_range_constraint_0 = View(in.p_x_high_limbs_range_constraint_0);
192 auto p_x_high_limbs_range_constraint_1 = View(in.p_x_high_limbs_range_constraint_1);
193 auto p_x_high_limbs_range_constraint_2 = View(in.p_x_high_limbs_range_constraint_2);
194 auto p_x_high_limbs_range_constraint_3 = View(in.p_x_high_limbs_range_constraint_3);
195 auto p_x_high_limbs_range_constraint_4 = View(in.p_x_high_limbs_range_constraint_4);
196 auto p_y_low_limbs_range_constraint_0 = View(in.p_y_low_limbs_range_constraint_0);
197 auto p_y_low_limbs_range_constraint_1 = View(in.p_y_low_limbs_range_constraint_1);
198 auto p_y_low_limbs_range_constraint_2 = View(in.p_y_low_limbs_range_constraint_2);
199 auto p_y_low_limbs_range_constraint_3 = View(in.p_y_low_limbs_range_constraint_3);
200 auto p_y_low_limbs_range_constraint_4 = View(in.p_y_low_limbs_range_constraint_4);
201 auto p_y_high_limbs_range_constraint_0 = View(in.p_y_high_limbs_range_constraint_0);
202 auto p_y_high_limbs_range_constraint_1 = View(in.p_y_high_limbs_range_constraint_1);
203 auto p_y_high_limbs_range_constraint_2 = View(in.p_y_high_limbs_range_constraint_2);
204 auto p_y_high_limbs_range_constraint_3 = View(in.p_y_high_limbs_range_constraint_3);
205 auto p_y_high_limbs_range_constraint_4 = View(in.p_y_high_limbs_range_constraint_4);
206 auto z_low_limbs_range_constraint_0 = View(in.z_low_limbs_range_constraint_0);
207 auto z_low_limbs_range_constraint_1 = View(in.z_low_limbs_range_constraint_1);
208 auto z_low_limbs_range_constraint_2 = View(in.z_low_limbs_range_constraint_2);
209 auto z_low_limbs_range_constraint_3 = View(in.z_low_limbs_range_constraint_3);
210 auto z_low_limbs_range_constraint_4 = View(in.z_low_limbs_range_constraint_4);
211 auto z_high_limbs_range_constraint_0 = View(in.z_high_limbs_range_constraint_0);
212 auto z_high_limbs_range_constraint_1 = View(in.z_high_limbs_range_constraint_1);
213 auto z_high_limbs_range_constraint_2 = View(in.z_high_limbs_range_constraint_2);
214 auto z_high_limbs_range_constraint_3 = View(in.z_high_limbs_range_constraint_3);
215 auto z_high_limbs_range_constraint_4 = View(in.z_high_limbs_range_constraint_4);
216 auto accumulator_low_limbs_range_constraint_0 = View(in.accumulator_low_limbs_range_constraint_0);
217 auto accumulator_low_limbs_range_constraint_1 = View(in.accumulator_low_limbs_range_constraint_1);
218 auto accumulator_low_limbs_range_constraint_2 = View(in.accumulator_low_limbs_range_constraint_2);
219 auto accumulator_low_limbs_range_constraint_3 = View(in.accumulator_low_limbs_range_constraint_3);
220 auto accumulator_low_limbs_range_constraint_4 = View(in.accumulator_low_limbs_range_constraint_4);
221 auto accumulator_high_limbs_range_constraint_0 = View(in.accumulator_high_limbs_range_constraint_0);
222 auto accumulator_high_limbs_range_constraint_1 = View(in.accumulator_high_limbs_range_constraint_1);
223 auto accumulator_high_limbs_range_constraint_2 = View(in.accumulator_high_limbs_range_constraint_2);
224 auto accumulator_high_limbs_range_constraint_3 = View(in.accumulator_high_limbs_range_constraint_3);
225 auto accumulator_high_limbs_range_constraint_4 = View(in.accumulator_high_limbs_range_constraint_4);
226 auto quotient_low_limbs_range_constraint_0 = View(in.quotient_low_limbs_range_constraint_0);
227 auto quotient_low_limbs_range_constraint_1 = View(in.quotient_low_limbs_range_constraint_1);
228 auto quotient_low_limbs_range_constraint_2 = View(in.quotient_low_limbs_range_constraint_2);
229 auto quotient_low_limbs_range_constraint_3 = View(in.quotient_low_limbs_range_constraint_3);
230 auto quotient_low_limbs_range_constraint_4 = View(in.quotient_low_limbs_range_constraint_4);
231 auto quotient_high_limbs_range_constraint_0 = View(in.quotient_high_limbs_range_constraint_0);
232 auto quotient_high_limbs_range_constraint_1 = View(in.quotient_high_limbs_range_constraint_1);
233 auto quotient_high_limbs_range_constraint_2 = View(in.quotient_high_limbs_range_constraint_2);
234 auto quotient_high_limbs_range_constraint_3 = View(in.quotient_high_limbs_range_constraint_3);
235 auto quotient_high_limbs_range_constraint_4 = View(in.quotient_high_limbs_range_constraint_4);
236 auto relation_wide_limbs_range_constraint_0 = View(in.relation_wide_limbs_range_constraint_0);
237 auto relation_wide_limbs_range_constraint_1 = View(in.relation_wide_limbs_range_constraint_1);
238 auto relation_wide_limbs_range_constraint_2 = View(in.relation_wide_limbs_range_constraint_2);
239 auto relation_wide_limbs_range_constraint_3 = View(in.relation_wide_limbs_range_constraint_3);
240 auto p_x_low_limbs_range_constraint_tail = View(in.p_x_low_limbs_range_constraint_tail);
241 auto p_x_high_limbs_range_constraint_tail = View(in.p_x_high_limbs_range_constraint_tail);
242 auto p_y_low_limbs_range_constraint_tail = View(in.p_y_low_limbs_range_constraint_tail);
243 auto p_y_high_limbs_range_constraint_tail = View(in.p_y_high_limbs_range_constraint_tail);
244 auto z_low_limbs_range_constraint_tail = View(in.z_low_limbs_range_constraint_tail);
245 auto z_high_limbs_range_constraint_tail = View(in.z_high_limbs_range_constraint_tail);
246 auto accumulator_low_limbs_range_constraint_tail = View(in.accumulator_low_limbs_range_constraint_tail);
247 auto accumulator_high_limbs_range_constraint_tail = View(in.accumulator_high_limbs_range_constraint_tail);
248 auto quotient_low_limbs_range_constraint_tail = View(in.quotient_low_limbs_range_constraint_tail);
249 auto quotient_high_limbs_range_constraint_tail = View(in.quotient_high_limbs_range_constraint_tail);
250 auto lagrange_mini_masking = View(in.lagrange_mini_masking);
251
252 // 0 in the minicircuit, -1 outside
253 auto not_in_mininicircuit_or_masked = (lagrange_odd_in_minicircuit + lagrange_even_in_minicircuit + minus_one) *
254 (lagrange_mini_masking + minus_one) * scaling_factor;
255
256 // Contribution 0, ensure p_x_low_limbs_range_constraint_0 is 0 outside of minicircuit
257 std::get<0>(accumulators) += p_x_low_limbs_range_constraint_0 * not_in_mininicircuit_or_masked;
258
259 // Contribution 1, ensure p_x_low_limbs_range_constraint_1 is 0 outside of minicircuit
260 std::get<1>(accumulators) += p_x_low_limbs_range_constraint_1 * not_in_mininicircuit_or_masked;
261
262 // Contribution 2, ensure p_x_low_limbs_range_constraint_2 is 0 outside of minicircuit
263 std::get<2>(accumulators) += p_x_low_limbs_range_constraint_2 * not_in_mininicircuit_or_masked;
264
265 // Contribution 3, ensure p_x_low_limbs_range_constraint_3 is 0 outside of minicircuit
266 std::get<3>(accumulators) += p_x_low_limbs_range_constraint_3 * not_in_mininicircuit_or_masked;
267
268 // Contribution 4, ensure p_x_low_limbs_range_constraint_4 is 0 outside of minicircuit
269 std::get<4>(accumulators) += p_x_low_limbs_range_constraint_4 * not_in_mininicircuit_or_masked;
270
271 // Contribution 5, ensure p_x_high_limbs_range_constraint_0 is 0 outside of minicircuit
272 std::get<5>(accumulators) += p_x_high_limbs_range_constraint_0 * not_in_mininicircuit_or_masked;
273
274 // Contribution 6, ensure p_x_high_limbs_range_constraint_1 is 0 outside of minicircuit
275 std::get<6>(accumulators) += p_x_high_limbs_range_constraint_1 * not_in_mininicircuit_or_masked;
276
277 // Contribution 7, ensure p_x_high_limbs_range_constraint_2 is 0 outside of minicircuit
278 std::get<7>(accumulators) += p_x_high_limbs_range_constraint_2 * not_in_mininicircuit_or_masked;
279
280 // Contribution 8, ensure p_x_high_limbs_range_constraint_3 is 0 outside of minicircuit
281 std::get<8>(accumulators) += p_x_high_limbs_range_constraint_3 * not_in_mininicircuit_or_masked;
282
283 // Contribution 9, ensure p_x_high_limbs_range_constraint_4 is 0 outside of minicircuit
284 std::get<9>(accumulators) += p_x_high_limbs_range_constraint_4 * not_in_mininicircuit_or_masked;
285
286 // Contribution 10, ensure p_y_low_limbs_range_constraint_0 is 0 outside of minicircuit
287 std::get<10>(accumulators) += p_y_low_limbs_range_constraint_0 * not_in_mininicircuit_or_masked;
288
289 // Contribution 11, ensure p_y_low_limbs_range_constraint_1 is 0 outside of minicircuit
290 std::get<11>(accumulators) += p_y_low_limbs_range_constraint_1 * not_in_mininicircuit_or_masked;
291
292 // Contribution 12, ensure p_y_low_limbs_range_constraint_2 is 0 outside of minicircuit
293 std::get<12>(accumulators) += p_y_low_limbs_range_constraint_2 * not_in_mininicircuit_or_masked;
294
295 // Contribution 13, ensure p_y_low_limbs_range_constraint_3 is 0 outside of minicircuit
296 std::get<13>(accumulators) += p_y_low_limbs_range_constraint_3 * not_in_mininicircuit_or_masked;
297
298 // Contribution 14, ensure p_y_low_limbs_range_constraint_4 is 0 outside of minicircuit
299 std::get<14>(accumulators) += p_y_low_limbs_range_constraint_4 * not_in_mininicircuit_or_masked;
300
301 // Contribution 15, ensure p_y_high_limbs_range_constraint_0 is 0 outside of minicircuit
302 std::get<15>(accumulators) += p_y_high_limbs_range_constraint_0 * not_in_mininicircuit_or_masked;
303
304 // Contribution 16, ensure p_y_high_limbs_range_constraint_1 is 0 outside of minicircuit
305 std::get<16>(accumulators) += p_y_high_limbs_range_constraint_1 * not_in_mininicircuit_or_masked;
306
307 // Contribution 17, ensure p_y_high_limbs_range_constraint_2 is 0 outside of minicircuit
308 std::get<17>(accumulators) += p_y_high_limbs_range_constraint_2 * not_in_mininicircuit_or_masked;
309
310 // Contribution 18, ensure p_y_high_limbs_range_constraint_3 is 0 outside of minicircuit
311 std::get<18>(accumulators) += p_y_high_limbs_range_constraint_3 * not_in_mininicircuit_or_masked;
312
313 // Contribution 19, ensure p_y_high_limbs_range_constraint_4 is 0 outside of minicircuit
314 std::get<19>(accumulators) += p_y_high_limbs_range_constraint_4 * not_in_mininicircuit_or_masked;
315
316 // Contribution 20, ensure z_low_limbs_range_constraint_0 is 0 outside of minicircuit
317 std::get<20>(accumulators) += z_low_limbs_range_constraint_0 * not_in_mininicircuit_or_masked;
318
319 // Contribution 21, ensure z_low_limbs_range_constraint_1 is 0 outside of minicircuit
320 std::get<21>(accumulators) += z_low_limbs_range_constraint_1 * not_in_mininicircuit_or_masked;
321
322 // Contribution 22, ensure z_low_limbs_range_constraint_2 is 0 outside of minicircuit
323 std::get<22>(accumulators) += z_low_limbs_range_constraint_2 * not_in_mininicircuit_or_masked;
324
325 // Contribution 23, ensure z_low_limbs_range_constraint_3 is 0 outside of minicircuit
326 std::get<23>(accumulators) += z_low_limbs_range_constraint_3 * not_in_mininicircuit_or_masked;
327
328 // Contribution 24, ensure z_low_limbs_range_constraint_4 is 0 outside of minicircuit
329 std::get<24>(accumulators) += z_low_limbs_range_constraint_4 * not_in_mininicircuit_or_masked;
330
331 // Contribution 25, ensure z_high_limbs_range_constraint_0 is 0 outside of minicircuit
332 std::get<25>(accumulators) += z_high_limbs_range_constraint_0 * not_in_mininicircuit_or_masked;
333
334 // Contribution 26, ensure z_high_limbs_range_constraint_1 is 0 outside of minicircuit
335 std::get<26>(accumulators) += z_high_limbs_range_constraint_1 * not_in_mininicircuit_or_masked;
336
337 // Contribution 27, ensure z_high_limbs_range_constraint_2 is 0 outside of minicircuit
338 std::get<27>(accumulators) += z_high_limbs_range_constraint_2 * not_in_mininicircuit_or_masked;
339
340 // Contribution 28, ensure z_high_limbs_range_constraint_3 is 0 outside of minicircuit
341 std::get<28>(accumulators) += z_high_limbs_range_constraint_3 * not_in_mininicircuit_or_masked;
342
343 // Contribution 29, ensure z_high_limbs_range_constraint_4 is 0 outside of minicircuit
344 std::get<29>(accumulators) += z_high_limbs_range_constraint_4 * not_in_mininicircuit_or_masked;
345
346 // Contribution 30, ensure accumulator_low_limbs_range_constraint_0 is 0 outside of minicircuit
347 std::get<30>(accumulators) += accumulator_low_limbs_range_constraint_0 * not_in_mininicircuit_or_masked;
348
349 // Contribution 31, ensure accumulator_low_limbs_range_constraint_1 is 0 outside of minicircuit
350 std::get<31>(accumulators) += accumulator_low_limbs_range_constraint_1 * not_in_mininicircuit_or_masked;
351
352 // Contribution 32, ensure accumulator_low_limbs_range_constraint_2 is 0 outside of minicircuit
353 std::get<32>(accumulators) += accumulator_low_limbs_range_constraint_2 * not_in_mininicircuit_or_masked;
354
355 // Contribution 33, ensure accumulator_low_limbs_range_constraint_3 is 0 outside of minicircuit
356 std::get<33>(accumulators) += accumulator_low_limbs_range_constraint_3 * not_in_mininicircuit_or_masked;
357
358 // Contribution 34, ensure accumulator_low_limbs_range_constraint_4 is 0 outside of minicircuit
359 std::get<34>(accumulators) += accumulator_low_limbs_range_constraint_4 * not_in_mininicircuit_or_masked;
360
361 // Contribution 35, ensure accumulator_high_limbs_range_constraint_0 is 0 outside of minicircuit
362 std::get<35>(accumulators) += accumulator_high_limbs_range_constraint_0 * not_in_mininicircuit_or_masked;
363
364 // Contribution 36, ensure accumulator_high_limbs_range_constraint_1 is 0 outside of minicircuit
365 std::get<36>(accumulators) += accumulator_high_limbs_range_constraint_1 * not_in_mininicircuit_or_masked;
366
367 // Contribution 37, ensure accumulator_high_limbs_range_constraint_2 is 0 outside of minicircuit
368 std::get<37>(accumulators) += accumulator_high_limbs_range_constraint_2 * not_in_mininicircuit_or_masked;
369
370 // Contribution 38, ensure accumulator_high_limbs_range_constraint_3 is 0 outside of minicircuit
371 std::get<38>(accumulators) += accumulator_high_limbs_range_constraint_3 * not_in_mininicircuit_or_masked;
372
373 // Contribution 39, ensure accumulator_high_limbs_range_constraint_4 is 0 outside of minicircuit
374 std::get<39>(accumulators) += accumulator_high_limbs_range_constraint_4 * not_in_mininicircuit_or_masked;
375
376 // Contribution 40, ensure quotient_low_limbs_range_constraint_0 is 0 outside of minicircuit
377 std::get<40>(accumulators) += quotient_low_limbs_range_constraint_0 * not_in_mininicircuit_or_masked;
378
379 // Contribution 41, ensure quotient_low_limbs_range_constraint_1 is 0 outside of minicircuit
380 std::get<41>(accumulators) += quotient_low_limbs_range_constraint_1 * not_in_mininicircuit_or_masked;
381
382 // Contribution 42, ensure quotient_low_limbs_range_constraint_2 is 0 outside of minicircuit
383 std::get<42>(accumulators) += quotient_low_limbs_range_constraint_2 * not_in_mininicircuit_or_masked;
384
385 // Contribution 43, ensure quotient_low_limbs_range_constraint_3 is 0 outside of minicircuit
386 std::get<43>(accumulators) += quotient_low_limbs_range_constraint_3 * not_in_mininicircuit_or_masked;
387
388 // Contribution 44, ensure quotient_low_limbs_range_constraint_4 is 0 outside of minicircuit
389 std::get<44>(accumulators) += quotient_low_limbs_range_constraint_4 * not_in_mininicircuit_or_masked;
390
391 // Contribution 45, ensure quotient_high_limbs_range_constraint_0 is 0 outside of minicircuit
392 std::get<45>(accumulators) += quotient_high_limbs_range_constraint_0 * not_in_mininicircuit_or_masked;
393
394 // Contribution 46, ensure quotient_high_limbs_range_constraint_1 is 0 outside of minicircuit
395 std::get<46>(accumulators) += quotient_high_limbs_range_constraint_1 * not_in_mininicircuit_or_masked;
396
397 // Contribution 47, ensure quotient_high_limbs_range_constraint_2 is 0 outside of minicircuit
398 std::get<47>(accumulators) += quotient_high_limbs_range_constraint_2 * not_in_mininicircuit_or_masked;
399
400 // Contribution 48, ensure quotient_high_limbs_range_constraint_3 is 0 outside of minicircuit
401 std::get<48>(accumulators) += quotient_high_limbs_range_constraint_3 * not_in_mininicircuit_or_masked;
402
403 // Contribution 49, ensure quotient_high_limbs_range_constraint_4 is 0 outside of minicircuit
404 std::get<49>(accumulators) += quotient_high_limbs_range_constraint_4 * not_in_mininicircuit_or_masked;
405
406 // Contribution 50, ensure relation_wide_limbs_range_constraint_0 is 0 outside of minicircuit
407 std::get<50>(accumulators) += relation_wide_limbs_range_constraint_0 * not_in_mininicircuit_or_masked;
408
409 // Contribution 51, ensure relation_wide_limbs_range_constraint_1 is 0 outside of minicircuit
410 std::get<51>(accumulators) += relation_wide_limbs_range_constraint_1 * not_in_mininicircuit_or_masked;
411
412 // Contribution 52, ensure relation_wide_limbs_range_constraint_2 is 0 outside of minicircuit
413 std::get<52>(accumulators) += relation_wide_limbs_range_constraint_2 * not_in_mininicircuit_or_masked;
414
415 // Contribution 53, ensure relation_wide_limbs_range_constraint_3 is 0 outside of minicircuit
416 std::get<53>(accumulators) += relation_wide_limbs_range_constraint_3 * not_in_mininicircuit_or_masked;
417
418 // Contribution 54, ensure p_x_low_limbs_range_constraint_tail is 0 outside of minicircuit
419 std::get<54>(accumulators) += p_x_low_limbs_range_constraint_tail * not_in_mininicircuit_or_masked;
420
421 // Contribution 55, ensure p_x_high_limbs_range_constraint_tail is 0 outside of minicircuit
422 std::get<55>(accumulators) += p_x_high_limbs_range_constraint_tail * not_in_mininicircuit_or_masked;
423
424 // Contribution 56, ensure p_y_low_limbs_range_constraint_tail is 0 outside of minicircuit
425 std::get<56>(accumulators) += p_y_low_limbs_range_constraint_tail * not_in_mininicircuit_or_masked;
426
427 // Contribution 57, ensure p_y_high_limbs_range_constraint_tail is 0 outside of minicircuit
428 std::get<57>(accumulators) += p_y_high_limbs_range_constraint_tail * not_in_mininicircuit_or_masked;
429
430 // Contribution 58, ensure z_low_limbs_range_constraint_tail is 0 outside of minicircuit
431 std::get<58>(accumulators) += z_low_limbs_range_constraint_tail * not_in_mininicircuit_or_masked;
432
433 // Contribution 59, ensure z_high_limbs_range_constraint_tail is 0 outside of minicircuit
434 std::get<59>(accumulators) += z_high_limbs_range_constraint_tail * not_in_mininicircuit_or_masked;
435
436 // Contribution 60, ensure accumulator_low_limbs_range_constraint_tail is 0 outside of minicircuit
437 std::get<60>(accumulators) += accumulator_low_limbs_range_constraint_tail * not_in_mininicircuit_or_masked;
438
439 // Contribution 61, ensure accumulator_high_limbs_range_constraint_tail is 0 outside of minicircuit
440 std::get<61>(accumulators) += accumulator_high_limbs_range_constraint_tail * not_in_mininicircuit_or_masked;
441
442 // Contribution 62, ensure quotient_low_limbs_range_constraint_tail is 0 outside of minicircuit
443 std::get<62>(accumulators) += quotient_low_limbs_range_constraint_tail * not_in_mininicircuit_or_masked;
444
445 // Contribution 63, ensure quotient_high_limbs_range_constraint_tail is 0 outside of minicircuit
446 std::get<63>(accumulators) += quotient_high_limbs_range_constraint_tail * not_in_mininicircuit_or_masked;
447};
448} // namespace bb
static void accumulate(ContainerOverSubrelations &accumulators, const AllEntities &in, const Parameters &params, const FF &scaling_factor)
Relation enforcing non-arithmetic transitions of accumulator (value that is tracking the batched eval...
static void accumulate(ContainerOverSubrelations &accumulators, const AllEntities &in, const Parameters &, const FF &scaling_factor)
Expression for enforcing the value of the Opcode to be {0,3,4,8}.
static void accumulate(ContainerOverSubrelations &accumulators, const AllEntities &in, const Parameters &params, const FF &scaling_factor)
Relation enforcing all the range-constraint polynomials to be zero after the minicircuit.
Entry point for Barretenberg command-line interface.
typename Flavor::FF FF
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13