29 const auto constants_AVM_EXEC_OP_ID_ALU_NOT =
FF(256);
30 const auto constants_AVM_EXEC_OP_ID_ALU_SHL =
FF(512);
31 const auto constants_AVM_EXEC_OP_ID_ALU_SHR =
FF(1024);
32 const auto constants_AVM_EXEC_OP_ID_ALU_TRUNCATE =
FF(2048);
33 const auto alu_IS_NOT_FF = (
FF(1) - in.get(C::alu_sel_is_ff));
34 const auto alu_IS_NOT_U128 = (
FF(1) - in.get(C::alu_sel_is_u128));
35 const auto alu_SHIFT_OPS = in.get(C::alu_sel_op_shl) + in.get(C::alu_sel_op_shr);
36 const auto alu_DIV_OPS = in.get(C::alu_sel_op_div) + in.get(C::alu_sel_op_fdiv);
37 const auto alu_TAG_FF_DIFF = (in.get(C::alu_ia_tag) - constants_MEM_TAG_FF);
38 const auto alu_TAG_U128_DIFF = (in.get(C::alu_ia_tag) - constants_MEM_TAG_U128);
39 const auto alu_FF_TAG_ERR =
40 (in.get(C::alu_sel_op_div) + in.get(C::alu_sel_op_not) + alu_SHIFT_OPS) * in.get(C::alu_sel_is_ff) +
41 in.get(C::alu_sel_op_fdiv) * alu_IS_NOT_FF;
42 const auto alu_AB_TAGS_EQ = (
FF(1) - in.get(C::alu_sel_ab_tag_mismatch));
43 const auto alu_EXPECTED_C_TAG =
44 (in.get(C::alu_sel_op_add) + in.get(C::alu_sel_op_sub) + in.get(C::alu_sel_op_mul) + in.get(C::alu_sel_op_div) +
45 in.get(C::alu_sel_op_truncate) + alu_SHIFT_OPS) *
46 in.get(C::alu_ia_tag) +
47 (in.get(C::alu_sel_op_eq) + in.get(C::alu_sel_op_lt) + in.get(C::alu_sel_op_lte)) * constants_MEM_TAG_U1 +
48 in.get(C::alu_sel_op_fdiv) * constants_MEM_TAG_FF;
49 const auto alu_SEL_MUL_U128 =
50 in.get(C::alu_sel_op_mul) * in.get(C::alu_sel_is_u128) * (
FF(1) - in.get(C::alu_sel_err));
51 const auto alu_SEL_DIV_U128 = in.get(C::alu_sel_div_no_err) * in.get(C::alu_sel_is_u128);
52 const auto alu_TWO_POW_64 =
FF(
uint256_t{ 0UL, 1UL, 0UL, 0UL });
53 const auto alu_DECOMPOSED_A =
54 (in.get(C::alu_sel_op_mul) * in.get(C::alu_sel_is_u128) + in.get(C::alu_sel_shift_ops_no_overflow)) *
56 (alu_SHIFT_OPS - in.get(C::alu_sel_shift_ops_no_overflow)) * (in.get(C::alu_ib) - in.get(C::alu_max_bits)) +
57 in.get(C::alu_sel_op_div) * in.get(C::alu_sel_is_u128) * in.get(C::alu_ic);
58 const auto alu_DECOMPOSED_B = in.get(C::alu_ib);
59 const auto alu_LIMB_SIZE =
60 in.get(C::alu_sel_mul_div_u128) * alu_TWO_POW_64 +
61 alu_SHIFT_OPS * in.get(C::alu_sel_shift_ops_no_overflow) * in.get(C::alu_two_pow_shift_lo_bits);
62 const auto alu_DIV_OPS_NON_U128 =
63 (
FF(1) - in.get(C::alu_sel_err)) * in.get(C::alu_sel_op_fdiv) + in.get(C::alu_sel_div_no_err) * alu_IS_NOT_U128;
64 const auto alu_DIFF = (in.get(C::alu_ia) - in.get(C::alu_ib));
65 const auto alu_SEL_LT_OPS =
66 (
FF(1) - in.get(C::alu_sel_err)) * (in.get(C::alu_sel_op_lt) + in.get(C::alu_sel_op_lte));
67 const auto alu_SHIFT_OVERFLOW = alu_SHIFT_OPS * (
FF(1) - in.get(C::alu_sel_shift_ops_no_overflow));
68 const auto alu_SHIFT_HI_BITS =
69 (
FF(1) - in.get(C::alu_sel_err)) *
70 (in.get(C::alu_max_bits) - in.get(C::alu_sel_shift_ops_no_overflow) * in.get(C::alu_shift_lo_bits));
73 using View =
typename std::tuple_element_t<0, ContainerOverSubrelations>::View;
74 auto tmp =
static_cast<View
>(in.get(C::alu_sel)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel)));
78 using View =
typename std::tuple_element_t<1, ContainerOverSubrelations>::View;
80 static_cast<View
>(in.get(C::alu_sel_op_add)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_add)));
84 using View =
typename std::tuple_element_t<2, ContainerOverSubrelations>::View;
86 static_cast<View
>(in.get(C::alu_sel_op_sub)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_sub)));
90 using View =
typename std::tuple_element_t<3, ContainerOverSubrelations>::View;
92 static_cast<View
>(in.get(C::alu_sel_op_mul)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_mul)));
96 using View =
typename std::tuple_element_t<4, ContainerOverSubrelations>::View;
98 static_cast<View
>(in.get(C::alu_sel_op_div)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_div)));
102 using View =
typename std::tuple_element_t<5, ContainerOverSubrelations>::View;
104 static_cast<View
>(in.get(C::alu_sel_op_fdiv)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_fdiv)));
108 using View =
typename std::tuple_element_t<6, ContainerOverSubrelations>::View;
109 auto tmp =
static_cast<View
>(in.get(C::alu_sel_op_eq)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_eq)));
113 using View =
typename std::tuple_element_t<7, ContainerOverSubrelations>::View;
114 auto tmp =
static_cast<View
>(in.get(C::alu_sel_op_lt)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_lt)));
118 using View =
typename std::tuple_element_t<8, ContainerOverSubrelations>::View;
120 static_cast<View
>(in.get(C::alu_sel_op_lte)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_lte)));
124 using View =
typename std::tuple_element_t<9, ContainerOverSubrelations>::View;
126 static_cast<View
>(in.get(C::alu_sel_op_not)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_not)));
130 using View =
typename std::tuple_element_t<10, ContainerOverSubrelations>::View;
132 static_cast<View
>(in.get(C::alu_sel_op_shl)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_shl)));
136 using View =
typename std::tuple_element_t<11, ContainerOverSubrelations>::View;
138 static_cast<View
>(in.get(C::alu_sel_op_shr)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_shr)));
142 using View =
typename std::tuple_element_t<12, ContainerOverSubrelations>::View;
143 auto tmp =
static_cast<View
>(in.get(C::alu_sel_op_truncate)) *
144 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_truncate)));
148 using View =
typename std::tuple_element_t<13, ContainerOverSubrelations>::View;
149 auto tmp = (
static_cast<View
>(in.get(C::alu_op_id)) -
150 (
static_cast<View
>(in.get(C::alu_sel_op_add)) *
CView(constants_AVM_EXEC_OP_ID_ALU_ADD) +
151 static_cast<View
>(in.get(C::alu_sel_op_sub)) *
CView(constants_AVM_EXEC_OP_ID_ALU_SUB) +
152 static_cast<View
>(in.get(C::alu_sel_op_mul)) *
CView(constants_AVM_EXEC_OP_ID_ALU_MUL) +
153 static_cast<View
>(in.get(C::alu_sel_op_div)) *
CView(constants_AVM_EXEC_OP_ID_ALU_DIV) +
154 static_cast<View
>(in.get(C::alu_sel_op_fdiv)) *
CView(constants_AVM_EXEC_OP_ID_ALU_FDIV) +
155 static_cast<View
>(in.get(C::alu_sel_op_eq)) *
CView(constants_AVM_EXEC_OP_ID_ALU_EQ) +
156 static_cast<View
>(in.get(C::alu_sel_op_lt)) *
CView(constants_AVM_EXEC_OP_ID_ALU_LT) +
157 static_cast<View
>(in.get(C::alu_sel_op_lte)) *
CView(constants_AVM_EXEC_OP_ID_ALU_LTE) +
158 static_cast<View
>(in.get(C::alu_sel_op_not)) *
CView(constants_AVM_EXEC_OP_ID_ALU_NOT) +
159 static_cast<View
>(in.get(C::alu_sel_op_shl)) *
CView(constants_AVM_EXEC_OP_ID_ALU_SHL) +
160 static_cast<View
>(in.get(C::alu_sel_op_shr)) *
CView(constants_AVM_EXEC_OP_ID_ALU_SHR) +
161 static_cast<View
>(in.get(C::alu_sel_op_truncate)) *
CView(constants_AVM_EXEC_OP_ID_ALU_TRUNCATE)));
165 using View =
typename std::tuple_element_t<14, ContainerOverSubrelations>::View;
166 auto tmp = (
static_cast<View
>(in.get(C::alu_sel)) -
167 (
static_cast<View
>(in.get(C::alu_sel_op_add)) +
static_cast<View
>(in.get(C::alu_sel_op_sub)) +
168 static_cast<View
>(in.get(C::alu_sel_op_mul)) +
static_cast<View
>(in.get(C::alu_sel_op_div)) +
169 static_cast<View
>(in.get(C::alu_sel_op_fdiv)) +
static_cast<View
>(in.get(C::alu_sel_op_eq)) +
170 static_cast<View
>(in.get(C::alu_sel_op_lt)) +
static_cast<View
>(in.get(C::alu_sel_op_lte)) +
171 static_cast<View
>(in.get(C::alu_sel_op_not)) +
static_cast<View
>(in.get(C::alu_sel_op_shl)) +
172 static_cast<View
>(in.get(C::alu_sel_op_shr)) +
static_cast<View
>(in.get(C::alu_sel_op_truncate))));
176 using View =
typename std::tuple_element_t<15, ContainerOverSubrelations>::View;
177 auto tmp =
static_cast<View
>(in.get(C::alu_sel_is_ff)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_is_ff)));
181 using View =
typename std::tuple_element_t<16, ContainerOverSubrelations>::View;
183 static_cast<View
>(in.get(C::alu_sel_is_u128)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_is_u128)));
187 using View =
typename std::tuple_element_t<17, ContainerOverSubrelations>::View;
188 auto tmp =
static_cast<View
>(in.get(C::alu_sel)) *
189 ((
CView(alu_TAG_FF_DIFF) * (
static_cast<View
>(in.get(C::alu_sel_is_ff)) *
190 (
FF(1) -
static_cast<View
>(in.get(C::alu_tag_ff_diff_inv))) +
191 static_cast<View
>(in.get(C::alu_tag_ff_diff_inv))) +
192 static_cast<View
>(in.get(C::alu_sel_is_ff))) -
197 using View =
typename std::tuple_element_t<18, ContainerOverSubrelations>::View;
198 auto tmp =
static_cast<View
>(in.get(C::alu_sel)) *
199 ((
CView(alu_TAG_U128_DIFF) * (
static_cast<View
>(in.get(C::alu_sel_is_u128)) *
200 (
FF(1) -
static_cast<View
>(in.get(C::alu_tag_u128_diff_inv))) +
201 static_cast<View
>(in.get(C::alu_tag_u128_diff_inv))) +
202 static_cast<View
>(in.get(C::alu_sel_is_u128))) -
207 using View =
typename std::tuple_element_t<19, ContainerOverSubrelations>::View;
208 auto tmp =
static_cast<View
>(in.get(C::alu_sel_ab_tag_mismatch)) *
209 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_ab_tag_mismatch)));
213 using View =
typename std::tuple_element_t<20, ContainerOverSubrelations>::View;
215 static_cast<View
>(in.get(C::alu_sel_div_0_err)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_div_0_err)));
219 using View =
typename std::tuple_element_t<21, ContainerOverSubrelations>::View;
220 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_err)) -
221 ((
static_cast<View
>(in.get(C::alu_sel_tag_err)) +
static_cast<View
>(in.get(C::alu_sel_div_0_err))) -
222 static_cast<View
>(in.get(C::alu_sel_tag_err)) *
static_cast<View
>(in.get(C::alu_sel_div_0_err))));
226 using View =
typename std::tuple_element_t<22, ContainerOverSubrelations>::View;
227 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_tag_err)) -
228 ((
static_cast<View
>(in.get(C::alu_sel_ab_tag_mismatch)) +
CView(alu_FF_TAG_ERR)) -
229 static_cast<View
>(in.get(C::alu_sel_ab_tag_mismatch)) *
CView(alu_FF_TAG_ERR)));
233 using View =
typename std::tuple_element_t<23, ContainerOverSubrelations>::View;
234 auto tmp = (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_truncate))) *
235 (((
static_cast<View
>(in.get(C::alu_ia_tag)) -
static_cast<View
>(in.get(C::alu_ib_tag))) *
236 (
CView(alu_AB_TAGS_EQ) * (
FF(1) -
static_cast<View
>(in.get(C::alu_ab_tags_diff_inv))) +
237 static_cast<View
>(in.get(C::alu_ab_tags_diff_inv))) -
239 CView(alu_AB_TAGS_EQ));
243 using View =
typename std::tuple_element_t<24, ContainerOverSubrelations>::View;
244 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_op_not)) +
static_cast<View
>(in.get(C::alu_sel_op_truncate))) *
245 static_cast<View
>(in.get(C::alu_sel_ab_tag_mismatch));
249 using View =
typename std::tuple_element_t<25, ContainerOverSubrelations>::View;
250 auto tmp =
CView(alu_DIV_OPS) *
251 ((
static_cast<View
>(in.get(C::alu_ib)) * (
static_cast<View
>(in.get(C::alu_sel_div_0_err)) *
252 (
FF(1) -
static_cast<View
>(in.get(C::alu_b_inv))) +
253 static_cast<View
>(in.get(C::alu_b_inv))) +
254 static_cast<View
>(in.get(C::alu_sel_div_0_err))) -
259 using View =
typename std::tuple_element_t<26, ContainerOverSubrelations>::View;
260 auto tmp = (
FF(1) -
CView(alu_DIV_OPS)) *
static_cast<View
>(in.get(C::alu_sel_div_0_err));
264 using View =
typename std::tuple_element_t<27, ContainerOverSubrelations>::View;
265 auto tmp =
static_cast<View
>(in.get(C::alu_cf)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_cf)));
269 using View =
typename std::tuple_element_t<28, ContainerOverSubrelations>::View;
270 auto tmp = (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_err))) *
271 (
CView(alu_EXPECTED_C_TAG) -
static_cast<View
>(in.get(C::alu_ic_tag)));
275 using View =
typename std::tuple_element_t<29, ContainerOverSubrelations>::View;
276 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_decompose_a)) -
277 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_err))) *
278 (
static_cast<View
>(in.get(C::alu_sel_mul_div_u128)) +
CView(alu_SHIFT_OPS)));
282 using View =
typename std::tuple_element_t<30, ContainerOverSubrelations>::View;
283 auto tmp =
static_cast<View
>(in.get(C::alu_sel_decompose_a)) *
284 (
CView(alu_DECOMPOSED_A) - (
static_cast<View
>(in.get(C::alu_a_lo)) +
285 CView(alu_LIMB_SIZE) *
static_cast<View
>(in.get(C::alu_a_hi))));
289 using View =
typename std::tuple_element_t<31, ContainerOverSubrelations>::View;
290 auto tmp =
static_cast<View
>(in.get(C::alu_sel_mul_div_u128)) *
291 (
CView(alu_DECOMPOSED_B) - (
static_cast<View
>(in.get(C::alu_b_lo)) +
292 CView(alu_LIMB_SIZE) *
static_cast<View
>(in.get(C::alu_b_hi))));
296 using View =
typename std::tuple_element_t<32, ContainerOverSubrelations>::View;
297 auto tmp =
static_cast<View
>(in.get(C::alu_sel_mul_div_u128)) *
298 (
FF(64) -
static_cast<View
>(in.get(C::alu_constant_64)));
302 using View =
typename std::tuple_element_t<33, ContainerOverSubrelations>::View;
303 auto tmp = ((
static_cast<View
>(in.get(C::alu_a_lo_bits)) -
static_cast<View
>(in.get(C::alu_sel_mul_div_u128)) *
304 static_cast<View
>(in.get(C::alu_constant_64))) -
305 CView(alu_SHIFT_OPS) *
static_cast<View
>(in.get(C::alu_shift_lo_bits)));
309 using View =
typename std::tuple_element_t<34, ContainerOverSubrelations>::View;
310 auto tmp = ((
static_cast<View
>(in.get(C::alu_a_hi_bits)) -
static_cast<View
>(in.get(C::alu_sel_mul_div_u128)) *
311 static_cast<View
>(in.get(C::alu_constant_64))) -
312 CView(alu_SHIFT_OPS) *
CView(alu_SHIFT_HI_BITS));
316 using View =
typename std::tuple_element_t<35, ContainerOverSubrelations>::View;
317 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_op_add)) +
static_cast<View
>(in.get(C::alu_sel_op_sub))) *
318 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_err))) *
319 ((
static_cast<View
>(in.get(C::alu_ia)) -
static_cast<View
>(in.get(C::alu_ic))) +
320 (
static_cast<View
>(in.get(C::alu_sel_op_add)) -
static_cast<View
>(in.get(C::alu_sel_op_sub))) *
321 (
static_cast<View
>(in.get(C::alu_ib)) -
322 static_cast<View
>(in.get(C::alu_cf)) * (
static_cast<View
>(in.get(C::alu_max_value)) +
FF(1))));
326 using View =
typename std::tuple_element_t<36, ContainerOverSubrelations>::View;
327 auto tmp =
static_cast<View
>(in.get(C::alu_sel_op_mul)) *
CView(alu_IS_NOT_U128) *
328 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_err))) *
329 ((
static_cast<View
>(in.get(C::alu_ia)) *
static_cast<View
>(in.get(C::alu_ib)) -
330 static_cast<View
>(in.get(C::alu_ic))) -
331 (
static_cast<View
>(in.get(C::alu_max_value)) +
FF(1)) *
static_cast<View
>(in.get(C::alu_c_hi)));
335 using View =
typename std::tuple_element_t<37, ContainerOverSubrelations>::View;
337 CView(alu_SEL_MUL_U128) * (((
static_cast<View
>(in.get(C::alu_ia)) *
static_cast<View
>(in.get(C::alu_b_lo)) +
338 static_cast<View
>(in.get(C::alu_a_lo)) *
339 static_cast<View
>(in.get(C::alu_b_hi)) *
CView(alu_TWO_POW_64)) -
340 static_cast<View
>(in.get(C::alu_ic))) -
341 (
static_cast<View
>(in.get(C::alu_max_value)) +
FF(1)) *
342 (
static_cast<View
>(in.get(C::alu_cf)) *
CView(alu_TWO_POW_64) +
343 static_cast<View
>(in.get(C::alu_c_hi))));
347 using View =
typename std::tuple_element_t<38, ContainerOverSubrelations>::View;
348 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_mul_no_err_non_ff)) -
349 CView(alu_IS_NOT_FF) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_err))) *
350 static_cast<View
>(in.get(C::alu_sel_op_mul)));
354 using View =
typename std::tuple_element_t<39, ContainerOverSubrelations>::View;
355 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_div_no_err)) -
356 static_cast<View
>(in.get(C::alu_sel_op_div)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_err))));
360 using View =
typename std::tuple_element_t<40, ContainerOverSubrelations>::View;
362 (
static_cast<View
>(in.get(C::alu_sel_mul_div_u128)) - (
CView(alu_SEL_MUL_U128) +
CView(alu_SEL_DIV_U128)));
366 using View =
typename std::tuple_element_t<41, ContainerOverSubrelations>::View;
368 CView(alu_SEL_DIV_U128) *
static_cast<View
>(in.get(C::alu_a_hi)) *
static_cast<View
>(in.get(C::alu_b_hi));
372 using View =
typename std::tuple_element_t<42, ContainerOverSubrelations>::View;
374 CView(alu_SEL_DIV_U128) *
375 ((
static_cast<View
>(in.get(C::alu_ic)) *
static_cast<View
>(in.get(C::alu_b_lo)) +
376 static_cast<View
>(in.get(C::alu_a_lo)) *
static_cast<View
>(in.get(C::alu_b_hi)) *
CView(alu_TWO_POW_64)) -
377 (
static_cast<View
>(in.get(C::alu_ia)) -
static_cast<View
>(in.get(C::alu_helper1))));
381 using View =
typename std::tuple_element_t<43, ContainerOverSubrelations>::View;
382 auto tmp =
CView(alu_DIV_OPS_NON_U128) *
383 ((
static_cast<View
>(in.get(C::alu_ib)) *
static_cast<View
>(in.get(C::alu_ic)) -
384 static_cast<View
>(in.get(C::alu_ia))) +
385 static_cast<View
>(in.get(C::alu_sel_op_div)) *
static_cast<View
>(in.get(C::alu_helper1)));
389 using View =
typename std::tuple_element_t<44, ContainerOverSubrelations>::View;
390 auto tmp =
static_cast<View
>(in.get(C::alu_sel_op_eq)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_err))) *
391 ((
CView(alu_DIFF) * (
static_cast<View
>(in.get(C::alu_ic)) *
392 (
FF(1) -
static_cast<View
>(in.get(C::alu_ab_diff_inv))) +
393 static_cast<View
>(in.get(C::alu_ab_diff_inv))) -
395 static_cast<View
>(in.get(C::alu_ic)));
399 using View =
typename std::tuple_element_t<45, ContainerOverSubrelations>::View;
400 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_ff_gt)) -
401 static_cast<View
>(in.get(C::alu_sel_is_ff)) *
CView(alu_SEL_LT_OPS));
405 using View =
typename std::tuple_element_t<46, ContainerOverSubrelations>::View;
406 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_int_gt)) -
407 (
CView(alu_IS_NOT_FF) *
CView(alu_SEL_LT_OPS) +
static_cast<View
>(in.get(C::alu_sel_div_no_err))));
411 using View =
typename std::tuple_element_t<47, ContainerOverSubrelations>::View;
412 auto tmp = (
static_cast<View
>(in.get(C::alu_gt_input_a)) -
413 ((
static_cast<View
>(in.get(C::alu_sel_op_lt)) +
static_cast<View
>(in.get(C::alu_sel_div_no_err))) *
414 static_cast<View
>(in.get(C::alu_ib)) +
415 static_cast<View
>(in.get(C::alu_sel_op_lte)) *
static_cast<View
>(in.get(C::alu_ia))));
419 using View =
typename std::tuple_element_t<48, ContainerOverSubrelations>::View;
420 auto tmp = (
static_cast<View
>(in.get(C::alu_gt_input_b)) -
421 (
static_cast<View
>(in.get(C::alu_sel_op_lt)) *
static_cast<View
>(in.get(C::alu_ia)) +
422 static_cast<View
>(in.get(C::alu_sel_op_lte)) *
static_cast<View
>(in.get(C::alu_ib)) +
423 static_cast<View
>(in.get(C::alu_sel_div_no_err)) *
static_cast<View
>(in.get(C::alu_helper1))));
427 using View =
typename std::tuple_element_t<49, ContainerOverSubrelations>::View;
428 auto tmp = (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_err))) *
429 ((
static_cast<View
>(in.get(C::alu_sel_div_no_err)) +
430 static_cast<View
>(in.get(C::alu_sel_op_lt)) *
static_cast<View
>(in.get(C::alu_ic)) +
431 static_cast<View
>(in.get(C::alu_sel_op_lte)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_ic)))) -
432 static_cast<View
>(in.get(C::alu_gt_result_c)));
436 using View =
typename std::tuple_element_t<50, ContainerOverSubrelations>::View;
437 auto tmp =
static_cast<View
>(in.get(C::alu_sel_op_not)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_err))) *
438 ((
static_cast<View
>(in.get(C::alu_ia)) +
static_cast<View
>(in.get(C::alu_ib))) -
439 static_cast<View
>(in.get(C::alu_max_value)));
443 using View =
typename std::tuple_element_t<51, ContainerOverSubrelations>::View;
445 static_cast<View
>(in.get(C::alu_sel_op_shl)) *
static_cast<View
>(in.get(C::alu_sel_shift_ops_no_overflow)) *
446 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_err))) *
447 ((
static_cast<View
>(in.get(C::alu_max_value)) +
FF(1)) -
448 static_cast<View
>(in.get(C::alu_two_pow_shift_lo_bits)) *
static_cast<View
>(in.get(C::alu_helper1)));
452 using View =
typename std::tuple_element_t<52, ContainerOverSubrelations>::View;
453 auto tmp =
static_cast<View
>(in.get(C::alu_sel_op_shl)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_err))) *
454 (
static_cast<View
>(in.get(C::alu_ic)) -
static_cast<View
>(in.get(C::alu_sel_shift_ops_no_overflow)) *
455 static_cast<View
>(in.get(C::alu_a_lo)) *
456 static_cast<View
>(in.get(C::alu_helper1)));
460 using View =
typename std::tuple_element_t<53, ContainerOverSubrelations>::View;
461 auto tmp =
static_cast<View
>(in.get(C::alu_sel_op_shr)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_err))) *
462 (
static_cast<View
>(in.get(C::alu_ic)) -
static_cast<View
>(in.get(C::alu_sel_shift_ops_no_overflow)) *
463 static_cast<View
>(in.get(C::alu_a_hi)));
467 using View =
typename std::tuple_element_t<54, ContainerOverSubrelations>::View;
468 auto tmp =
static_cast<View
>(in.get(C::alu_sel_shift_ops_no_overflow)) *
469 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_shift_ops_no_overflow)));
473 using View =
typename std::tuple_element_t<55, ContainerOverSubrelations>::View;
474 auto tmp =
static_cast<View
>(in.get(C::alu_sel_shift_ops_no_overflow)) * (
FF(1) -
CView(alu_SHIFT_OPS));
478 using View =
typename std::tuple_element_t<56, ContainerOverSubrelations>::View;
479 auto tmp = (
static_cast<View
>(in.get(C::alu_shift_lo_bits)) -
480 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_err))) *
481 (
static_cast<View
>(in.get(C::alu_sel_shift_ops_no_overflow)) *
482 (
static_cast<View
>(in.get(C::alu_sel_op_shl)) *
483 (
static_cast<View
>(in.get(C::alu_max_bits)) -
static_cast<View
>(in.get(C::alu_ib))) +
484 static_cast<View
>(in.get(C::alu_sel_op_shr)) *
static_cast<View
>(in.get(C::alu_ib))) +
485 CView(alu_SHIFT_OVERFLOW) *
static_cast<View
>(in.get(C::alu_max_bits))));
489 using View =
typename std::tuple_element_t<57, ContainerOverSubrelations>::View;
490 auto tmp =
static_cast<View
>(in.get(C::alu_sel_trunc_trivial)) *
491 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_trunc_trivial)));
495 using View =
typename std::tuple_element_t<58, ContainerOverSubrelations>::View;
496 auto tmp =
static_cast<View
>(in.get(C::alu_sel_trunc_gte_128)) *
497 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_trunc_gte_128)));
501 using View =
typename std::tuple_element_t<59, ContainerOverSubrelations>::View;
502 auto tmp =
static_cast<View
>(in.get(C::alu_sel_trunc_lt_128)) *
503 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_trunc_lt_128)));
507 using View =
typename std::tuple_element_t<60, ContainerOverSubrelations>::View;
508 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_trunc_non_trivial)) -
509 (
static_cast<View
>(in.get(C::alu_sel_trunc_gte_128)) +
510 static_cast<View
>(in.get(C::alu_sel_trunc_lt_128))));
514 using View =
typename std::tuple_element_t<61, ContainerOverSubrelations>::View;
515 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_op_truncate)) -
516 (
static_cast<View
>(in.get(C::alu_sel_trunc_non_trivial)) +
517 static_cast<View
>(in.get(C::alu_sel_trunc_trivial))));
521 using View =
typename std::tuple_element_t<62, ContainerOverSubrelations>::View;
522 auto tmp =
static_cast<View
>(in.get(C::alu_sel_trunc_trivial)) *
523 (
static_cast<View
>(in.get(C::alu_ia)) -
static_cast<View
>(in.get(C::alu_ic)));
527 using View =
typename std::tuple_element_t<63, ContainerOverSubrelations>::View;
528 auto tmp =
static_cast<View
>(in.get(C::alu_sel_op_truncate)) *
static_cast<View
>(in.get(C::alu_sel_is_ff)) *
529 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_trunc_trivial)));
533 using View =
typename std::tuple_element_t<64, ContainerOverSubrelations>::View;
534 auto tmp =
static_cast<View
>(in.get(C::alu_sel_trunc_lt_128)) *
535 (
static_cast<View
>(in.get(C::alu_a_lo)) -
static_cast<View
>(in.get(C::alu_ia)));
539 using View =
typename std::tuple_element_t<65, ContainerOverSubrelations>::View;
540 auto tmp =
static_cast<View
>(in.get(C::alu_sel_trunc_non_trivial)) *
541 ((
static_cast<View
>(in.get(C::alu_ic)) +
542 static_cast<View
>(in.get(C::alu_mid)) * (
static_cast<View
>(in.get(C::alu_max_value)) +
FF(1))) -
543 static_cast<View
>(in.get(C::alu_a_lo)));
547 using View =
typename std::tuple_element_t<66, ContainerOverSubrelations>::View;
549 (
static_cast<View
>(in.get(C::alu_mid_bits)) -
static_cast<View
>(in.get(C::alu_sel_trunc_non_trivial)) *
550 (
FF(128) -
static_cast<View
>(in.get(C::alu_max_bits))));