-----Original Message----- From: Bill Hart
Sent: Monday, October 15, 2012 2:19 PM
To: mpir-devel@googlegroups.com
Subject: Re: [mpir-devel] MPIR 2.6.0-alpha2 released

According to the documentation for mpn_mul_fft:

/* put in {op, pl} the product of {n, nl} * {m, ml} mod (B^pl+1)
  where B = 2^GMP_NUMB_BITS. */

This is essentially the function of the new:

int
mpn_mulmod_Bexpp1_fft (mp_ptr op, mp_size_t pl,
    mp_srcptr n, mp_size_t nl,
    mp_srcptr m, mp_size_t ml)

An example of its use is lines 87-89 of mpn/generic/inv_div_qr_n.c in MPIR.

I couldn't imagine this taking more than 10 mins of someone's time to
fix, given this information.

========================

You might be right but it has to work for both GMP and MPIR and it is not obvious to me where to put in the GMP/MPIR branches in the three GMP-ECM files affected:

gmp-ecm\ks-multiply.c(27): #define FFT_WRAP /* always defined since mpn_mul_fft is included */
gmp-ecm\ks-multiply.c(520):   k = mpn_fft_best_k ((m + n + 1) * s, 0);
gmp-ecm\ks-multiply.c(521):   bn = mpn_fft_next_size ((m + n + 1) * s, k);
gmp-ecm\ks-multiply.c(523): k_old = mpn_fft_best_k ((m + n + 1) * s_old, 0); gmp-ecm\ks-multiply.c(528): bn_old = mpn_fft_next_size ((m + n + 1) * s_old, k_old);
gmp-ecm\ks-multiply.c(540):   mpn_mul_fft (bp, bn, ap, an, cp, cn, k);
gmp-ecm\ks-multiply.c(605):   fft_k = mpn_fft_best_k (m0 * s, 0);
gmp-ecm\ks-multiply.c(606):   i = mpn_fft_next_size (m0 * s, fft_k);
gmp-ecm\ks-multiply.c(608):   i = mpn_fft_next_size (i + 1, fft_k);
gmp-ecm\ks-multiply.c(670):   fft_k = mpn_fft_best_k (m0 * s, 0);
gmp-ecm\ks-multiply.c(671):   i = mpn_fft_next_size (m0 * s, fft_k);
gmp-ecm\ks-multiply.c(675):   i = mpn_fft_next_size (i + 1, fft_k);
gmp-ecm\ks-multiply.c(687): mpn_mul_fft (t2_ptr, i, t0_ptr, size_t0, t1_ptr, size_t1, fft_k);

gmp-ecm\mpmod.c(1456):        k = mpn_fft_best_k (n, S1 == S2);
gmp-ecm\mpmod.c(1457):        ASSERT(mpn_fft_next_size (n, k) == n);
gmp-ecm\mpmod.c(1475): /* mpn_mul_fft() computes the product modulo B^n + 1, where gmp-ecm\mpmod.c(1479): R + cy * B^n, where cy is the value returned by mpn_mul_fft(). */ gmp-ecm\mpmod.c(1480): PTR(R)[n] = mpn_mul_fft (PTR(R), n, s1p, ABS(s1s), s2p, ABS(s2s), k);
gmp-ecm\mpmod.c(1665):        k = mpn_fft_best_k (n, S1 == S2);
gmp-ecm\mpmod.c(1666):        ASSERT(mpn_fft_next_size (n, k) == n);
gmp-ecm\mpmod.c(1684): /* mpn_mul_fft() computes the product modulo B^n + 1, where gmp-ecm\mpmod.c(1688): R + cy * B^n, where cy is the value returned by mpn_mul_fft(). */ gmp-ecm\mpmod.c(1689): PTR(R)[n] = mpn_mul_fft (PTR(R), n, s1p, ABS(s1s), s2p, ABS(s2s), k);

gmp-ecm\schoen_strass.c(178): k = mpn_fft_best_k (n2, S1 == S2);
gmp-ecm\schoen_strass.c(179): mpn_mul_fft (PTR(gt), n2, PTR(S1), ABSIZ(S1), PTR(S2), ABSIZ(S2), k);

I hoped that I might be able to do this but I now doubt this :-(

     Brian

--
You received this message because you are subscribed to the Google Groups 
"mpir-devel" group.
To post to this group, send email to mpir-devel@googlegroups.com.
To unsubscribe from this group, send email to 
mpir-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/mpir-devel?hl=en.

Reply via email to