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 { // BC_DEC_SEL_BYTES_REM_NON_ZERO
35 using View = typename std::tuple_element_t<2, ContainerOverSubrelations>::View;
36 auto tmp = (static_cast<View>(in.get(C::bc_decomposition_bytes_remaining)) *
37 ((FF(1) - static_cast<View>(in.get(C::bc_decomposition_sel))) *
38 (FF(1) - static_cast<View>(in.get(C::bc_decomposition_bytes_rem_inv))) +
39 static_cast<View>(in.get(C::bc_decomposition_bytes_rem_inv))) -
40 static_cast<View>(in.get(C::bc_decomposition_sel)));
41 std::get<2>(evals) += (tmp * scaling_factor);
42 }
43 { // TRACE_CONTINUITY
44 using View = typename std::tuple_element_t<3, ContainerOverSubrelations>::View;
45 auto tmp = (FF(1) - static_cast<View>(in.get(C::precomputed_first_row))) *
46 (FF(1) - static_cast<View>(in.get(C::bc_decomposition_sel))) *
47 static_cast<View>(in.get(C::bc_decomposition_sel_shift));
48 std::get<3>(evals) += (tmp * scaling_factor);
49 }
50 { // BC_DEC_LAST_CONTRACT_BYTES_REM_ONE
51 using View = typename std::tuple_element_t<4, ContainerOverSubrelations>::View;
52 auto tmp = static_cast<View>(in.get(C::bc_decomposition_sel)) *
53 (((static_cast<View>(in.get(C::bc_decomposition_bytes_remaining)) - FF(1)) *
54 (static_cast<View>(in.get(C::bc_decomposition_last_of_contract)) *
55 (FF(1) - static_cast<View>(in.get(C::bc_decomposition_bytes_rem_min_one_inv))) +
56 static_cast<View>(in.get(C::bc_decomposition_bytes_rem_min_one_inv))) +
57 static_cast<View>(in.get(C::bc_decomposition_last_of_contract))) -
58 FF(1));
59 std::get<4>(evals) += (tmp * scaling_factor);
60 }
61 { // BC_DEC_PC_ZERO_INITIALIZATION
62 using View = typename std::tuple_element_t<5, ContainerOverSubrelations>::View;
63 auto tmp = CView(bc_decomposition_LATCH_CONDITION) * static_cast<View>(in.get(C::bc_decomposition_pc_shift));
64 std::get<5>(evals) += (tmp * scaling_factor);
65 }
66 { // BC_DEC_PC_INCREMENT
67 using View = typename std::tuple_element_t<6, ContainerOverSubrelations>::View;
68 auto tmp = static_cast<View>(in.get(C::bc_decomposition_sel)) *
69 (FF(1) - static_cast<View>(in.get(C::bc_decomposition_last_of_contract))) *
70 ((static_cast<View>(in.get(C::bc_decomposition_pc_shift)) -
71 static_cast<View>(in.get(C::bc_decomposition_pc))) -
72 FF(1));
73 std::get<6>(evals) += (tmp * scaling_factor);
74 }
75 { // BC_DEC_BYTES_REMAINING_DECREMENT
76 using View = typename std::tuple_element_t<7, ContainerOverSubrelations>::View;
77 auto tmp = static_cast<View>(in.get(C::bc_decomposition_sel)) *
78 (FF(1) - static_cast<View>(in.get(C::bc_decomposition_last_of_contract))) *
79 ((static_cast<View>(in.get(C::bc_decomposition_bytes_remaining_shift)) -
80 static_cast<View>(in.get(C::bc_decomposition_bytes_remaining))) +
81 FF(1));
82 std::get<7>(evals) += (tmp * scaling_factor);
83 }
84 { // BC_DEC_ID_CONSTANT
85 using View = typename std::tuple_element_t<8, ContainerOverSubrelations>::View;
86 auto tmp = (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
87 (static_cast<View>(in.get(C::bc_decomposition_id_shift)) -
88 static_cast<View>(in.get(C::bc_decomposition_id)));
89 std::get<8>(evals) += (tmp * scaling_factor);
90 }
91 {
92 using View = typename std::tuple_element_t<9, ContainerOverSubrelations>::View;
93 auto tmp = static_cast<View>(in.get(C::bc_decomposition_sel_windows_gt_remaining)) *
94 (FF(1) - static_cast<View>(in.get(C::bc_decomposition_sel_windows_gt_remaining)));
95 std::get<9>(evals) += (tmp * scaling_factor);
96 }
97 {
98 using View = typename std::tuple_element_t<10, ContainerOverSubrelations>::View;
99 auto tmp = static_cast<View>(in.get(C::bc_decomposition_is_windows_eq_remaining)) *
100 (FF(1) - static_cast<View>(in.get(C::bc_decomposition_is_windows_eq_remaining)));
101 std::get<10>(evals) += (tmp * scaling_factor);
102 }
103 { // IS_WINDOWS_EQ_REMAINING
104 using View = typename std::tuple_element_t<11, ContainerOverSubrelations>::View;
105 auto tmp =
106 static_cast<View>(in.get(C::bc_decomposition_sel)) *
107 (((CView(bc_decomposition_WINDOW_SIZE) - static_cast<View>(in.get(C::bc_decomposition_bytes_remaining))) *
108 (static_cast<View>(in.get(C::bc_decomposition_is_windows_eq_remaining)) *
109 (FF(1) - static_cast<View>(in.get(C::bc_decomposition_windows_min_remaining_inv))) +
110 static_cast<View>(in.get(C::bc_decomposition_windows_min_remaining_inv))) +
111 static_cast<View>(in.get(C::bc_decomposition_is_windows_eq_remaining))) -
112 FF(1));
113 std::get<11>(evals) += (tmp * scaling_factor);
114 }
115 { // SEL_WINDOWS_GT_REMAINING_INIT
116 using View = typename std::tuple_element_t<12, ContainerOverSubrelations>::View;
117 auto tmp = static_cast<View>(in.get(C::bc_decomposition_last_of_contract)) *
118 (FF(1) - static_cast<View>(in.get(C::bc_decomposition_sel_windows_gt_remaining)));
119 std::get<12>(evals) += (tmp * scaling_factor);
120 }
121 { // SEL_WINDOWS_GT_REMAINING_PROPAGATION
122 using View = typename std::tuple_element_t<13, ContainerOverSubrelations>::View;
123 auto tmp = (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
124 ((static_cast<View>(in.get(C::bc_decomposition_sel_windows_gt_remaining_shift)) -
125 static_cast<View>(in.get(C::bc_decomposition_is_windows_eq_remaining))) -
126 static_cast<View>(in.get(C::bc_decomposition_sel_windows_gt_remaining)));
127 std::get<13>(evals) += (tmp * scaling_factor);
128 }
129 { // SET_BYTES_TO_READ
130 using View = typename std::tuple_element_t<14, ContainerOverSubrelations>::View;
131 auto tmp =
132 static_cast<View>(in.get(C::bc_decomposition_sel)) *
133 ((FF(1) - static_cast<View>(in.get(C::bc_decomposition_sel_windows_gt_remaining))) *
134 (static_cast<View>(in.get(C::bc_decomposition_bytes_to_read)) - CView(bc_decomposition_WINDOW_SIZE)) +
135 static_cast<View>(in.get(C::bc_decomposition_sel_windows_gt_remaining)) *
136 (static_cast<View>(in.get(C::bc_decomposition_bytes_to_read)) -
137 static_cast<View>(in.get(C::bc_decomposition_bytes_remaining))));
138 std::get<14>(evals) += (tmp * scaling_factor);
139 }
140 {
141 using View = typename std::tuple_element_t<15, ContainerOverSubrelations>::View;
142 auto tmp = (static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_1)) -
143 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
144 static_cast<View>(in.get(C::bc_decomposition_bytes_shift)));
145 std::get<15>(evals) += (tmp * scaling_factor);
146 }
147 {
148 using View = typename std::tuple_element_t<16, ContainerOverSubrelations>::View;
149 auto tmp = (static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_2)) -
150 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
151 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_1_shift)));
152 std::get<16>(evals) += (tmp * scaling_factor);
153 }
154 {
155 using View = typename std::tuple_element_t<17, ContainerOverSubrelations>::View;
156 auto tmp = (static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_3)) -
157 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
158 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_2_shift)));
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_4)) -
164 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
165 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_3_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_5)) -
171 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
172 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_4_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_6)) -
178 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
179 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_5_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_7)) -
185 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
186 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_6_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_8)) -
192 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
193 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_7_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_9)) -
199 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
200 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_8_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_10)) -
206 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
207 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_9_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_11)) -
213 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
214 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_10_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_12)) -
220 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
221 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_11_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_13)) -
227 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
228 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_12_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_14)) -
234 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
235 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_13_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_15)) -
241 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
242 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_14_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_16)) -
248 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
249 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_15_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_17)) -
255 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
256 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_16_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_18)) -
262 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
263 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_17_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_19)) -
269 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
270 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_18_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_20)) -
276 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
277 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_19_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_21)) -
283 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
284 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_20_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_22)) -
290 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
291 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_21_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_23)) -
297 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
298 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_22_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_24)) -
304 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
305 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_23_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_25)) -
311 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
312 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_24_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_26)) -
318 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
319 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_25_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_27)) -
325 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
326 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_26_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_28)) -
332 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
333 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_27_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_29)) -
339 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
340 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_28_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_30)) -
346 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
347 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_29_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_31)) -
353 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
354 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_30_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_32)) -
360 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
361 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_31_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_33)) -
367 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
368 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_32_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_34)) -
374 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
375 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_33_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_35)) -
381 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
382 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_34_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_36)) -
388 (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
389 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_35_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_sel_packed)) *
395 (FF(1) - static_cast<View>(in.get(C::bc_decomposition_sel_packed)));
396 std::get<51>(evals) += (tmp * scaling_factor);
397 }
398 {
399 using View = typename std::tuple_element_t<52, ContainerOverSubrelations>::View;
400 auto tmp = static_cast<View>(in.get(C::bc_decomposition_sel_packed_read_0_)) *
401 (FF(1) - static_cast<View>(in.get(C::bc_decomposition_sel_packed_read_0_)));
402 std::get<52>(evals) += (tmp * scaling_factor);
403 }
404 {
405 using View = typename std::tuple_element_t<53, ContainerOverSubrelations>::View;
406 auto tmp = static_cast<View>(in.get(C::bc_decomposition_sel_packed_read_1_)) *
407 (FF(1) - static_cast<View>(in.get(C::bc_decomposition_sel_packed_read_1_)));
408 std::get<53>(evals) += (tmp * scaling_factor);
409 }
410 {
411 using View = typename std::tuple_element_t<54, ContainerOverSubrelations>::View;
412 auto tmp = static_cast<View>(in.get(C::bc_decomposition_sel_packed_read_2_)) *
413 (FF(1) - static_cast<View>(in.get(C::bc_decomposition_sel_packed_read_2_)));
414 std::get<54>(evals) += (tmp * scaling_factor);
415 }
416 { // PACKED_ROW_NEEDS_PERM_SELECTOR
417 using View = typename std::tuple_element_t<55, ContainerOverSubrelations>::View;
418 auto tmp = (static_cast<View>(in.get(C::bc_decomposition_sel_packed)) -
419 (static_cast<View>(in.get(C::bc_decomposition_sel_packed_read_0_)) +
420 static_cast<View>(in.get(C::bc_decomposition_sel_packed_read_1_)) +
421 static_cast<View>(in.get(C::bc_decomposition_sel_packed_read_2_))));
422 std::get<55>(evals) += (tmp * scaling_factor);
423 }
424 { // SEL_TOGGLED_AT_PACKED
425 using View = typename std::tuple_element_t<56, ContainerOverSubrelations>::View;
426 auto tmp = static_cast<View>(in.get(C::bc_decomposition_sel_packed)) *
427 (FF(1) - static_cast<View>(in.get(C::bc_decomposition_sel)));
428 std::get<56>(evals) += (tmp * scaling_factor);
429 }
430 { // SEL_PACKED_INIT
431 using View = typename std::tuple_element_t<57, ContainerOverSubrelations>::View;
432 auto tmp =
433 CView(bc_decomposition_LATCH_CONDITION) * (static_cast<View>(in.get(C::bc_decomposition_sel_shift)) -
434 static_cast<View>(in.get(C::bc_decomposition_sel_packed_shift)));
435 std::get<57>(evals) += (tmp * scaling_factor);
436 }
437 { // PC_IS_PACKED
438 using View = typename std::tuple_element_t<58, ContainerOverSubrelations>::View;
439 auto tmp = static_cast<View>(in.get(C::bc_decomposition_sel)) *
440 (((static_cast<View>(in.get(C::bc_decomposition_next_packed_pc)) -
441 static_cast<View>(in.get(C::bc_decomposition_pc))) *
442 (static_cast<View>(in.get(C::bc_decomposition_sel_packed)) *
443 (FF(1) - static_cast<View>(in.get(C::bc_decomposition_next_packed_pc_min_pc_inv))) +
444 static_cast<View>(in.get(C::bc_decomposition_next_packed_pc_min_pc_inv))) +
445 static_cast<View>(in.get(C::bc_decomposition_sel_packed))) -
446 FF(1));
447 std::get<58>(evals) += (tmp * scaling_factor);
448 }
449 { // NEXT_PACKED_PC_PROPAGATION
450 using View = typename std::tuple_element_t<59, ContainerOverSubrelations>::View;
451 auto tmp = (FF(1) - CView(bc_decomposition_LATCH_CONDITION)) *
452 (static_cast<View>(in.get(C::bc_decomposition_next_packed_pc_shift)) -
453 (static_cast<View>(in.get(C::bc_decomposition_next_packed_pc)) +
454 static_cast<View>(in.get(C::bc_decomposition_sel_packed)) * FF(31)));
455 std::get<59>(evals) += (tmp * scaling_factor);
456 }
457 { // BC_DECOMPOSITION_REPACKING
458 using View = typename std::tuple_element_t<60, ContainerOverSubrelations>::View;
459 auto tmp =
460 static_cast<View>(in.get(C::bc_decomposition_sel_packed)) *
461 ((FF(1) * static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_30)) +
462 FF(256) * static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_29)) +
463 FF(65536) * static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_28)) +
464 FF(16777216) * static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_27)) +
465 FF(4294967296UL) * static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_26)) +
466 FF(1099511627776UL) * static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_25)) +
467 FF(281474976710656UL) * static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_24)) +
468 FF(72057594037927936UL) * static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_23)) +
469 FF(uint256_t{ 0UL, 1UL, 0UL, 0UL }) * static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_22)) +
470 FF(uint256_t{ 0UL, 256UL, 0UL, 0UL }) * static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_21)) +
471 FF(uint256_t{ 0UL, 65536UL, 0UL, 0UL }) *
472 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_20)) +
473 FF(uint256_t{ 0UL, 16777216UL, 0UL, 0UL }) *
474 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_19)) +
475 FF(uint256_t{ 0UL, 4294967296UL, 0UL, 0UL }) *
476 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_18)) +
477 FF(uint256_t{ 0UL, 1099511627776UL, 0UL, 0UL }) *
478 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_17)) +
479 FF(uint256_t{ 0UL, 281474976710656UL, 0UL, 0UL }) *
480 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_16)) +
481 FF(uint256_t{ 0UL, 72057594037927936UL, 0UL, 0UL }) *
482 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_15)) +
483 FF(uint256_t{ 0UL, 0UL, 1UL, 0UL }) * static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_14)) +
484 FF(uint256_t{ 0UL, 0UL, 256UL, 0UL }) * static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_13)) +
485 FF(uint256_t{ 0UL, 0UL, 65536UL, 0UL }) *
486 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_12)) +
487 FF(uint256_t{ 0UL, 0UL, 16777216UL, 0UL }) *
488 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_11)) +
489 FF(uint256_t{ 0UL, 0UL, 4294967296UL, 0UL }) *
490 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_10)) +
491 FF(uint256_t{ 0UL, 0UL, 1099511627776UL, 0UL }) *
492 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_9)) +
493 FF(uint256_t{ 0UL, 0UL, 281474976710656UL, 0UL }) *
494 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_8)) +
495 FF(uint256_t{ 0UL, 0UL, 72057594037927936UL, 0UL }) *
496 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_7)) +
497 FF(uint256_t{ 0UL, 0UL, 0UL, 1UL }) * static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_6)) +
498 FF(uint256_t{ 0UL, 0UL, 0UL, 256UL }) * static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_5)) +
499 FF(uint256_t{ 0UL, 0UL, 0UL, 65536UL }) * static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_4)) +
500 FF(uint256_t{ 0UL, 0UL, 0UL, 16777216UL }) *
501 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_3)) +
502 FF(uint256_t{ 0UL, 0UL, 0UL, 4294967296UL }) *
503 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_2)) +
504 FF(uint256_t{ 0UL, 0UL, 0UL, 1099511627776UL }) *
505 static_cast<View>(in.get(C::bc_decomposition_bytes_pc_plus_1)) +
506 FF(uint256_t{ 0UL, 0UL, 0UL, 281474976710656UL }) *
507 static_cast<View>(in.get(C::bc_decomposition_bytes))) -
508 static_cast<View>(in.get(C::bc_decomposition_packed_field)));
509 std::get<60>(evals) += (tmp * scaling_factor);
510 }
511}
512
513} // namespace bb::avm2
static void accumulate(ContainerOverSubrelations &evals, const AllEntities &in, const RelationParameters< FF > &, const FF &scaling_factor)
ColumnAndShifts
Definition columns.hpp:34
AvmFlavorSettings::FF FF
Definition field.hpp:10
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.