117 const auto precompute_pc = ShortView(in.precompute_pc);
118 const auto tx = ShortView(in.precompute_tx);
119 const auto ty = ShortView(in.precompute_ty);
120 const auto precompute_round = ShortView(in.precompute_round);
121 const auto& gamma = params.gamma;
122 const auto& beta = params.beta;
123 const auto& beta_sqr = params.beta_sqr;
124 const auto& beta_cube = params.beta_cube;
126 if constexpr (table_index == 0) {
127 const auto positive_slice_value = -precompute_round +
FF(15);
128 const auto positive_term =
129 ((tx * beta_sqr + ty * beta_cube) + positive_slice_value * beta) + (precompute_pc *
FF(1) + gamma);
130 return positive_term;
131 }
else if constexpr (table_index == 1) {
132 const auto negative_term =
133 ((tx * beta_sqr - ty * beta_cube) + precompute_round * beta) + (precompute_pc *
FF(1) + gamma);
134 return negative_term;
136 return ShortView(Accumulator(
FF(1)));
152 const auto& gamma = params.gamma;
153 const auto& beta = params.beta;
154 const auto& beta_sqr = params.beta_sqr;
155 const auto& beta_cube = params.beta_cube;
156 const auto msm_pc = ShortView(in.msm_pc);
157 const auto msm_count = ShortView(in.msm_count);
158 const auto current_pc = msm_pc - msm_count;
160 if constexpr (lookup_index == 0) {
161 const auto slice = ShortView(in.msm_slice1);
162 const auto x = ShortView(in.msm_x1);
163 const auto y = ShortView(in.msm_y1);
164 const auto term = ((
slice * beta + x * beta_sqr) + y * beta_cube) + (current_pc + gamma);
166 }
else if constexpr (lookup_index == 1) {
167 const auto slice = ShortView(in.msm_slice2);
168 const auto x = ShortView(in.msm_x2);
169 const auto y = ShortView(in.msm_y2);
170 const auto term = ((
slice * beta + x * beta_sqr) + y * beta_cube) + ((current_pc -
FF(1)) + gamma);
172 }
else if constexpr (lookup_index == 2) {
173 const auto slice = ShortView(in.msm_slice3);
174 const auto x = ShortView(in.msm_x3);
175 const auto y = ShortView(in.msm_y3);
176 const auto term = ((
slice * beta + x * beta_sqr) + y * beta_cube) + ((current_pc -
FF(2)) + gamma);
178 }
else if constexpr (lookup_index == 3) {
179 const auto slice = ShortView(in.msm_slice4);
180 const auto x = ShortView(in.msm_x4);
181 const auto y = ShortView(in.msm_y4);
182 const auto term = ((
slice * beta + x * beta_sqr) + y * beta_cube) + ((current_pc -
FF(3)) + gamma);
185 return ShortView(Accumulator(
FF(1)));