@@ -30,7 +30,7 @@ namespace cp_algo::math::fft {
3030 }
3131
3232 [[gnu::target(" avx2" )]] static std::pair<vftype, vftype>
33- do_split (auto const & a, size_t idx, size_t n, u64x4 mul) {
33+ do_split (auto const & a, size_t idx, u64x4 mul) {
3434 if (idx >= std::size (a)) {
3535 return std::pair{vftype (), vftype ()};
3636 }
@@ -60,8 +60,8 @@ namespace cp_algo::math::fft {
6060 u64x4 step4 = u64x4{} + (bpow (factor, 4 ) * b2x32).getr ();
6161 u64x4 stepn = u64x4{} + (bpow (factor, n) * b2x32).getr ();
6262 for (size_t i = 0 ; i < std::min (n, std::size (a)); i += flen) {
63- auto [rai, qai] = do_split (a, i, n, cur);
64- auto [rani, qani] = do_split (a, n + i, n, montgomery_mul (cur, stepn, mod, imod));
63+ auto [rai, qai] = do_split (a, i, cur);
64+ auto [rani, qani] = do_split (a, n + i, montgomery_mul (cur, stepn, mod, imod));
6565 A.at (i) = vpoint (rai, rani);
6666 B.at (i) = vpoint (qai, qani);
6767 cur = montgomery_mul (cur, step4, mod, imod);
@@ -77,7 +77,7 @@ namespace cp_algo::math::fft {
7777 }
7878 }
7979 }
80- [[gnu::target(" avx2" )]] static void do_dot_iter (size_t i, point rt, vpoint& Cv, vpoint& Dv, vpoint const & Av, vpoint const & Bv, vpoint& AC, vpoint& AD, vpoint& BC, vpoint& BD) {
80+ [[gnu::target(" avx2" )]] static void do_dot_iter (point rt, vpoint& Cv, vpoint& Dv, vpoint const & Av, vpoint const & Bv, vpoint& AC, vpoint& AD, vpoint& BC, vpoint& BD) {
8181 AC += Av * Cv; AD += Av * Dv;
8282 BC += Bv * Cv; BD += Bv * Dv;
8383 real (Cv) = rotate_right (real (Cv));
@@ -104,7 +104,7 @@ namespace cp_algo::math::fft {
104104 auto [Bx, By] = B.at (k);
105105 for (size_t i = 0 ; i < flen; i++) {
106106 vpoint Av = {vz + Ax[i], vz + Ay[i]}, Bv = {vz + Bx[i], vz + By[i]};
107- do_dot_iter (i, rt, Cv, Dv, Av, Bv, AC, AD, BC, BD);
107+ do_dot_iter (rt, Cv, Dv, Av, Bv, AC, AD, BC, BD);
108108 }
109109 } else {
110110 AC = A.at (k) * Cv;
0 commit comments