28 const auto ff_gt_B_SUB_A_HI = ((in.get(C::ff_gt_b_hi) - in.get(C::ff_gt_a_hi)) - in.get(C::ff_gt_borrow));
29 const auto ff_gt_IS_GT = in.get(C::ff_gt_sel_gt) * in.get(C::ff_gt_result);
33 auto tmp = in.get(C::ff_gt_sel) * (
FF(1) - in.get(C::ff_gt_sel));
34 tmp *= scaling_factor;
35 std::get<0>(evals) +=
typename Accumulator::View(tmp);
39 auto tmp = in.get(C::ff_gt_result) * (
FF(1) - in.get(C::ff_gt_result));
40 tmp *= scaling_factor;
41 std::get<1>(evals) +=
typename Accumulator::View(tmp);
45 auto tmp = in.get(C::ff_gt_sel_gt) * (
FF(1) - in.get(C::ff_gt_sel_gt));
46 tmp *= scaling_factor;
47 std::get<2>(evals) +=
typename Accumulator::View(tmp);
51 auto tmp = in.get(C::ff_gt_sel_dec) * (
FF(1) - in.get(C::ff_gt_sel_dec));
52 tmp *= scaling_factor;
53 std::get<3>(evals) +=
typename Accumulator::View(tmp);
57 auto tmp = in.get(C::ff_gt_sel) * (
FF(128) - in.get(C::ff_gt_constant_128));
58 tmp *= scaling_factor;
59 std::get<4>(evals) +=
typename Accumulator::View(tmp);
64 ff_gt_SEL_START * (in.get(C::ff_gt_a) - (in.get(C::ff_gt_a_lo) + ff_gt_POW_128 * in.get(C::ff_gt_a_hi)));
65 tmp *= scaling_factor;
66 std::get<5>(evals) +=
typename Accumulator::View(tmp);
70 auto tmp = in.get(C::ff_gt_p_a_borrow) * (
FF(1) - in.get(C::ff_gt_p_a_borrow));
71 tmp *= scaling_factor;
72 std::get<6>(evals) +=
typename Accumulator::View(tmp);
76 auto tmp = ff_gt_SEL_START * (in.get(C::ff_gt_p_sub_a_lo) - (((ff_gt_P_LO - in.get(C::ff_gt_a_lo)) -
FF(1)) +
77 in.get(C::ff_gt_p_a_borrow) * ff_gt_POW_128));
78 tmp *= scaling_factor;
79 std::get<7>(evals) +=
typename Accumulator::View(tmp);
83 auto tmp = ff_gt_SEL_START *
84 (in.get(C::ff_gt_p_sub_a_hi) - ((ff_gt_P_HI - in.get(C::ff_gt_a_hi)) - in.get(C::ff_gt_p_a_borrow)));
85 tmp *= scaling_factor;
86 std::get<8>(evals) +=
typename Accumulator::View(tmp);
90 auto tmp = in.get(C::ff_gt_sel_gt) *
91 (in.get(C::ff_gt_b) - (in.get(C::ff_gt_b_lo) + ff_gt_POW_128 * in.get(C::ff_gt_b_hi)));
92 tmp *= scaling_factor;
93 std::get<9>(evals) +=
typename Accumulator::View(tmp);
97 auto tmp = in.get(C::ff_gt_p_b_borrow) * (
FF(1) - in.get(C::ff_gt_p_b_borrow));
98 tmp *= scaling_factor;
103 auto tmp = in.get(C::ff_gt_sel_gt) *
104 (in.get(C::ff_gt_p_sub_b_lo) -
105 (((ff_gt_P_LO - in.get(C::ff_gt_b_lo)) -
FF(1)) + in.get(C::ff_gt_p_b_borrow) * ff_gt_POW_128));
106 tmp *= scaling_factor;
111 auto tmp = in.get(C::ff_gt_sel_gt) *
112 (in.get(C::ff_gt_p_sub_b_hi) - ((ff_gt_P_HI - in.get(C::ff_gt_b_hi)) - in.get(C::ff_gt_p_b_borrow)));
113 tmp *= scaling_factor;
119 in.get(C::ff_gt_sel_gt) *
120 (in.get(C::ff_gt_res_lo) - (ff_gt_A_SUB_B_LO * ff_gt_IS_GT + ff_gt_B_SUB_A_LO * (
FF(1) - ff_gt_IS_GT)));
121 tmp *= scaling_factor;
127 in.get(C::ff_gt_sel_gt) *
128 (in.get(C::ff_gt_res_hi) - (ff_gt_A_SUB_B_HI * ff_gt_IS_GT + ff_gt_B_SUB_A_HI * (
FF(1) - ff_gt_IS_GT)));
129 tmp *= scaling_factor;
134 auto tmp = in.get(C::ff_gt_sel_gt) * (in.get(C::ff_gt_cmp_rng_ctr) -
FF(4));
135 tmp *= scaling_factor;
140 auto tmp = in.get(C::ff_gt_sel_dec) * (in.get(C::ff_gt_cmp_rng_ctr) -
FF(1));
141 tmp *= scaling_factor;
146 auto tmp = in.get(C::ff_gt_cmp_rng_ctr) *
147 ((in.get(C::ff_gt_cmp_rng_ctr) -
FF(1)) - in.get(C::ff_gt_cmp_rng_ctr_shift));
148 tmp *= scaling_factor;
153 auto tmp = in.get(C::ff_gt_sel_shift_rng) * (
FF(1) - in.get(C::ff_gt_sel_shift_rng));
154 tmp *= scaling_factor;
159 auto tmp = (in.get(C::ff_gt_cmp_rng_ctr) *
160 ((
FF(1) - in.get(C::ff_gt_sel_shift_rng)) * (
FF(1) - in.get(C::ff_gt_cmp_rng_ctr_inv)) +
161 in.get(C::ff_gt_cmp_rng_ctr_inv)) -
162 in.get(C::ff_gt_sel_shift_rng));
163 tmp *= scaling_factor;
168 auto tmp = (in.get(C::ff_gt_a_lo_shift) - in.get(C::ff_gt_p_sub_a_lo)) * in.get(C::ff_gt_sel_shift_rng);
169 tmp *= scaling_factor;
174 auto tmp = (in.get(C::ff_gt_a_hi_shift) - in.get(C::ff_gt_p_sub_a_hi)) * in.get(C::ff_gt_sel_shift_rng);
175 tmp *= scaling_factor;
180 auto tmp = (in.get(C::ff_gt_p_sub_a_lo_shift) - in.get(C::ff_gt_b_lo)) * in.get(C::ff_gt_sel_shift_rng);
181 tmp *= scaling_factor;
186 auto tmp = (in.get(C::ff_gt_p_sub_a_hi_shift) - in.get(C::ff_gt_b_hi)) * in.get(C::ff_gt_sel_shift_rng);
187 tmp *= scaling_factor;
192 auto tmp = (in.get(C::ff_gt_b_lo_shift) - in.get(C::ff_gt_p_sub_b_lo)) * in.get(C::ff_gt_sel_shift_rng);
193 tmp *= scaling_factor;
198 auto tmp = (in.get(C::ff_gt_b_hi_shift) - in.get(C::ff_gt_p_sub_b_hi)) * in.get(C::ff_gt_sel_shift_rng);
199 tmp *= scaling_factor;
204 auto tmp = (in.get(C::ff_gt_p_sub_b_lo_shift) - in.get(C::ff_gt_res_lo)) * in.get(C::ff_gt_sel_shift_rng);
205 tmp *= scaling_factor;
210 auto tmp = (in.get(C::ff_gt_p_sub_b_hi_shift) - in.get(C::ff_gt_res_hi)) * in.get(C::ff_gt_sel_shift_rng);
211 tmp *= scaling_factor;
216 auto tmp = ((in.get(C::ff_gt_sel_shift_rng) + in.get(C::ff_gt_sel_gt_shift) + in.get(C::ff_gt_sel_dec_shift)) -
217 in.get(C::ff_gt_sel_shift));
218 tmp *= scaling_factor;