31 using View =
typename std::tuple_element_t<1, ContainerOverSubrelations>::View;
32 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel)) * (
FF(1) -
CView(poseidon2_hash_LATCH_CONDITION)) *
33 (
static_cast<View
>(in.get(C::poseidon2_hash_output_shift)) -
34 static_cast<View
>(in.get(C::poseidon2_hash_output)));
38 using View =
typename std::tuple_element_t<2, ContainerOverSubrelations>::View;
39 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_start)) *
40 (
FF(1) -
static_cast<View
>(in.get(C::poseidon2_hash_start)));
44 using View =
typename std::tuple_element_t<3, ContainerOverSubrelations>::View;
45 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel_shift)) *
46 (
static_cast<View
>(in.get(C::poseidon2_hash_start_shift)) -
CView(poseidon2_hash_LATCH_CONDITION));
50 using View =
typename std::tuple_element_t<4, ContainerOverSubrelations>::View;
51 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_end)) *
52 (
FF(1) -
static_cast<View
>(in.get(C::poseidon2_hash_end)));
56 using View =
typename std::tuple_element_t<5, ContainerOverSubrelations>::View;
58 static_cast<View
>(in.get(C::poseidon2_hash_end)) *
static_cast<View
>(in.get(C::precomputed_first_row));
62 using View =
typename std::tuple_element_t<6, ContainerOverSubrelations>::View;
63 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_padding)) *
64 (
static_cast<View
>(in.get(C::poseidon2_hash_padding)) -
FF(1)) *
65 (
static_cast<View
>(in.get(C::poseidon2_hash_padding)) -
FF(2));
69 using View =
typename std::tuple_element_t<7, ContainerOverSubrelations>::View;
70 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel)) *
71 static_cast<View
>(in.get(C::poseidon2_hash_start)) *
72 (
static_cast<View
>(in.get(C::poseidon2_hash_num_perm_rounds_rem)) *
FF(3) -
73 CView(poseidon2_hash_PADDED_LEN));
77 using View =
typename std::tuple_element_t<8, ContainerOverSubrelations>::View;
78 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel)) * (
FF(1) -
CView(poseidon2_hash_LATCH_CONDITION)) *
79 ((
static_cast<View
>(in.get(C::poseidon2_hash_num_perm_rounds_rem_shift)) -
80 static_cast<View
>(in.get(C::poseidon2_hash_num_perm_rounds_rem))) +
85 using View =
typename std::tuple_element_t<9, ContainerOverSubrelations>::View;
86 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel)) *
87 ((
CView(poseidon2_hash_NEXT_ROUND_COUNT) *
88 (
static_cast<View
>(in.get(C::poseidon2_hash_end)) *
89 (
FF(1) -
static_cast<View
>(in.get(C::poseidon2_hash_num_perm_rounds_rem_inv))) +
90 static_cast<View
>(in.get(C::poseidon2_hash_num_perm_rounds_rem_inv))) -
92 static_cast<View
>(in.get(C::poseidon2_hash_end)));
96 using View =
typename std::tuple_element_t<10, ContainerOverSubrelations>::View;
98 static_cast<View
>(in.get(C::poseidon2_hash_sel)) *
static_cast<View
>(in.get(C::poseidon2_hash_start)) *
99 (
static_cast<View
>(in.get(C::poseidon2_hash_a_0)) -
static_cast<View
>(in.get(C::poseidon2_hash_input_0)));
103 using View =
typename std::tuple_element_t<11, ContainerOverSubrelations>::View;
104 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel)) * (
FF(1) -
CView(poseidon2_hash_LATCH_CONDITION)) *
105 ((
static_cast<View
>(in.get(C::poseidon2_hash_a_0_shift)) -
106 static_cast<View
>(in.get(C::poseidon2_hash_b_0))) -
107 static_cast<View
>(in.get(C::poseidon2_hash_input_0_shift)));
111 using View =
typename std::tuple_element_t<12, ContainerOverSubrelations>::View;
113 static_cast<View
>(in.get(C::poseidon2_hash_sel)) *
static_cast<View
>(in.get(C::poseidon2_hash_start)) *
114 (
static_cast<View
>(in.get(C::poseidon2_hash_a_1)) -
static_cast<View
>(in.get(C::poseidon2_hash_input_1)));
118 using View =
typename std::tuple_element_t<13, ContainerOverSubrelations>::View;
119 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel)) * (
FF(1) -
CView(poseidon2_hash_LATCH_CONDITION)) *
120 ((
static_cast<View
>(in.get(C::poseidon2_hash_a_1_shift)) -
121 static_cast<View
>(in.get(C::poseidon2_hash_b_1))) -
122 static_cast<View
>(in.get(C::poseidon2_hash_input_1_shift)));
126 using View =
typename std::tuple_element_t<14, ContainerOverSubrelations>::View;
128 static_cast<View
>(in.get(C::poseidon2_hash_sel)) *
static_cast<View
>(in.get(C::poseidon2_hash_start)) *
129 (
static_cast<View
>(in.get(C::poseidon2_hash_a_2)) -
static_cast<View
>(in.get(C::poseidon2_hash_input_2)));
133 using View =
typename std::tuple_element_t<15, ContainerOverSubrelations>::View;
134 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel)) * (
FF(1) -
CView(poseidon2_hash_LATCH_CONDITION)) *
135 ((
static_cast<View
>(in.get(C::poseidon2_hash_a_2_shift)) -
136 static_cast<View
>(in.get(C::poseidon2_hash_b_2))) -
137 static_cast<View
>(in.get(C::poseidon2_hash_input_2_shift)));
141 using View =
typename std::tuple_element_t<16, ContainerOverSubrelations>::View;
142 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel)) *
143 static_cast<View
>(in.get(C::poseidon2_hash_start)) *
144 (
static_cast<View
>(in.get(C::poseidon2_hash_a_3)) -
CView(poseidon2_hash_IV));
148 using View =
typename std::tuple_element_t<17, ContainerOverSubrelations>::View;
150 static_cast<View
>(in.get(C::poseidon2_hash_sel)) * (
FF(1) -
CView(poseidon2_hash_LATCH_CONDITION)) *
151 (
static_cast<View
>(in.get(C::poseidon2_hash_a_3_shift)) -
static_cast<View
>(in.get(C::poseidon2_hash_b_3)));
155 using View =
typename std::tuple_element_t<18, ContainerOverSubrelations>::View;
157 static_cast<View
>(in.get(C::poseidon2_hash_sel)) *
CView(poseidon2_hash_LATCH_CONDITION) *
158 (
static_cast<View
>(in.get(C::poseidon2_hash_output)) -
static_cast<View
>(in.get(C::poseidon2_hash_b_0)));