Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
emit_unencrypted_log_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 emit_unencrypted_logImpl<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 constants_FLAT_PUBLIC_LOGS_HEADER_LENGTH = FF(1);
19 const auto constants_FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH = FF(4096);
20 const auto constants_PUBLIC_LOG_HEADER_LENGTH = FF(2);
21 const auto constants_MEM_TAG_FF = FF(0);
22 const auto constants_AVM_MEMORY_SIZE = FF(4294967296UL);
23 const auto constants_AVM_PUBLIC_INPUTS_AVM_ACCUMULATED_DATA_PUBLIC_LOGS_ROW_IDX = FF(522);
24 const auto emit_unencrypted_log_NOT_END =
25 in.get(C::emit_unencrypted_log_sel) * (FF(1) - in.get(C::emit_unencrypted_log_end));
26 const auto emit_unencrypted_log_LATCH_CONDITION =
27 in.get(C::emit_unencrypted_log_end) + in.get(C::precomputed_first_row);
28 const auto emit_unencrypted_log_TOTAL_LOG_FIELDS_SIZE =
29 constants_PUBLIC_LOG_HEADER_LENGTH + in.get(C::emit_unencrypted_log_log_size);
30 const auto emit_unencrypted_log_IS_WRITE_LOG_LENGTH = in.get(C::emit_unencrypted_log_start);
31 const auto emit_unencrypted_log_WRONG_NEXT_TAG = (FF(1) - in.get(C::emit_unencrypted_log_correct_tag_shift));
32
33 {
34 using View = typename std::tuple_element_t<0, ContainerOverSubrelations>::View;
35 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_sel)) *
36 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_sel)));
37 std::get<0>(evals) += (tmp * scaling_factor);
38 }
39 {
40 using View = typename std::tuple_element_t<1, ContainerOverSubrelations>::View;
41 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_error)) *
42 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_error)));
43 std::get<1>(evals) += (tmp * scaling_factor);
44 }
45 {
46 using View = typename std::tuple_element_t<2, ContainerOverSubrelations>::View;
47 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_start)) *
48 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_start)));
49 std::get<2>(evals) += (tmp * scaling_factor);
50 }
51 {
52 using View = typename std::tuple_element_t<3, ContainerOverSubrelations>::View;
53 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_end)) *
54 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_end)));
55 std::get<3>(evals) += (tmp * scaling_factor);
56 }
57 {
58 using View = typename std::tuple_element_t<4, ContainerOverSubrelations>::View;
59 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_end)) *
60 static_cast<View>(in.get(C::precomputed_first_row));
61 std::get<4>(evals) += (tmp * scaling_factor);
62 }
63 { // START_AFTER_LATCH
64 using View = typename std::tuple_element_t<5, ContainerOverSubrelations>::View;
65 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_sel_shift)) *
66 (static_cast<View>(in.get(C::emit_unencrypted_log_start_shift)) -
67 CView(emit_unencrypted_log_LATCH_CONDITION));
68 std::get<5>(evals) += (tmp * scaling_factor);
69 }
70 { // SELECTOR_ON_START
71 using View = typename std::tuple_element_t<6, ContainerOverSubrelations>::View;
72 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_start)) *
73 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_sel)));
74 std::get<6>(evals) += (tmp * scaling_factor);
75 }
76 { // SELECTOR_CONSISTENCY
77 using View = typename std::tuple_element_t<7, ContainerOverSubrelations>::View;
78 auto tmp = (static_cast<View>(in.get(C::emit_unencrypted_log_sel_shift)) -
79 static_cast<View>(in.get(C::emit_unencrypted_log_sel))) *
80 (FF(1) - CView(emit_unencrypted_log_LATCH_CONDITION));
81 std::get<7>(evals) += (tmp * scaling_factor);
82 }
83 { // SELECTOR_ON_END
84 using View = typename std::tuple_element_t<8, ContainerOverSubrelations>::View;
85 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_end)) *
86 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_sel)));
87 std::get<8>(evals) += (tmp * scaling_factor);
88 }
89 {
90 using View = typename std::tuple_element_t<9, ContainerOverSubrelations>::View;
91 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_start)) *
92 (((CView(constants_PUBLIC_LOG_HEADER_LENGTH) +
93 static_cast<View>(in.get(C::emit_unencrypted_log_log_size))) -
94 FF(1)) -
95 static_cast<View>(in.get(C::emit_unencrypted_log_remaining_rows)));
96 std::get<9>(evals) += (tmp * scaling_factor);
97 }
98 { // REMAINING_ROWS_DECREMENT
99 using View = typename std::tuple_element_t<10, ContainerOverSubrelations>::View;
100 auto tmp = CView(emit_unencrypted_log_NOT_END) *
101 ((static_cast<View>(in.get(C::emit_unencrypted_log_remaining_rows)) - FF(1)) -
102 static_cast<View>(in.get(C::emit_unencrypted_log_remaining_rows_shift)));
103 std::get<10>(evals) += (tmp * scaling_factor);
104 }
105 {
106 using View = typename std::tuple_element_t<11, ContainerOverSubrelations>::View;
107 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_sel)) *
108 ((static_cast<View>(in.get(C::emit_unencrypted_log_remaining_rows)) *
109 (static_cast<View>(in.get(C::emit_unencrypted_log_end)) *
110 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_remaining_rows_inv))) +
111 static_cast<View>(in.get(C::emit_unencrypted_log_remaining_rows_inv))) -
112 FF(1)) +
113 static_cast<View>(in.get(C::emit_unencrypted_log_end)));
114 std::get<11>(evals) += (tmp * scaling_factor);
115 }
116 {
117 using View = typename std::tuple_element_t<12, ContainerOverSubrelations>::View;
118 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_start)) *
119 (static_cast<View>(in.get(C::emit_unencrypted_log_max_mem_size)) - CView(constants_AVM_MEMORY_SIZE));
120 std::get<12>(evals) += (tmp * scaling_factor);
121 }
122 {
123 using View = typename std::tuple_element_t<13, ContainerOverSubrelations>::View;
124 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_start)) *
125 ((static_cast<View>(in.get(C::emit_unencrypted_log_log_address)) +
126 static_cast<View>(in.get(C::emit_unencrypted_log_log_size))) -
127 static_cast<View>(in.get(C::emit_unencrypted_log_end_log_address_upper_bound)));
128 std::get<13>(evals) += (tmp * scaling_factor);
129 }
130 { // ERROR_OUT_OF_BOUNDS_CONSISTENCY
131 using View = typename std::tuple_element_t<14, ContainerOverSubrelations>::View;
132 auto tmp = CView(emit_unencrypted_log_NOT_END) *
133 (static_cast<View>(in.get(C::emit_unencrypted_log_error_out_of_bounds_shift)) -
134 static_cast<View>(in.get(C::emit_unencrypted_log_error_out_of_bounds)));
135 std::get<14>(evals) += (tmp * scaling_factor);
136 }
137 {
138 using View = typename std::tuple_element_t<15, ContainerOverSubrelations>::View;
139 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_error_too_many_log_fields)) *
140 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_error_too_many_log_fields)));
141 std::get<15>(evals) += (tmp * scaling_factor);
142 }
143 {
144 using View = typename std::tuple_element_t<16, ContainerOverSubrelations>::View;
145 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_start)) *
146 ((static_cast<View>(in.get(C::emit_unencrypted_log_prev_num_unencrypted_log_fields)) +
147 CView(emit_unencrypted_log_TOTAL_LOG_FIELDS_SIZE)) -
148 static_cast<View>(in.get(C::emit_unencrypted_log_expected_next_log_fields)));
149 std::get<16>(evals) += (tmp * scaling_factor);
150 }
151 {
152 using View = typename std::tuple_element_t<17, ContainerOverSubrelations>::View;
153 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_start)) *
154 (static_cast<View>(in.get(C::emit_unencrypted_log_public_logs_payload_length)) -
155 CView(constants_FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH));
156 std::get<17>(evals) += (tmp * scaling_factor);
157 }
158 {
159 using View = typename std::tuple_element_t<18, ContainerOverSubrelations>::View;
160 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_error_tag_mismatch)) *
161 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_error_tag_mismatch)));
162 std::get<18>(evals) += (tmp * scaling_factor);
163 }
164 { // ERROR_TAG_MISMATCH_CONSISTENCY
165 using View = typename std::tuple_element_t<19, ContainerOverSubrelations>::View;
166 auto tmp = CView(emit_unencrypted_log_NOT_END) *
167 (static_cast<View>(in.get(C::emit_unencrypted_log_error_tag_mismatch_shift)) -
168 static_cast<View>(in.get(C::emit_unencrypted_log_error_tag_mismatch)));
169 std::get<19>(evals) += (tmp * scaling_factor);
170 }
171 {
172 using View = typename std::tuple_element_t<20, ContainerOverSubrelations>::View;
173 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_seen_wrong_tag)) *
174 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_seen_wrong_tag)));
175 std::get<20>(evals) += (tmp * scaling_factor);
176 }
177 {
178 using View = typename std::tuple_element_t<21, ContainerOverSubrelations>::View;
179 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_start)) *
180 static_cast<View>(in.get(C::emit_unencrypted_log_seen_wrong_tag));
181 std::get<21>(evals) += (tmp * scaling_factor);
182 }
183 { // WRONG_TAG_CHECK
184 using View = typename std::tuple_element_t<22, ContainerOverSubrelations>::View;
185 auto tmp = CView(emit_unencrypted_log_NOT_END) *
186 (((FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_seen_wrong_tag))) *
187 CView(emit_unencrypted_log_WRONG_NEXT_TAG) +
188 static_cast<View>(in.get(C::emit_unencrypted_log_seen_wrong_tag))) -
189 static_cast<View>(in.get(C::emit_unencrypted_log_seen_wrong_tag_shift)));
190 std::get<22>(evals) += (tmp * scaling_factor);
191 }
192 {
193 using View = typename std::tuple_element_t<23, ContainerOverSubrelations>::View;
194 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_end)) *
195 (static_cast<View>(in.get(C::emit_unencrypted_log_error_tag_mismatch)) -
196 static_cast<View>(in.get(C::emit_unencrypted_log_seen_wrong_tag)));
197 std::get<23>(evals) += (tmp * scaling_factor);
198 }
199 {
200 using View = typename std::tuple_element_t<24, ContainerOverSubrelations>::View;
201 auto tmp =
202 static_cast<View>(in.get(C::emit_unencrypted_log_start)) *
203 ((FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_error_too_many_log_fields))) *
204 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_error_tag_mismatch))) *
205 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_is_static))) -
206 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_error_too_many_logs_wrong_tag_is_static))));
207 std::get<24>(evals) += (tmp * scaling_factor);
208 }
209 {
210 using View = typename std::tuple_element_t<25, ContainerOverSubrelations>::View;
211 auto tmp =
212 static_cast<View>(in.get(C::emit_unencrypted_log_start)) *
213 ((FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_error_out_of_bounds))) *
214 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_error_too_many_logs_wrong_tag_is_static))) -
215 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_error))));
216 std::get<25>(evals) += (tmp * scaling_factor);
217 }
218 {
219 using View = typename std::tuple_element_t<26, ContainerOverSubrelations>::View;
220 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_start)) *
221 ((static_cast<View>(in.get(C::emit_unencrypted_log_prev_num_unencrypted_log_fields)) +
222 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_error))) *
223 CView(emit_unencrypted_log_TOTAL_LOG_FIELDS_SIZE)) -
224 static_cast<View>(in.get(C::emit_unencrypted_log_next_num_unencrypted_log_fields)));
225 std::get<26>(evals) += (tmp * scaling_factor);
226 }
227 {
228 using View = typename std::tuple_element_t<27, ContainerOverSubrelations>::View;
229 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_is_write_contract_address)) *
230 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_is_write_contract_address)));
231 std::get<27>(evals) += (tmp * scaling_factor);
232 }
233 {
234 using View = typename std::tuple_element_t<28, ContainerOverSubrelations>::View;
235 auto tmp = (static_cast<View>(in.get(C::emit_unencrypted_log_is_write_contract_address_shift)) -
236 static_cast<View>(in.get(C::emit_unencrypted_log_start)));
237 std::get<28>(evals) += (tmp * scaling_factor);
238 }
239 {
240 using View = typename std::tuple_element_t<29, ContainerOverSubrelations>::View;
241 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_is_write_memory_value)) *
242 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_is_write_memory_value)));
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::emit_unencrypted_log_start)) *
248 static_cast<View>(in.get(C::emit_unencrypted_log_is_write_memory_value));
249 std::get<30>(evals) += (tmp * scaling_factor);
250 }
251 {
252 using View = typename std::tuple_element_t<31, ContainerOverSubrelations>::View;
253 auto tmp = CView(emit_unencrypted_log_NOT_END) *
254 ((static_cast<View>(in.get(C::emit_unencrypted_log_is_write_memory_value)) +
255 static_cast<View>(in.get(C::emit_unencrypted_log_is_write_contract_address))) -
256 static_cast<View>(in.get(C::emit_unencrypted_log_is_write_memory_value_shift)));
257 std::get<31>(evals) += (tmp * scaling_factor);
258 }
259 { // SEL_SHOULD_READ_MEMORY_IS_SEL_AND_WRITE_MEM_AND_NO_ERR
260 using View = typename std::tuple_element_t<32, ContainerOverSubrelations>::View;
261 auto tmp = (static_cast<View>(in.get(C::emit_unencrypted_log_sel_should_read_memory)) -
262 static_cast<View>(in.get(C::emit_unencrypted_log_sel)) *
263 static_cast<View>(in.get(C::emit_unencrypted_log_is_write_memory_value)) *
264 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_error_out_of_bounds))));
265 std::get<32>(evals) += (tmp * scaling_factor);
266 }
267 { // LOG_ADDRESS_INCREMENT
268 using View = typename std::tuple_element_t<33, ContainerOverSubrelations>::View;
269 auto tmp = CView(emit_unencrypted_log_NOT_END) *
270 ((static_cast<View>(in.get(C::emit_unencrypted_log_log_address)) +
271 static_cast<View>(in.get(C::emit_unencrypted_log_is_write_memory_value))) -
272 static_cast<View>(in.get(C::emit_unencrypted_log_log_address_shift)));
273 std::get<33>(evals) += (tmp * scaling_factor);
274 }
275 { // EXEC_CLK_CONSISTENCY
276 using View = typename std::tuple_element_t<34, ContainerOverSubrelations>::View;
277 auto tmp = CView(emit_unencrypted_log_NOT_END) *
278 (static_cast<View>(in.get(C::emit_unencrypted_log_execution_clk)) -
279 static_cast<View>(in.get(C::emit_unencrypted_log_execution_clk_shift)));
280 std::get<34>(evals) += (tmp * scaling_factor);
281 }
282 { // SPACE_ID_CONSISTENCY
283 using View = typename std::tuple_element_t<35, ContainerOverSubrelations>::View;
284 auto tmp =
285 CView(emit_unencrypted_log_NOT_END) * (static_cast<View>(in.get(C::emit_unencrypted_log_space_id)) -
286 static_cast<View>(in.get(C::emit_unencrypted_log_space_id_shift)));
287 std::get<35>(evals) += (tmp * scaling_factor);
288 }
289 {
290 using View = typename std::tuple_element_t<36, ContainerOverSubrelations>::View;
291 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_sel)) *
292 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_sel_should_read_memory))) *
293 (FF(0) - static_cast<View>(in.get(C::emit_unencrypted_log_value)));
294 std::get<36>(evals) += (tmp * scaling_factor);
295 }
296 {
297 using View = typename std::tuple_element_t<37, ContainerOverSubrelations>::View;
298 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_sel)) *
299 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_sel_should_read_memory))) *
300 (CView(constants_MEM_TAG_FF) - static_cast<View>(in.get(C::emit_unencrypted_log_tag)));
301 std::get<37>(evals) += (tmp * scaling_factor);
302 }
303 {
304 using View = typename std::tuple_element_t<38, ContainerOverSubrelations>::View;
305 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_correct_tag)) *
306 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_correct_tag)));
307 std::get<38>(evals) += (tmp * scaling_factor);
308 }
309 {
310 using View = typename std::tuple_element_t<39, ContainerOverSubrelations>::View;
311 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_sel)) *
312 ((static_cast<View>(in.get(C::emit_unencrypted_log_tag)) *
313 (static_cast<View>(in.get(C::emit_unencrypted_log_correct_tag)) *
314 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_tag_inv))) +
315 static_cast<View>(in.get(C::emit_unencrypted_log_tag_inv))) -
316 FF(1)) +
317 static_cast<View>(in.get(C::emit_unencrypted_log_correct_tag)));
318 std::get<39>(evals) += (tmp * scaling_factor);
319 }
320 {
321 using View = typename std::tuple_element_t<40, ContainerOverSubrelations>::View;
322 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_start)) *
323 ((FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_error))) *
324 (FF(1) - static_cast<View>(in.get(C::emit_unencrypted_log_discard))) -
325 static_cast<View>(in.get(C::emit_unencrypted_log_sel_should_write_to_public_inputs)));
326 std::get<40>(evals) += (tmp * scaling_factor);
327 }
328 { // SEL_SHOULD_WRITE_TO_PUBLIC_INPUTS_CONSISTENCY
329 using View = typename std::tuple_element_t<41, ContainerOverSubrelations>::View;
330 auto tmp = CView(emit_unencrypted_log_NOT_END) *
331 (static_cast<View>(in.get(C::emit_unencrypted_log_sel_should_write_to_public_inputs_shift)) -
332 static_cast<View>(in.get(C::emit_unencrypted_log_sel_should_write_to_public_inputs)));
333 std::get<41>(evals) += (tmp * scaling_factor);
334 }
335 {
336 using View = typename std::tuple_element_t<42, ContainerOverSubrelations>::View;
337 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_start)) *
338 ((CView(constants_AVM_PUBLIC_INPUTS_AVM_ACCUMULATED_DATA_PUBLIC_LOGS_ROW_IDX) +
339 CView(constants_FLAT_PUBLIC_LOGS_HEADER_LENGTH) +
340 static_cast<View>(in.get(C::emit_unencrypted_log_prev_num_unencrypted_log_fields))) -
341 static_cast<View>(in.get(C::emit_unencrypted_log_public_inputs_index)));
342 std::get<42>(evals) += (tmp * scaling_factor);
343 }
344 {
345 using View = typename std::tuple_element_t<43, ContainerOverSubrelations>::View;
346 auto tmp = CView(emit_unencrypted_log_NOT_END) *
347 ((static_cast<View>(in.get(C::emit_unencrypted_log_public_inputs_index)) + FF(1)) -
348 static_cast<View>(in.get(C::emit_unencrypted_log_public_inputs_index_shift)));
349 std::get<43>(evals) += (tmp * scaling_factor);
350 }
351 { // CONTRACT_ADDRESS_CONSISTENCY
352 using View = typename std::tuple_element_t<44, ContainerOverSubrelations>::View;
353 auto tmp = CView(emit_unencrypted_log_NOT_END) *
354 (static_cast<View>(in.get(C::emit_unencrypted_log_contract_address)) -
355 static_cast<View>(in.get(C::emit_unencrypted_log_contract_address_shift)));
356 std::get<44>(evals) += (tmp * scaling_factor);
357 }
358 {
359 using View = typename std::tuple_element_t<45, ContainerOverSubrelations>::View;
360 auto tmp = CView(emit_unencrypted_log_IS_WRITE_LOG_LENGTH) *
361 (static_cast<View>(in.get(C::emit_unencrypted_log_log_size)) -
362 static_cast<View>(in.get(C::emit_unencrypted_log_public_inputs_value)));
363 std::get<45>(evals) += (tmp * scaling_factor);
364 }
365 {
366 using View = typename std::tuple_element_t<46, ContainerOverSubrelations>::View;
367 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_is_write_contract_address)) *
368 (static_cast<View>(in.get(C::emit_unencrypted_log_contract_address)) -
369 static_cast<View>(in.get(C::emit_unencrypted_log_public_inputs_value)));
370 std::get<46>(evals) += (tmp * scaling_factor);
371 }
372 {
373 using View = typename std::tuple_element_t<47, ContainerOverSubrelations>::View;
374 auto tmp = static_cast<View>(in.get(C::emit_unencrypted_log_is_write_memory_value)) *
375 (static_cast<View>(in.get(C::emit_unencrypted_log_value)) -
376 static_cast<View>(in.get(C::emit_unencrypted_log_public_inputs_value)));
377 std::get<47>(evals) += (tmp * scaling_factor);
378 }
379}
380
381} // 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.