diff options
author | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2022-03-11 09:30:59 +0100 |
---|---|---|
committer | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2022-03-11 09:30:59 +0100 |
commit | ac6e737460264403b0decdca466fa4e4c9d5508a (patch) | |
tree | 588cc5109b0986b5267bc4ba2810cfd00b7e3645 | |
parent | 31a51f296fec0a850db774fac45e43f9fbc062e3 (diff) | |
download | gmp-ac6e737460264403b0decdca466fa4e4c9d5508a.tar.gz |
mpn/generic/sqrmod_bnm1.c: Use sqrmod_bknp1, on the bnp1 side
-rw-r--r-- | mpn/generic/sqrmod_bnm1.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/mpn/generic/sqrmod_bnm1.c b/mpn/generic/sqrmod_bnm1.c index 00a13d9ef..5b7b4356b 100644 --- a/mpn/generic/sqrmod_bnm1.c +++ b/mpn/generic/sqrmod_bnm1.c @@ -66,6 +66,7 @@ static void mpn_bc_sqrmod_bnp1 (mp_ptr rp, mp_srcptr ap, mp_size_t rn, mp_ptr tp) { mp_limb_t cy; + unsigned k; ASSERT (0 < rn); @@ -75,6 +76,17 @@ mpn_bc_sqrmod_bnp1 (mp_ptr rp, mp_srcptr ap, mp_size_t rn, mp_ptr tp) MPN_FILL (rp + 1, rn, 0); return; } + else if (MPN_SQRMOD_BKNP1_USABLE (rn, k, MUL_FFT_MODF_THRESHOLD)) + { + mp_size_t n_k = rn / k; + TMP_DECL; + + TMP_MARK; + mpn_sqrmod_bknp1 (rp, ap, n_k, k, + TMP_ALLOC_LIMBS (mpn_sqrmod_bknp1_itch (rn))); + TMP_FREE; + return; + } mpn_sqr (tp, ap, rn); cy = mpn_sub_n (rp, tp, tp + rn, rn); rp[rn] = 0; |