31 using View =
typename std::tuple_element_t<1, ContainerOverSubrelations>::View;
32 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_start)) *
33 (
FF(1) -
static_cast<View
>(in.get(C::poseidon2_hash_start)));
37 using View =
typename std::tuple_element_t<2, ContainerOverSubrelations>::View;
38 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_end)) *
39 (
FF(1) -
static_cast<View
>(in.get(C::poseidon2_hash_end)));
43 using View =
typename std::tuple_element_t<3, ContainerOverSubrelations>::View;
45 (
static_cast<View
>(in.get(C::poseidon2_hash_start)) +
static_cast<View
>(in.get(C::poseidon2_hash_end))) *
46 (
FF(1) -
static_cast<View
>(in.get(C::poseidon2_hash_sel)));
50 using View =
typename std::tuple_element_t<4, ContainerOverSubrelations>::View;
52 (
FF(1) -
CView(poseidon2_hash_LATCH_CONDITION)) *
53 (
static_cast<View
>(in.get(C::poseidon2_hash_sel)) -
static_cast<View
>(in.get(C::poseidon2_hash_sel_shift)));
57 using View =
typename std::tuple_element_t<5, ContainerOverSubrelations>::View;
58 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_sel_shift)) *
59 (
static_cast<View
>(in.get(C::poseidon2_hash_start_shift)) -
CView(poseidon2_hash_LATCH_CONDITION));
63 using View =
typename std::tuple_element_t<6, ContainerOverSubrelations>::View;
64 auto tmp = (
FF(1) -
CView(poseidon2_hash_LATCH_CONDITION)) *
65 (
static_cast<View
>(in.get(C::poseidon2_hash_output_shift)) -
66 static_cast<View
>(in.get(C::poseidon2_hash_output)));
70 using View =
typename std::tuple_element_t<7, ContainerOverSubrelations>::View;
71 auto tmp =
static_cast<View
>(in.get(C::poseidon2_hash_padding)) *
72 (
static_cast<View
>(in.get(C::poseidon2_hash_padding)) -
FF(1)) *
73 (
static_cast<View
>(in.get(C::poseidon2_hash_padding)) -
FF(2));
77 using View =
typename std::tuple_element_t<8, ContainerOverSubrelations>::View;
78 auto tmp =
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_min_one_inv))) +
97 static_cast<View
>(in.get(C::poseidon2_hash_num_perm_rounds_rem_min_one_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_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 = (
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_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 = (
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_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 = (
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_start)) *
150 (
static_cast<View
>(in.get(C::poseidon2_hash_a_3)) -
CView(poseidon2_hash_IV));
154 using View =
typename std::tuple_element_t<18, ContainerOverSubrelations>::View;
156 (
FF(1) -
CView(poseidon2_hash_LATCH_CONDITION)) *
157 (
static_cast<View
>(in.get(C::poseidon2_hash_a_3_shift)) -
static_cast<View
>(in.get(C::poseidon2_hash_b_3)));
161 using View =
typename std::tuple_element_t<19, ContainerOverSubrelations>::View;
163 static_cast<View
>(in.get(C::poseidon2_hash_end)) *
164 (
static_cast<View
>(in.get(C::poseidon2_hash_output)) -
static_cast<View
>(in.get(C::poseidon2_hash_b_0)));