31 using View =
typename std::tuple_element_t<1, ContainerOverSubrelations>::View;
32 auto tmp = (
FF(1) -
static_cast<View
>(in.get(C::precomputed_first_row))) *
33 (
FF(1) -
static_cast<View
>(in.get(C::poseidon2_hash_sel))) *
34 static_cast<View
>(in.get(C::poseidon2_hash_sel_shift));
38 using View =
typename std::tuple_element_t<2, ContainerOverSubrelations>::View;
39 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel)) * (
FF(1) -
CView(poseidon2_hash_LATCH_CONDITION)) *
40 (
static_cast<View
>(in.get(C::poseidon2_hash_output_shift)) -
41 static_cast<View
>(in.get(C::poseidon2_hash_output)));
45 using View =
typename std::tuple_element_t<3, ContainerOverSubrelations>::View;
46 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_start)) *
47 (
FF(1) -
static_cast<View
>(in.get(C::poseidon2_hash_start)));
51 using View =
typename std::tuple_element_t<4, ContainerOverSubrelations>::View;
52 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel_shift)) *
53 (
static_cast<View
>(in.get(C::poseidon2_hash_start_shift)) -
CView(poseidon2_hash_LATCH_CONDITION));
57 using View =
typename std::tuple_element_t<5, ContainerOverSubrelations>::View;
58 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_end)) *
59 (
FF(1) -
static_cast<View
>(in.get(C::poseidon2_hash_end)));
63 using View =
typename std::tuple_element_t<6, ContainerOverSubrelations>::View;
64 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_end)) *
65 (
FF(1) -
static_cast<View
>(in.get(C::poseidon2_hash_sel)));
69 using View =
typename std::tuple_element_t<7, ContainerOverSubrelations>::View;
70 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_padding)) *
71 (
static_cast<View
>(in.get(C::poseidon2_hash_padding)) -
FF(1)) *
72 (
static_cast<View
>(in.get(C::poseidon2_hash_padding)) -
FF(2));
76 using View =
typename std::tuple_element_t<8, ContainerOverSubrelations>::View;
77 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel)) *
78 static_cast<View
>(in.get(C::poseidon2_hash_start)) *
79 (
static_cast<View
>(in.get(C::poseidon2_hash_num_perm_rounds_rem)) *
FF(3) -
80 CView(poseidon2_hash_PADDED_LEN));
84 using View =
typename std::tuple_element_t<9, ContainerOverSubrelations>::View;
85 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel)) * (
FF(1) -
CView(poseidon2_hash_LATCH_CONDITION)) *
86 ((
static_cast<View
>(in.get(C::poseidon2_hash_num_perm_rounds_rem_shift)) -
87 static_cast<View
>(in.get(C::poseidon2_hash_num_perm_rounds_rem))) +
92 using View =
typename std::tuple_element_t<10, ContainerOverSubrelations>::View;
93 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel)) *
94 ((
CView(poseidon2_hash_NEXT_ROUND_COUNT) *
95 (
static_cast<View
>(in.get(C::poseidon2_hash_end)) *
96 (
FF(1) -
static_cast<View
>(in.get(C::poseidon2_hash_num_perm_rounds_rem_inv))) +
97 static_cast<View
>(in.get(C::poseidon2_hash_num_perm_rounds_rem_inv))) -
99 static_cast<View
>(in.get(C::poseidon2_hash_end)));
103 using View =
typename std::tuple_element_t<11, ContainerOverSubrelations>::View;
105 static_cast<View
>(in.get(C::poseidon2_hash_sel)) *
static_cast<View
>(in.get(C::poseidon2_hash_start)) *
106 (
static_cast<View
>(in.get(C::poseidon2_hash_a_0)) -
static_cast<View
>(in.get(C::poseidon2_hash_input_0)));
110 using View =
typename std::tuple_element_t<12, ContainerOverSubrelations>::View;
111 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel)) * (
FF(1) -
CView(poseidon2_hash_LATCH_CONDITION)) *
112 ((
static_cast<View
>(in.get(C::poseidon2_hash_a_0_shift)) -
113 static_cast<View
>(in.get(C::poseidon2_hash_b_0))) -
114 static_cast<View
>(in.get(C::poseidon2_hash_input_0_shift)));
118 using View =
typename std::tuple_element_t<13, ContainerOverSubrelations>::View;
120 static_cast<View
>(in.get(C::poseidon2_hash_sel)) *
static_cast<View
>(in.get(C::poseidon2_hash_start)) *
121 (
static_cast<View
>(in.get(C::poseidon2_hash_a_1)) -
static_cast<View
>(in.get(C::poseidon2_hash_input_1)));
125 using View =
typename std::tuple_element_t<14, ContainerOverSubrelations>::View;
126 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel)) * (
FF(1) -
CView(poseidon2_hash_LATCH_CONDITION)) *
127 ((
static_cast<View
>(in.get(C::poseidon2_hash_a_1_shift)) -
128 static_cast<View
>(in.get(C::poseidon2_hash_b_1))) -
129 static_cast<View
>(in.get(C::poseidon2_hash_input_1_shift)));
133 using View =
typename std::tuple_element_t<15, ContainerOverSubrelations>::View;
135 static_cast<View
>(in.get(C::poseidon2_hash_sel)) *
static_cast<View
>(in.get(C::poseidon2_hash_start)) *
136 (
static_cast<View
>(in.get(C::poseidon2_hash_a_2)) -
static_cast<View
>(in.get(C::poseidon2_hash_input_2)));
140 using View =
typename std::tuple_element_t<16, ContainerOverSubrelations>::View;
141 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel)) * (
FF(1) -
CView(poseidon2_hash_LATCH_CONDITION)) *
142 ((
static_cast<View
>(in.get(C::poseidon2_hash_a_2_shift)) -
143 static_cast<View
>(in.get(C::poseidon2_hash_b_2))) -
144 static_cast<View
>(in.get(C::poseidon2_hash_input_2_shift)));
148 using View =
typename std::tuple_element_t<17, ContainerOverSubrelations>::View;
149 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel)) *
150 static_cast<View
>(in.get(C::poseidon2_hash_start)) *
151 (
static_cast<View
>(in.get(C::poseidon2_hash_a_3)) -
CView(poseidon2_hash_IV));
155 using View =
typename std::tuple_element_t<18, ContainerOverSubrelations>::View;
157 static_cast<View
>(in.get(C::poseidon2_hash_sel)) * (
FF(1) -
CView(poseidon2_hash_LATCH_CONDITION)) *
158 (
static_cast<View
>(in.get(C::poseidon2_hash_a_3_shift)) -
static_cast<View
>(in.get(C::poseidon2_hash_b_3)));
162 using View =
typename std::tuple_element_t<19, ContainerOverSubrelations>::View;
164 static_cast<View
>(in.get(C::poseidon2_hash_sel)) *
CView(poseidon2_hash_LATCH_CONDITION) *
165 (
static_cast<View
>(in.get(C::poseidon2_hash_output)) -
static_cast<View
>(in.get(C::poseidon2_hash_b_0)));