Bill Allombert on Wed, 12 Jun 2013 17:39:48 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: How to calculate lower degree factors of elldivpol(e,100)


On Wed, Jun 12, 2013 at 03:55:01PM +0100, Richard in Reading wrote:
> I'm interested in the lower degree factors of various divison polynomials.
> I'm very impressed with PARI's ability to calculate with and then factorize a
> polynomials with large coefficients and degrees in the thousands. I have used
> the following:
> 
> e=ellinit("1584s1");
> f=elldivpol(e,100);
> fordiv(100,d,if(d!=100,f=f/gcd(f,elldivpol(e,d))));
> ff=factor(f);
> apply(poldegree,ff[,1]~)
> %1 = [100, 100, 200, 200, 1000, 2000]
> 
> But this is slow. Is there a more direct way to calculate the factors of degree 100 without getting the larger factors?

First you should use Moebius inversion formula, 
my(p=1);fordiv(100,d,my(m=moebius(d));if(!m,next);my(P=elldivpol(e,100/d));if(m>0,p*=P,p/=P));p

Second, why do you expect the polynomial to have small degree factors ?
This is the key to find them more quickly.

Cheers,
Bill.