diff options
Diffstat (limited to 'mpn/generic/mulmod_bnm1.c')
-rw-r--r-- | mpn/generic/mulmod_bnm1.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/mpn/generic/mulmod_bnm1.c b/mpn/generic/mulmod_bnm1.c index ca8812521..daf556a39 100644 --- a/mpn/generic/mulmod_bnm1.c +++ b/mpn/generic/mulmod_bnm1.c @@ -68,6 +68,7 @@ mpn_bc_mulmod_bnp1 (mp_ptr rp, mp_srcptr ap, mp_srcptr bp, mp_size_t rn, mp_ptr tp) { mp_limb_t cy; + unsigned k; ASSERT (0 < rn); @@ -78,6 +79,17 @@ mpn_bc_mulmod_bnp1 (mp_ptr rp, mp_srcptr ap, mp_srcptr bp, mp_size_t rn, else /* ap[rn] == 0 */ cy = mpn_neg (rp, ap, rn); } + else if (MPN_MULMOD_BKNP1_USABLE (rn, k, MUL_FFT_MODF_THRESHOLD)) + { + mp_size_t n_k = rn / k; + TMP_DECL; + + TMP_MARK; + mpn_mulmod_bknp1 (rp, ap, bp, n_k, k, + TMP_ALLOC_LIMBS (mpn_mulmod_bknp1_itch (rn))); + TMP_FREE; + return; + } else { mpn_mul_n (tp, ap, bp, rn); |