Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bc_decomposition_impl.hpp
Go to the documentation of this file.
1// AUTOGENERATED FILE
2#pragma once
3
5
6namespace bb::avm2 {
7
8template <typename FF_>
9template <typename ContainerOverSubrelations, typename AllEntities>
10void bc_decompositionImpl<FF_>::accumulate(ContainerOverSubrelations& evals,
11 const AllEntities& in,
12 [[maybe_unused]] const RelationParameters<FF_>&,
13 [[maybe_unused]] const FF_& scaling_factor)
14{
15 using C = ColumnAndShifts;
16
17 PROFILE_THIS_NAME("accumulate/bc_decomposition");
18
19 const auto bc_decomposition_WINDOW_SIZE = FF(37);
20 const auto bc_decomposition_FIRST_OR_LAST_CONTRACT =
21 in.get(C::precomputed_first_row) + in.get(C::bc_decomposition_last_of_contract);
22
23 {
24 using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>;
25 auto tmp = in.get(C::bc_decomposition_sel) * (FF(1) - in.get(C::bc_decomposition_sel));
26 tmp *= scaling_factor;
27 std::get<0>(evals) += typename Accumulator::View(tmp);
28 }
29 {
31 auto tmp =
32 in.get(C::bc_decomposition_last_of_contract) * (FF(1) - in.get(C::bc_decomposition_last_of_contract));
33 tmp *= scaling_factor;
34 std::get<1>(evals) += typename Accumulator::View(tmp);
35 }
36 { // BC_DEC_SEL_BYTES_REM_NON_ZERO
37 using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>;
38 auto tmp =
39 (in.get(C::bc_decomposition_bytes_remaining) *
40 ((FF(1) - in.get(C::bc_decomposition_sel)) * (FF(1) - in.get(C::bc_decomposition_bytes_rem_inv)) +
41 in.get(C::bc_decomposition_bytes_rem_inv)) -
42 in.get(C::bc_decomposition_sel));
43 tmp *= scaling_factor;
44 std::get<2>(evals) += typename Accumulator::View(tmp);
45 }
46 { // TRACE_CONTINUITY
47 using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>;
48 auto tmp = (FF(1) - in.get(C::precomputed_first_row)) * (FF(1) - in.get(C::bc_decomposition_sel)) *
49 in.get(C::bc_decomposition_sel_shift);
50 tmp *= scaling_factor;
51 std::get<3>(evals) += typename Accumulator::View(tmp);
52 }
53 { // BC_DEC_LAST_CONTRACT_BYTES_REM_ONE
54 using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>;
55 auto tmp =
56 in.get(C::bc_decomposition_sel) * (((in.get(C::bc_decomposition_bytes_remaining) - FF(1)) *
57 (in.get(C::bc_decomposition_last_of_contract) *
58 (FF(1) - in.get(C::bc_decomposition_bytes_rem_min_one_inv)) +
59 in.get(C::bc_decomposition_bytes_rem_min_one_inv)) +
60 in.get(C::bc_decomposition_last_of_contract)) -
61 FF(1));
62 tmp *= scaling_factor;
63 std::get<4>(evals) += typename Accumulator::View(tmp);
64 }
65 { // BC_DEC_PC_ZERO_INITIALIZATION
66 using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>;
67 auto tmp = bc_decomposition_FIRST_OR_LAST_CONTRACT * in.get(C::bc_decomposition_pc_shift);
68 tmp *= scaling_factor;
69 std::get<5>(evals) += typename Accumulator::View(tmp);
70 }
71 { // BC_DEC_PC_INCREMENT
72 using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>;
73 auto tmp = in.get(C::bc_decomposition_sel) * (FF(1) - in.get(C::bc_decomposition_last_of_contract)) *
74 ((in.get(C::bc_decomposition_pc_shift) - in.get(C::bc_decomposition_pc)) - FF(1));
75 tmp *= scaling_factor;
76 std::get<6>(evals) += typename Accumulator::View(tmp);
77 }
78 { // BC_DEC_BYTES_REMAINING_DECREMENT
79 using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>;
80 auto tmp =
81 in.get(C::bc_decomposition_sel) * (FF(1) - in.get(C::bc_decomposition_last_of_contract)) *
82 ((in.get(C::bc_decomposition_bytes_remaining_shift) - in.get(C::bc_decomposition_bytes_remaining)) + FF(1));
83 tmp *= scaling_factor;
84 std::get<7>(evals) += typename Accumulator::View(tmp);
85 }
86 { // BC_DEC_ID_CONSTANT
87 using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>;
88 auto tmp = (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) *
89 (in.get(C::bc_decomposition_id_shift) - in.get(C::bc_decomposition_id));
90 tmp *= scaling_factor;
91 std::get<8>(evals) += typename Accumulator::View(tmp);
92 }
93 {
94 using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>;
95 auto tmp = in.get(C::bc_decomposition_sel_windows_gt_remaining) *
96 (FF(1) - in.get(C::bc_decomposition_sel_windows_gt_remaining));
97 tmp *= scaling_factor;
98 std::get<9>(evals) += typename Accumulator::View(tmp);
99 }
100 {
101 using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>;
102 auto tmp = in.get(C::bc_decomposition_is_windows_eq_remaining) *
103 (FF(1) - in.get(C::bc_decomposition_is_windows_eq_remaining));
104 tmp *= scaling_factor;
105 std::get<10>(evals) += typename Accumulator::View(tmp);
106 }
107 { // IS_WINDOWS_EQ_REMAINING
108 using Accumulator = typename std::tuple_element_t<11, ContainerOverSubrelations>;
109 auto tmp = in.get(C::bc_decomposition_sel) *
110 (((bc_decomposition_WINDOW_SIZE - in.get(C::bc_decomposition_bytes_remaining)) *
111 (in.get(C::bc_decomposition_is_windows_eq_remaining) *
112 (FF(1) - in.get(C::bc_decomposition_windows_min_remaining_inv)) +
113 in.get(C::bc_decomposition_windows_min_remaining_inv)) +
114 in.get(C::bc_decomposition_is_windows_eq_remaining)) -
115 FF(1));
116 tmp *= scaling_factor;
117 std::get<11>(evals) += typename Accumulator::View(tmp);
118 }
119 { // SEL_WINDOWS_GT_REMAINING_INIT
120 using Accumulator = typename std::tuple_element_t<12, ContainerOverSubrelations>;
121 auto tmp = in.get(C::bc_decomposition_last_of_contract) *
122 (FF(1) - in.get(C::bc_decomposition_sel_windows_gt_remaining));
123 tmp *= scaling_factor;
124 std::get<12>(evals) += typename Accumulator::View(tmp);
125 }
126 { // SEL_WINDOWS_GT_REMAINING_PROPAGATION
127 using Accumulator = typename std::tuple_element_t<13, ContainerOverSubrelations>;
128 auto tmp = (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) *
129 ((in.get(C::bc_decomposition_sel_windows_gt_remaining_shift) -
130 in.get(C::bc_decomposition_is_windows_eq_remaining)) -
131 in.get(C::bc_decomposition_sel_windows_gt_remaining));
132 tmp *= scaling_factor;
133 std::get<13>(evals) += typename Accumulator::View(tmp);
134 }
135 { // SET_BYTES_TO_READ
136 using Accumulator = typename std::tuple_element_t<14, ContainerOverSubrelations>;
137 auto tmp = in.get(C::bc_decomposition_sel) *
138 ((FF(1) - in.get(C::bc_decomposition_sel_windows_gt_remaining)) *
139 (in.get(C::bc_decomposition_bytes_to_read) - bc_decomposition_WINDOW_SIZE) +
140 in.get(C::bc_decomposition_sel_windows_gt_remaining) *
141 (in.get(C::bc_decomposition_bytes_to_read) - in.get(C::bc_decomposition_bytes_remaining)));
142 tmp *= scaling_factor;
143 std::get<14>(evals) += typename Accumulator::View(tmp);
144 }
145 {
146 using Accumulator = typename std::tuple_element_t<15, ContainerOverSubrelations>;
147 auto tmp = (in.get(C::bc_decomposition_bytes_pc_plus_1) -
148 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_shift));
149 tmp *= scaling_factor;
150 std::get<15>(evals) += typename Accumulator::View(tmp);
151 }
152 {
153 using Accumulator = typename std::tuple_element_t<16, ContainerOverSubrelations>;
154 auto tmp =
155 (in.get(C::bc_decomposition_bytes_pc_plus_2) -
156 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_1_shift));
157 tmp *= scaling_factor;
158 std::get<16>(evals) += typename Accumulator::View(tmp);
159 }
160 {
161 using Accumulator = typename std::tuple_element_t<17, ContainerOverSubrelations>;
162 auto tmp =
163 (in.get(C::bc_decomposition_bytes_pc_plus_3) -
164 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_2_shift));
165 tmp *= scaling_factor;
166 std::get<17>(evals) += typename Accumulator::View(tmp);
167 }
168 {
169 using Accumulator = typename std::tuple_element_t<18, ContainerOverSubrelations>;
170 auto tmp =
171 (in.get(C::bc_decomposition_bytes_pc_plus_4) -
172 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_3_shift));
173 tmp *= scaling_factor;
174 std::get<18>(evals) += typename Accumulator::View(tmp);
175 }
176 {
177 using Accumulator = typename std::tuple_element_t<19, ContainerOverSubrelations>;
178 auto tmp =
179 (in.get(C::bc_decomposition_bytes_pc_plus_5) -
180 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_4_shift));
181 tmp *= scaling_factor;
182 std::get<19>(evals) += typename Accumulator::View(tmp);
183 }
184 {
185 using Accumulator = typename std::tuple_element_t<20, ContainerOverSubrelations>;
186 auto tmp =
187 (in.get(C::bc_decomposition_bytes_pc_plus_6) -
188 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_5_shift));
189 tmp *= scaling_factor;
190 std::get<20>(evals) += typename Accumulator::View(tmp);
191 }
192 {
193 using Accumulator = typename std::tuple_element_t<21, ContainerOverSubrelations>;
194 auto tmp =
195 (in.get(C::bc_decomposition_bytes_pc_plus_7) -
196 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_6_shift));
197 tmp *= scaling_factor;
198 std::get<21>(evals) += typename Accumulator::View(tmp);
199 }
200 {
201 using Accumulator = typename std::tuple_element_t<22, ContainerOverSubrelations>;
202 auto tmp =
203 (in.get(C::bc_decomposition_bytes_pc_plus_8) -
204 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_7_shift));
205 tmp *= scaling_factor;
206 std::get<22>(evals) += typename Accumulator::View(tmp);
207 }
208 {
209 using Accumulator = typename std::tuple_element_t<23, ContainerOverSubrelations>;
210 auto tmp =
211 (in.get(C::bc_decomposition_bytes_pc_plus_9) -
212 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_8_shift));
213 tmp *= scaling_factor;
214 std::get<23>(evals) += typename Accumulator::View(tmp);
215 }
216 {
217 using Accumulator = typename std::tuple_element_t<24, ContainerOverSubrelations>;
218 auto tmp =
219 (in.get(C::bc_decomposition_bytes_pc_plus_10) -
220 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_9_shift));
221 tmp *= scaling_factor;
222 std::get<24>(evals) += typename Accumulator::View(tmp);
223 }
224 {
225 using Accumulator = typename std::tuple_element_t<25, ContainerOverSubrelations>;
226 auto tmp =
227 (in.get(C::bc_decomposition_bytes_pc_plus_11) -
228 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_10_shift));
229 tmp *= scaling_factor;
230 std::get<25>(evals) += typename Accumulator::View(tmp);
231 }
232 {
233 using Accumulator = typename std::tuple_element_t<26, ContainerOverSubrelations>;
234 auto tmp =
235 (in.get(C::bc_decomposition_bytes_pc_plus_12) -
236 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_11_shift));
237 tmp *= scaling_factor;
238 std::get<26>(evals) += typename Accumulator::View(tmp);
239 }
240 {
241 using Accumulator = typename std::tuple_element_t<27, ContainerOverSubrelations>;
242 auto tmp =
243 (in.get(C::bc_decomposition_bytes_pc_plus_13) -
244 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_12_shift));
245 tmp *= scaling_factor;
246 std::get<27>(evals) += typename Accumulator::View(tmp);
247 }
248 {
249 using Accumulator = typename std::tuple_element_t<28, ContainerOverSubrelations>;
250 auto tmp =
251 (in.get(C::bc_decomposition_bytes_pc_plus_14) -
252 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_13_shift));
253 tmp *= scaling_factor;
254 std::get<28>(evals) += typename Accumulator::View(tmp);
255 }
256 {
257 using Accumulator = typename std::tuple_element_t<29, ContainerOverSubrelations>;
258 auto tmp =
259 (in.get(C::bc_decomposition_bytes_pc_plus_15) -
260 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_14_shift));
261 tmp *= scaling_factor;
262 std::get<29>(evals) += typename Accumulator::View(tmp);
263 }
264 {
265 using Accumulator = typename std::tuple_element_t<30, ContainerOverSubrelations>;
266 auto tmp =
267 (in.get(C::bc_decomposition_bytes_pc_plus_16) -
268 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_15_shift));
269 tmp *= scaling_factor;
270 std::get<30>(evals) += typename Accumulator::View(tmp);
271 }
272 {
273 using Accumulator = typename std::tuple_element_t<31, ContainerOverSubrelations>;
274 auto tmp =
275 (in.get(C::bc_decomposition_bytes_pc_plus_17) -
276 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_16_shift));
277 tmp *= scaling_factor;
278 std::get<31>(evals) += typename Accumulator::View(tmp);
279 }
280 {
281 using Accumulator = typename std::tuple_element_t<32, ContainerOverSubrelations>;
282 auto tmp =
283 (in.get(C::bc_decomposition_bytes_pc_plus_18) -
284 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_17_shift));
285 tmp *= scaling_factor;
286 std::get<32>(evals) += typename Accumulator::View(tmp);
287 }
288 {
289 using Accumulator = typename std::tuple_element_t<33, ContainerOverSubrelations>;
290 auto tmp =
291 (in.get(C::bc_decomposition_bytes_pc_plus_19) -
292 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_18_shift));
293 tmp *= scaling_factor;
294 std::get<33>(evals) += typename Accumulator::View(tmp);
295 }
296 {
297 using Accumulator = typename std::tuple_element_t<34, ContainerOverSubrelations>;
298 auto tmp =
299 (in.get(C::bc_decomposition_bytes_pc_plus_20) -
300 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_19_shift));
301 tmp *= scaling_factor;
302 std::get<34>(evals) += typename Accumulator::View(tmp);
303 }
304 {
305 using Accumulator = typename std::tuple_element_t<35, ContainerOverSubrelations>;
306 auto tmp =
307 (in.get(C::bc_decomposition_bytes_pc_plus_21) -
308 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_20_shift));
309 tmp *= scaling_factor;
310 std::get<35>(evals) += typename Accumulator::View(tmp);
311 }
312 {
313 using Accumulator = typename std::tuple_element_t<36, ContainerOverSubrelations>;
314 auto tmp =
315 (in.get(C::bc_decomposition_bytes_pc_plus_22) -
316 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_21_shift));
317 tmp *= scaling_factor;
318 std::get<36>(evals) += typename Accumulator::View(tmp);
319 }
320 {
321 using Accumulator = typename std::tuple_element_t<37, ContainerOverSubrelations>;
322 auto tmp =
323 (in.get(C::bc_decomposition_bytes_pc_plus_23) -
324 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_22_shift));
325 tmp *= scaling_factor;
326 std::get<37>(evals) += typename Accumulator::View(tmp);
327 }
328 {
329 using Accumulator = typename std::tuple_element_t<38, ContainerOverSubrelations>;
330 auto tmp =
331 (in.get(C::bc_decomposition_bytes_pc_plus_24) -
332 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_23_shift));
333 tmp *= scaling_factor;
334 std::get<38>(evals) += typename Accumulator::View(tmp);
335 }
336 {
337 using Accumulator = typename std::tuple_element_t<39, ContainerOverSubrelations>;
338 auto tmp =
339 (in.get(C::bc_decomposition_bytes_pc_plus_25) -
340 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_24_shift));
341 tmp *= scaling_factor;
342 std::get<39>(evals) += typename Accumulator::View(tmp);
343 }
344 {
345 using Accumulator = typename std::tuple_element_t<40, ContainerOverSubrelations>;
346 auto tmp =
347 (in.get(C::bc_decomposition_bytes_pc_plus_26) -
348 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_25_shift));
349 tmp *= scaling_factor;
350 std::get<40>(evals) += typename Accumulator::View(tmp);
351 }
352 {
353 using Accumulator = typename std::tuple_element_t<41, ContainerOverSubrelations>;
354 auto tmp =
355 (in.get(C::bc_decomposition_bytes_pc_plus_27) -
356 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_26_shift));
357 tmp *= scaling_factor;
358 std::get<41>(evals) += typename Accumulator::View(tmp);
359 }
360 {
361 using Accumulator = typename std::tuple_element_t<42, ContainerOverSubrelations>;
362 auto tmp =
363 (in.get(C::bc_decomposition_bytes_pc_plus_28) -
364 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_27_shift));
365 tmp *= scaling_factor;
366 std::get<42>(evals) += typename Accumulator::View(tmp);
367 }
368 {
369 using Accumulator = typename std::tuple_element_t<43, ContainerOverSubrelations>;
370 auto tmp =
371 (in.get(C::bc_decomposition_bytes_pc_plus_29) -
372 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_28_shift));
373 tmp *= scaling_factor;
374 std::get<43>(evals) += typename Accumulator::View(tmp);
375 }
376 {
377 using Accumulator = typename std::tuple_element_t<44, ContainerOverSubrelations>;
378 auto tmp =
379 (in.get(C::bc_decomposition_bytes_pc_plus_30) -
380 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_29_shift));
381 tmp *= scaling_factor;
382 std::get<44>(evals) += typename Accumulator::View(tmp);
383 }
384 {
385 using Accumulator = typename std::tuple_element_t<45, ContainerOverSubrelations>;
386 auto tmp =
387 (in.get(C::bc_decomposition_bytes_pc_plus_31) -
388 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_30_shift));
389 tmp *= scaling_factor;
390 std::get<45>(evals) += typename Accumulator::View(tmp);
391 }
392 {
393 using Accumulator = typename std::tuple_element_t<46, ContainerOverSubrelations>;
394 auto tmp =
395 (in.get(C::bc_decomposition_bytes_pc_plus_32) -
396 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_31_shift));
397 tmp *= scaling_factor;
398 std::get<46>(evals) += typename Accumulator::View(tmp);
399 }
400 {
401 using Accumulator = typename std::tuple_element_t<47, ContainerOverSubrelations>;
402 auto tmp =
403 (in.get(C::bc_decomposition_bytes_pc_plus_33) -
404 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_32_shift));
405 tmp *= scaling_factor;
406 std::get<47>(evals) += typename Accumulator::View(tmp);
407 }
408 {
409 using Accumulator = typename std::tuple_element_t<48, ContainerOverSubrelations>;
410 auto tmp =
411 (in.get(C::bc_decomposition_bytes_pc_plus_34) -
412 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_33_shift));
413 tmp *= scaling_factor;
414 std::get<48>(evals) += typename Accumulator::View(tmp);
415 }
416 {
417 using Accumulator = typename std::tuple_element_t<49, ContainerOverSubrelations>;
418 auto tmp =
419 (in.get(C::bc_decomposition_bytes_pc_plus_35) -
420 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_34_shift));
421 tmp *= scaling_factor;
422 std::get<49>(evals) += typename Accumulator::View(tmp);
423 }
424 {
425 using Accumulator = typename std::tuple_element_t<50, ContainerOverSubrelations>;
426 auto tmp =
427 (in.get(C::bc_decomposition_bytes_pc_plus_36) -
428 (FF(1) - bc_decomposition_FIRST_OR_LAST_CONTRACT) * in.get(C::bc_decomposition_bytes_pc_plus_35_shift));
429 tmp *= scaling_factor;
430 std::get<50>(evals) += typename Accumulator::View(tmp);
431 }
432 {
433 using Accumulator = typename std::tuple_element_t<51, ContainerOverSubrelations>;
434 auto tmp = in.get(C::bc_decomposition_sel_packed) * (FF(1) - in.get(C::bc_decomposition_sel_packed));
435 tmp *= scaling_factor;
436 std::get<51>(evals) += typename Accumulator::View(tmp);
437 }
438 { // SEL_TOGGLED_AT_PACKED
439 using Accumulator = typename std::tuple_element_t<52, ContainerOverSubrelations>;
440 auto tmp = in.get(C::bc_decomposition_sel_packed) * (FF(1) - in.get(C::bc_decomposition_sel));
441 tmp *= scaling_factor;
442 std::get<52>(evals) += typename Accumulator::View(tmp);
443 }
444 { // BC_DECOMPOSITION_REPACKING
445 using Accumulator = typename std::tuple_element_t<53, ContainerOverSubrelations>;
446 auto tmp =
447 in.get(C::bc_decomposition_sel_packed) *
448 ((FF(1) * in.get(C::bc_decomposition_bytes_pc_plus_30) +
449 FF(256) * in.get(C::bc_decomposition_bytes_pc_plus_29) +
450 FF(65536) * in.get(C::bc_decomposition_bytes_pc_plus_28) +
451 FF(16777216) * in.get(C::bc_decomposition_bytes_pc_plus_27) +
452 FF(4294967296UL) * in.get(C::bc_decomposition_bytes_pc_plus_26) +
453 FF(1099511627776UL) * in.get(C::bc_decomposition_bytes_pc_plus_25) +
454 FF(281474976710656UL) * in.get(C::bc_decomposition_bytes_pc_plus_24) +
455 FF(72057594037927936UL) * in.get(C::bc_decomposition_bytes_pc_plus_23) +
456 FF(uint256_t{ 0UL, 1UL, 0UL, 0UL }) * in.get(C::bc_decomposition_bytes_pc_plus_22) +
457 FF(uint256_t{ 0UL, 256UL, 0UL, 0UL }) * in.get(C::bc_decomposition_bytes_pc_plus_21) +
458 FF(uint256_t{ 0UL, 65536UL, 0UL, 0UL }) * in.get(C::bc_decomposition_bytes_pc_plus_20) +
459 FF(uint256_t{ 0UL, 16777216UL, 0UL, 0UL }) * in.get(C::bc_decomposition_bytes_pc_plus_19) +
460 FF(uint256_t{ 0UL, 4294967296UL, 0UL, 0UL }) * in.get(C::bc_decomposition_bytes_pc_plus_18) +
461 FF(uint256_t{ 0UL, 1099511627776UL, 0UL, 0UL }) * in.get(C::bc_decomposition_bytes_pc_plus_17) +
462 FF(uint256_t{ 0UL, 281474976710656UL, 0UL, 0UL }) * in.get(C::bc_decomposition_bytes_pc_plus_16) +
463 FF(uint256_t{ 0UL, 72057594037927936UL, 0UL, 0UL }) * in.get(C::bc_decomposition_bytes_pc_plus_15) +
464 FF(uint256_t{ 0UL, 0UL, 1UL, 0UL }) * in.get(C::bc_decomposition_bytes_pc_plus_14) +
465 FF(uint256_t{ 0UL, 0UL, 256UL, 0UL }) * in.get(C::bc_decomposition_bytes_pc_plus_13) +
466 FF(uint256_t{ 0UL, 0UL, 65536UL, 0UL }) * in.get(C::bc_decomposition_bytes_pc_plus_12) +
467 FF(uint256_t{ 0UL, 0UL, 16777216UL, 0UL }) * in.get(C::bc_decomposition_bytes_pc_plus_11) +
468 FF(uint256_t{ 0UL, 0UL, 4294967296UL, 0UL }) * in.get(C::bc_decomposition_bytes_pc_plus_10) +
469 FF(uint256_t{ 0UL, 0UL, 1099511627776UL, 0UL }) * in.get(C::bc_decomposition_bytes_pc_plus_9) +
470 FF(uint256_t{ 0UL, 0UL, 281474976710656UL, 0UL }) * in.get(C::bc_decomposition_bytes_pc_plus_8) +
471 FF(uint256_t{ 0UL, 0UL, 72057594037927936UL, 0UL }) * in.get(C::bc_decomposition_bytes_pc_plus_7) +
472 FF(uint256_t{ 0UL, 0UL, 0UL, 1UL }) * in.get(C::bc_decomposition_bytes_pc_plus_6) +
473 FF(uint256_t{ 0UL, 0UL, 0UL, 256UL }) * in.get(C::bc_decomposition_bytes_pc_plus_5) +
474 FF(uint256_t{ 0UL, 0UL, 0UL, 65536UL }) * in.get(C::bc_decomposition_bytes_pc_plus_4) +
475 FF(uint256_t{ 0UL, 0UL, 0UL, 16777216UL }) * in.get(C::bc_decomposition_bytes_pc_plus_3) +
476 FF(uint256_t{ 0UL, 0UL, 0UL, 4294967296UL }) * in.get(C::bc_decomposition_bytes_pc_plus_2) +
477 FF(uint256_t{ 0UL, 0UL, 0UL, 1099511627776UL }) * in.get(C::bc_decomposition_bytes_pc_plus_1) +
478 FF(uint256_t{ 0UL, 0UL, 0UL, 281474976710656UL }) * in.get(C::bc_decomposition_bytes)) -
479 in.get(C::bc_decomposition_packed_field));
480 tmp *= scaling_factor;
481 std::get<53>(evals) += typename Accumulator::View(tmp);
482 }
483}
484
485} // namespace bb::avm2
static void accumulate(ContainerOverSubrelations &evals, const AllEntities &in, const RelationParameters< FF > &, const FF &scaling_factor)
ColumnAndShifts
Definition columns.hpp:35
AvmFlavorSettings::FF FF
Definition field.hpp:10
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
#define PROFILE_THIS_NAME(name)
Definition op_count.hpp:16
Container for parameters used by the grand product (permutation, lookup) Honk relations.