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