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_CHECK_TAG_FF = in.get(C::alu_sel_op_div) + in.get(C::alu_sel_op_fdiv) + in.get(C::alu_sel_op_lt) +
36 in.get(C::alu_sel_op_lte) + in.get(C::alu_sel_op_not) + in.get(C::alu_sel_shift_ops);
37 const auto alu_TAG_FF_DIFF = (in.get(C::alu_ia_tag) - constants_MEM_TAG_FF);
38 const auto alu_CHECK_TAG_U128 = in.get(C::alu_sel_op_mul) + in.get(C::alu_sel_op_div);
39 const auto alu_TAG_U128_DIFF = (in.get(C::alu_ia_tag) - constants_MEM_TAG_U128);
40 const auto alu_EXPECTED_C_TAG =
41 (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) +
42 in.get(C::alu_sel_op_truncate) + in.get(C::alu_sel_shift_ops)) *
43 in.get(C::alu_ia_tag) +
44 (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 +
45 in.get(C::alu_sel_op_fdiv) * constants_MEM_TAG_FF;
46 const auto alu_FF_TAG_ERR = (in.get(C::alu_sel_op_div) + in.get(C::alu_sel_op_not) + in.get(C::alu_sel_shift_ops)) *
47 in.get(C::alu_sel_is_ff) +
48 in.get(C::alu_sel_op_fdiv) * alu_IS_NOT_FF;
49 const auto alu_CHECK_AB_TAGS =
50 ((
FF(1) - in.get(C::alu_sel_op_not) * in.get(C::alu_sel_is_ff)) - in.get(C::alu_sel_op_truncate));
51 const auto alu_AB_TAGS_EQ = (
FF(1) - in.get(C::alu_sel_ab_tag_mismatch));
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_mul_u128) + in.get(C::alu_sel_shift_ops_no_overflow)) * in.get(C::alu_ia) +
55 (in.get(C::alu_sel_shift_ops) - in.get(C::alu_sel_shift_ops_no_overflow)) *
56 (in.get(C::alu_ib) - in.get(C::alu_max_bits)) +
57 in.get(C::alu_sel_is_u128) * in.get(C::alu_sel_op_div) * (
FF(1) - in.get(C::alu_sel_tag_err)) *
59 const auto alu_DECOMPOSED_B = in.get(C::alu_ib);
60 const auto alu_LIMB_SIZE = in.get(C::alu_sel_mul_div_u128) * alu_TWO_POW_64 +
61 in.get(C::alu_sel_shift_ops) * in.get(C::alu_two_pow_shift_lo_bits);
62 const auto alu_DIV_OPS = in.get(C::alu_sel_op_div) + in.get(C::alu_sel_op_fdiv);
63 const auto alu_DIV_OPS_NON_U128 =
64 (
FF(1) - in.get(C::alu_sel_err)) * (in.get(C::alu_sel_op_fdiv) + in.get(C::alu_sel_op_div) * alu_IS_NOT_U128);
65 const auto alu_DIFF = (in.get(C::alu_ia) - in.get(C::alu_ib));
66 const auto alu_SHIFT_OVERFLOW = in.get(C::alu_sel_shift_ops) * (
FF(1) - in.get(C::alu_sel_shift_ops_no_overflow));
67 const auto alu_SHIFT_HI_BITS =
68 (in.get(C::alu_max_bits) - in.get(C::alu_sel_shift_ops_no_overflow) * in.get(C::alu_shift_lo_bits));
71 using View =
typename std::tuple_element_t<0, ContainerOverSubrelations>::View;
72 auto tmp =
static_cast<View
>(in.get(C::alu_sel)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel)));
76 using View =
typename std::tuple_element_t<1, ContainerOverSubrelations>::View;
77 auto tmp =
static_cast<View
>(in.get(C::alu_cf)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_cf)));
81 using View =
typename std::tuple_element_t<2, ContainerOverSubrelations>::View;
82 auto tmp =
static_cast<View
>(in.get(C::alu_sel_is_ff)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_is_ff)));
86 using View =
typename std::tuple_element_t<3, ContainerOverSubrelations>::View;
88 static_cast<View
>(in.get(C::alu_sel_is_u128)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_is_u128)));
92 using View =
typename std::tuple_element_t<4, ContainerOverSubrelations>::View;
93 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_err)) -
94 ((
static_cast<View
>(in.get(C::alu_sel_tag_err)) +
static_cast<View
>(in.get(C::alu_sel_div_0_err))) -
95 static_cast<View
>(in.get(C::alu_sel_tag_err)) *
static_cast<View
>(in.get(C::alu_sel_div_0_err))));
99 using View =
typename std::tuple_element_t<5, ContainerOverSubrelations>::View;
100 auto tmp = (
static_cast<View
>(in.get(C::alu_op_id)) -
101 (
static_cast<View
>(in.get(C::alu_sel_op_add)) *
CView(constants_AVM_EXEC_OP_ID_ALU_ADD) +
102 static_cast<View
>(in.get(C::alu_sel_op_sub)) *
CView(constants_AVM_EXEC_OP_ID_ALU_SUB) +
103 static_cast<View
>(in.get(C::alu_sel_op_mul)) *
CView(constants_AVM_EXEC_OP_ID_ALU_MUL) +
104 static_cast<View
>(in.get(C::alu_sel_op_div)) *
CView(constants_AVM_EXEC_OP_ID_ALU_DIV) +
105 static_cast<View
>(in.get(C::alu_sel_op_fdiv)) *
CView(constants_AVM_EXEC_OP_ID_ALU_FDIV) +
106 static_cast<View
>(in.get(C::alu_sel_op_eq)) *
CView(constants_AVM_EXEC_OP_ID_ALU_EQ) +
107 static_cast<View
>(in.get(C::alu_sel_op_lt)) *
CView(constants_AVM_EXEC_OP_ID_ALU_LT) +
108 static_cast<View
>(in.get(C::alu_sel_op_lte)) *
CView(constants_AVM_EXEC_OP_ID_ALU_LTE) +
109 static_cast<View
>(in.get(C::alu_sel_op_not)) *
CView(constants_AVM_EXEC_OP_ID_ALU_NOT) +
110 static_cast<View
>(in.get(C::alu_sel_op_shl)) *
CView(constants_AVM_EXEC_OP_ID_ALU_SHL) +
111 static_cast<View
>(in.get(C::alu_sel_op_shr)) *
CView(constants_AVM_EXEC_OP_ID_ALU_SHR) +
112 static_cast<View
>(in.get(C::alu_sel_op_truncate)) *
CView(constants_AVM_EXEC_OP_ID_ALU_TRUNCATE)));
116 using View =
typename std::tuple_element_t<6, ContainerOverSubrelations>::View;
117 auto tmp =
CView(alu_CHECK_TAG_FF) *
118 ((
CView(alu_TAG_FF_DIFF) * (
static_cast<View
>(in.get(C::alu_sel_is_ff)) *
119 (
FF(1) -
static_cast<View
>(in.get(C::alu_tag_ff_diff_inv))) +
120 static_cast<View
>(in.get(C::alu_tag_ff_diff_inv))) +
121 static_cast<View
>(in.get(C::alu_sel_is_ff))) -
126 using View =
typename std::tuple_element_t<7, ContainerOverSubrelations>::View;
127 auto tmp =
CView(alu_CHECK_TAG_U128) *
128 ((
CView(alu_TAG_U128_DIFF) * (
static_cast<View
>(in.get(C::alu_sel_is_u128)) *
129 (
FF(1) -
static_cast<View
>(in.get(C::alu_tag_u128_diff_inv))) +
130 static_cast<View
>(in.get(C::alu_tag_u128_diff_inv))) +
131 static_cast<View
>(in.get(C::alu_sel_is_u128))) -
136 using View =
typename std::tuple_element_t<8, ContainerOverSubrelations>::View;
137 auto tmp = (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_err))) *
138 (
CView(alu_EXPECTED_C_TAG) -
static_cast<View
>(in.get(C::alu_ic_tag)));
142 using View =
typename std::tuple_element_t<9, ContainerOverSubrelations>::View;
144 static_cast<View
>(in.get(C::alu_sel_tag_err)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_tag_err)));
148 using View =
typename std::tuple_element_t<10, ContainerOverSubrelations>::View;
149 auto tmp =
static_cast<View
>(in.get(C::alu_sel_ab_tag_mismatch)) *
150 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_ab_tag_mismatch)));
154 using View =
typename std::tuple_element_t<11, ContainerOverSubrelations>::View;
155 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_tag_err)) -
156 ((
static_cast<View
>(in.get(C::alu_sel_ab_tag_mismatch)) +
CView(alu_FF_TAG_ERR)) -
157 static_cast<View
>(in.get(C::alu_sel_ab_tag_mismatch)) *
CView(alu_FF_TAG_ERR)));
161 using View =
typename std::tuple_element_t<12, ContainerOverSubrelations>::View;
162 auto tmp =
CView(alu_CHECK_AB_TAGS) *
163 (((
static_cast<View
>(in.get(C::alu_ia_tag)) -
static_cast<View
>(in.get(C::alu_ib_tag))) *
164 (
CView(alu_AB_TAGS_EQ) * (
FF(1) -
static_cast<View
>(in.get(C::alu_ab_tags_diff_inv))) +
165 static_cast<View
>(in.get(C::alu_ab_tags_diff_inv))) -
167 CView(alu_AB_TAGS_EQ));
171 using View =
typename std::tuple_element_t<13, ContainerOverSubrelations>::View;
172 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_decompose_a)) -
173 (
static_cast<View
>(in.get(C::alu_sel_mul_div_u128)) +
174 static_cast<View
>(in.get(C::alu_sel_shift_ops)) *
CView(alu_IS_NOT_FF)));
178 using View =
typename std::tuple_element_t<14, ContainerOverSubrelations>::View;
179 auto tmp =
static_cast<View
>(in.get(C::alu_sel_decompose_a)) *
180 (
CView(alu_DECOMPOSED_A) - (
static_cast<View
>(in.get(C::alu_a_lo)) +
181 CView(alu_LIMB_SIZE) *
static_cast<View
>(in.get(C::alu_a_hi))));
185 using View =
typename std::tuple_element_t<15, ContainerOverSubrelations>::View;
186 auto tmp =
static_cast<View
>(in.get(C::alu_sel_mul_div_u128)) *
187 (
CView(alu_DECOMPOSED_B) - (
static_cast<View
>(in.get(C::alu_b_lo)) +
188 CView(alu_LIMB_SIZE) *
static_cast<View
>(in.get(C::alu_b_hi))));
192 using View =
typename std::tuple_element_t<16, ContainerOverSubrelations>::View;
193 auto tmp =
static_cast<View
>(in.get(C::alu_sel_mul_div_u128)) *
194 (
FF(64) -
static_cast<View
>(in.get(C::alu_constant_64)));
198 using View =
typename std::tuple_element_t<17, ContainerOverSubrelations>::View;
199 auto tmp = ((
static_cast<View
>(in.get(C::alu_a_lo_bits)) -
static_cast<View
>(in.get(C::alu_sel_mul_div_u128)) *
200 static_cast<View
>(in.get(C::alu_constant_64))) -
201 static_cast<View
>(in.get(C::alu_sel_shift_ops)) *
static_cast<View
>(in.get(C::alu_shift_lo_bits)));
205 using View =
typename std::tuple_element_t<18, ContainerOverSubrelations>::View;
206 auto tmp = ((
static_cast<View
>(in.get(C::alu_a_hi_bits)) -
static_cast<View
>(in.get(C::alu_sel_mul_div_u128)) *
207 static_cast<View
>(in.get(C::alu_constant_64))) -
208 static_cast<View
>(in.get(C::alu_sel_shift_ops)) *
CView(alu_SHIFT_HI_BITS));
212 using View =
typename std::tuple_element_t<19, ContainerOverSubrelations>::View;
214 static_cast<View
>(in.get(C::alu_sel_op_add)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_add)));
218 using View =
typename std::tuple_element_t<20, ContainerOverSubrelations>::View;
220 static_cast<View
>(in.get(C::alu_sel_op_sub)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_sub)));
224 using View =
typename std::tuple_element_t<21, ContainerOverSubrelations>::View;
225 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_op_add)) +
static_cast<View
>(in.get(C::alu_sel_op_sub))) *
226 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_tag_err))) *
227 ((
static_cast<View
>(in.get(C::alu_ia)) -
static_cast<View
>(in.get(C::alu_ic))) +
228 (
static_cast<View
>(in.get(C::alu_sel_op_add)) -
static_cast<View
>(in.get(C::alu_sel_op_sub))) *
229 (
static_cast<View
>(in.get(C::alu_ib)) -
230 static_cast<View
>(in.get(C::alu_cf)) * (
static_cast<View
>(in.get(C::alu_max_value)) +
FF(1))));
234 using View =
typename std::tuple_element_t<22, ContainerOverSubrelations>::View;
236 static_cast<View
>(in.get(C::alu_sel_op_mul)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_mul)));
240 using View =
typename std::tuple_element_t<23, ContainerOverSubrelations>::View;
241 auto tmp =
static_cast<View
>(in.get(C::alu_sel_op_mul)) *
CView(alu_IS_NOT_U128) *
242 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_tag_err))) *
243 ((
static_cast<View
>(in.get(C::alu_ia)) *
static_cast<View
>(in.get(C::alu_ib)) -
244 static_cast<View
>(in.get(C::alu_ic))) -
245 (
static_cast<View
>(in.get(C::alu_max_value)) +
FF(1)) *
static_cast<View
>(in.get(C::alu_c_hi)));
249 using View =
typename std::tuple_element_t<24, ContainerOverSubrelations>::View;
250 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_mul_u128)) -
251 static_cast<View
>(in.get(C::alu_sel_is_u128)) *
static_cast<View
>(in.get(C::alu_sel_op_mul)));
255 using View =
typename std::tuple_element_t<25, ContainerOverSubrelations>::View;
256 auto tmp =
static_cast<View
>(in.get(C::alu_sel_mul_u128)) *
257 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_tag_err))) *
258 (((
static_cast<View
>(in.get(C::alu_ia)) *
static_cast<View
>(in.get(C::alu_b_lo)) +
259 static_cast<View
>(in.get(C::alu_a_lo)) *
static_cast<View
>(in.get(C::alu_b_hi)) *
260 CView(alu_TWO_POW_64)) -
261 static_cast<View
>(in.get(C::alu_ic))) -
262 (
static_cast<View
>(in.get(C::alu_max_value)) +
FF(1)) *
263 (
static_cast<View
>(in.get(C::alu_cf)) *
CView(alu_TWO_POW_64) +
264 static_cast<View
>(in.get(C::alu_c_hi))));
268 using View =
typename std::tuple_element_t<26, ContainerOverSubrelations>::View;
270 static_cast<View
>(in.get(C::alu_sel_op_div)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_div)));
274 using View =
typename std::tuple_element_t<27, ContainerOverSubrelations>::View;
276 (
static_cast<View
>(in.get(C::alu_sel_div_no_0_err)) -
277 static_cast<View
>(in.get(C::alu_sel_op_div)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_div_0_err))));
281 using View =
typename std::tuple_element_t<28, ContainerOverSubrelations>::View;
282 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_mul_div_u128)) -
283 (
static_cast<View
>(in.get(C::alu_sel_mul_u128)) +
284 static_cast<View
>(in.get(C::alu_sel_is_u128)) *
static_cast<View
>(in.get(C::alu_sel_op_div))));
288 using View =
typename std::tuple_element_t<29, ContainerOverSubrelations>::View;
289 auto tmp =
static_cast<View
>(in.get(C::alu_sel_is_u128)) *
static_cast<View
>(in.get(C::alu_sel_op_div)) *
290 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_err))) *
static_cast<View
>(in.get(C::alu_a_hi)) *
291 static_cast<View
>(in.get(C::alu_b_hi));
295 using View =
typename std::tuple_element_t<30, ContainerOverSubrelations>::View;
297 static_cast<View
>(in.get(C::alu_sel_is_u128)) *
static_cast<View
>(in.get(C::alu_sel_op_div)) *
298 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_err))) *
299 ((
static_cast<View
>(in.get(C::alu_ic)) *
static_cast<View
>(in.get(C::alu_b_lo)) +
300 static_cast<View
>(in.get(C::alu_a_lo)) *
static_cast<View
>(in.get(C::alu_b_hi)) *
CView(alu_TWO_POW_64)) -
301 (
static_cast<View
>(in.get(C::alu_ia)) -
static_cast<View
>(in.get(C::alu_helper1))));
305 using View =
typename std::tuple_element_t<31, ContainerOverSubrelations>::View;
307 static_cast<View
>(in.get(C::alu_sel_op_fdiv)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_fdiv)));
311 using View =
typename std::tuple_element_t<32, ContainerOverSubrelations>::View;
313 static_cast<View
>(in.get(C::alu_sel_div_0_err)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_div_0_err)));
317 using View =
typename std::tuple_element_t<33, ContainerOverSubrelations>::View;
319 (
CView(alu_DIV_OPS) *
320 ((
static_cast<View
>(in.get(C::alu_ib)) * (
static_cast<View
>(in.get(C::alu_sel_div_0_err)) *
321 (
FF(1) -
static_cast<View
>(in.get(C::alu_b_inv))) +
322 static_cast<View
>(in.get(C::alu_b_inv))) +
323 static_cast<View
>(in.get(C::alu_sel_div_0_err))) -
325 static_cast<View
>(in.get(C::alu_sel_div_0_err)) *
326 (
static_cast<View
>(in.get(C::alu_sel_div_0_err)) -
CView(alu_DIV_OPS)));
330 using View =
typename std::tuple_element_t<34, ContainerOverSubrelations>::View;
331 auto tmp =
CView(alu_DIV_OPS_NON_U128) *
332 (
static_cast<View
>(in.get(C::alu_ib)) *
static_cast<View
>(in.get(C::alu_ic)) -
333 (
static_cast<View
>(in.get(C::alu_ia)) -
334 static_cast<View
>(in.get(C::alu_sel_op_div)) *
static_cast<View
>(in.get(C::alu_helper1))));
338 using View =
typename std::tuple_element_t<35, ContainerOverSubrelations>::View;
339 auto tmp =
static_cast<View
>(in.get(C::alu_sel_op_eq)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_eq)));
343 using View =
typename std::tuple_element_t<36, ContainerOverSubrelations>::View;
345 static_cast<View
>(in.get(C::alu_sel_op_eq)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_tag_err))) *
347 (
static_cast<View
>(in.get(C::alu_ic)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_ab_diff_inv))) +
348 static_cast<View
>(in.get(C::alu_ab_diff_inv))) -
350 static_cast<View
>(in.get(C::alu_ic)));
354 using View =
typename std::tuple_element_t<37, ContainerOverSubrelations>::View;
355 auto tmp =
static_cast<View
>(in.get(C::alu_sel_op_lt)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_lt)));
359 using View =
typename std::tuple_element_t<38, ContainerOverSubrelations>::View;
361 static_cast<View
>(in.get(C::alu_sel_op_lte)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_lte)));
365 using View =
typename std::tuple_element_t<39, ContainerOverSubrelations>::View;
366 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_lt_ops)) -
367 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_tag_err))) *
368 (
static_cast<View
>(in.get(C::alu_sel_op_lt)) +
static_cast<View
>(in.get(C::alu_sel_op_lte))));
372 using View =
typename std::tuple_element_t<40, ContainerOverSubrelations>::View;
373 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_ff_lt_ops)) -
374 static_cast<View
>(in.get(C::alu_sel_is_ff)) *
static_cast<View
>(in.get(C::alu_sel_lt_ops)));
378 using View =
typename std::tuple_element_t<41, ContainerOverSubrelations>::View;
379 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_int_lt_ops)) -
380 CView(alu_IS_NOT_FF) *
static_cast<View
>(in.get(C::alu_sel_lt_ops)));
384 using View =
typename std::tuple_element_t<42, ContainerOverSubrelations>::View;
385 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_op_lt)) *
386 (
static_cast<View
>(in.get(C::alu_lt_ops_input_a)) -
static_cast<View
>(in.get(C::alu_ib))) +
387 static_cast<View
>(in.get(C::alu_sel_op_lte)) *
388 (
static_cast<View
>(in.get(C::alu_lt_ops_input_a)) -
static_cast<View
>(in.get(C::alu_ia))));
392 using View =
typename std::tuple_element_t<43, ContainerOverSubrelations>::View;
393 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_op_lt)) *
394 (
static_cast<View
>(in.get(C::alu_lt_ops_input_b)) -
static_cast<View
>(in.get(C::alu_ia))) +
395 static_cast<View
>(in.get(C::alu_sel_op_lte)) *
396 (
static_cast<View
>(in.get(C::alu_lt_ops_input_b)) -
static_cast<View
>(in.get(C::alu_ib))));
400 using View =
typename std::tuple_element_t<44, ContainerOverSubrelations>::View;
402 (
static_cast<View
>(in.get(C::alu_sel_op_lt)) *
403 (
static_cast<View
>(in.get(C::alu_lt_ops_result_c)) -
static_cast<View
>(in.get(C::alu_ic))) +
404 static_cast<View
>(in.get(C::alu_sel_op_lte)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_tag_err))) *
405 ((
FF(1) -
static_cast<View
>(in.get(C::alu_lt_ops_result_c))) -
static_cast<View
>(in.get(C::alu_ic))));
409 using View =
typename std::tuple_element_t<45, ContainerOverSubrelations>::View;
411 static_cast<View
>(in.get(C::alu_sel_op_not)) * (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_not)));
415 using View =
typename std::tuple_element_t<46, ContainerOverSubrelations>::View;
416 auto tmp =
static_cast<View
>(in.get(C::alu_sel_op_not)) *
417 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_tag_err))) *
418 ((
static_cast<View
>(in.get(C::alu_ia)) +
static_cast<View
>(in.get(C::alu_ib))) -
419 static_cast<View
>(in.get(C::alu_max_value)));
423 using View =
typename std::tuple_element_t<47, ContainerOverSubrelations>::View;
425 static_cast<View
>(in.get(C::alu_sel_op_shl)) *
static_cast<View
>(in.get(C::alu_sel_shift_ops_no_overflow)) *
426 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_tag_err))) *
427 ((
static_cast<View
>(in.get(C::alu_max_value)) +
FF(1)) -
428 static_cast<View
>(in.get(C::alu_two_pow_shift_lo_bits)) *
static_cast<View
>(in.get(C::alu_helper1)));
432 using View =
typename std::tuple_element_t<48, ContainerOverSubrelations>::View;
433 auto tmp =
static_cast<View
>(in.get(C::alu_sel_op_shl)) *
434 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_tag_err))) *
435 (
static_cast<View
>(in.get(C::alu_ic)) -
static_cast<View
>(in.get(C::alu_sel_shift_ops_no_overflow)) *
436 static_cast<View
>(in.get(C::alu_a_lo)) *
437 static_cast<View
>(in.get(C::alu_helper1)));
441 using View =
typename std::tuple_element_t<49, ContainerOverSubrelations>::View;
442 auto tmp =
static_cast<View
>(in.get(C::alu_sel_op_shr)) *
443 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_tag_err))) *
444 (
static_cast<View
>(in.get(C::alu_ic)) -
static_cast<View
>(in.get(C::alu_sel_shift_ops_no_overflow)) *
445 static_cast<View
>(in.get(C::alu_a_hi)));
449 using View =
typename std::tuple_element_t<50, ContainerOverSubrelations>::View;
450 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_shift_ops)) -
451 (
static_cast<View
>(in.get(C::alu_sel_op_shl)) +
static_cast<View
>(in.get(C::alu_sel_op_shr))));
455 using View =
typename std::tuple_element_t<51, ContainerOverSubrelations>::View;
456 auto tmp =
static_cast<View
>(in.get(C::alu_sel_shift_ops_no_overflow)) *
457 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_shift_ops)));
461 using View =
typename std::tuple_element_t<52, ContainerOverSubrelations>::View;
462 auto tmp = ((
static_cast<View
>(in.get(C::alu_shift_lo_bits)) -
463 static_cast<View
>(in.get(C::alu_sel_shift_ops_no_overflow)) *
464 (
static_cast<View
>(in.get(C::alu_sel_op_shl)) *
465 (
static_cast<View
>(in.get(C::alu_max_bits)) -
static_cast<View
>(in.get(C::alu_ib))) +
466 static_cast<View
>(in.get(C::alu_sel_op_shr)) *
static_cast<View
>(in.get(C::alu_ib)))) -
467 CView(alu_SHIFT_OVERFLOW) *
static_cast<View
>(in.get(C::alu_max_bits)));
471 using View =
typename std::tuple_element_t<53, ContainerOverSubrelations>::View;
472 auto tmp =
static_cast<View
>(in.get(C::alu_sel_op_truncate)) *
473 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_op_truncate)));
477 using View =
typename std::tuple_element_t<54, ContainerOverSubrelations>::View;
478 auto tmp =
static_cast<View
>(in.get(C::alu_sel_trunc_trivial)) *
479 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_trunc_trivial)));
483 using View =
typename std::tuple_element_t<55, ContainerOverSubrelations>::View;
484 auto tmp =
static_cast<View
>(in.get(C::alu_sel_trunc_gte_128)) *
485 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_trunc_gte_128)));
489 using View =
typename std::tuple_element_t<56, ContainerOverSubrelations>::View;
490 auto tmp =
static_cast<View
>(in.get(C::alu_sel_trunc_lt_128)) *
491 (
FF(1) -
static_cast<View
>(in.get(C::alu_sel_trunc_lt_128)));
495 using View =
typename std::tuple_element_t<57, ContainerOverSubrelations>::View;
496 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_trunc_non_trivial)) -
497 (
static_cast<View
>(in.get(C::alu_sel_trunc_gte_128)) +
498 static_cast<View
>(in.get(C::alu_sel_trunc_lt_128))));
502 using View =
typename std::tuple_element_t<58, ContainerOverSubrelations>::View;
503 auto tmp = (
static_cast<View
>(in.get(C::alu_sel_op_truncate)) -
504 (
static_cast<View
>(in.get(C::alu_sel_trunc_non_trivial)) +
505 static_cast<View
>(in.get(C::alu_sel_trunc_trivial))));
509 using View =
typename std::tuple_element_t<59, ContainerOverSubrelations>::View;
510 auto tmp =
static_cast<View
>(in.get(C::alu_sel_trunc_trivial)) *
511 (
static_cast<View
>(in.get(C::alu_ia)) -
static_cast<View
>(in.get(C::alu_ic)));
515 using View =
typename std::tuple_element_t<60, ContainerOverSubrelations>::View;
516 auto tmp =
static_cast<View
>(in.get(C::alu_sel_trunc_lt_128)) *
517 (
static_cast<View
>(in.get(C::alu_a_lo)) -
static_cast<View
>(in.get(C::alu_ia)));
521 using View =
typename std::tuple_element_t<61, ContainerOverSubrelations>::View;
522 auto tmp =
static_cast<View
>(in.get(C::alu_sel_trunc_non_trivial)) *
523 ((
static_cast<View
>(in.get(C::alu_ic)) +
524 static_cast<View
>(in.get(C::alu_mid)) * (
static_cast<View
>(in.get(C::alu_max_value)) +
FF(1))) -
525 static_cast<View
>(in.get(C::alu_a_lo)));
529 using View =
typename std::tuple_element_t<62, ContainerOverSubrelations>::View;
531 (
static_cast<View
>(in.get(C::alu_mid_bits)) -
static_cast<View
>(in.get(C::alu_sel_trunc_non_trivial)) *
532 (
FF(128) -
static_cast<View
>(in.get(C::alu_max_bits))));