Karim Belabas on Sat, 20 Dec 2008 10:20:25 +0100


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

Re: Functions elllderiv and ellanalyticrank


* Bill Allombert [2008-12-19 23:20]:
> On Fri, Dec 19, 2008 at 07:20:53PM +0100, Karim Belabas wrote:
> > > 2) I think elllderiv should be renamed ellL1 for consistency with bnrL1
> > > (and maybe add a flag so that both functions have the same semantic).

Had forgotten to commit this one, sorry. No flag added: contrary to bnrL1, we
compute the value at the center of the critical strip, so no symmetry
in the special value here.

> > > 7) Please document what is VSX in #define VSX 5.
> > > (Or better remove VSX. One day someone will create a CPU called VSX and
> > > gcc with define VSX. It already appened with k6 and sgi.)

Done. My understanding is that VSX (now thresh_SMALL) is a completely random
value which -- I hope! -- performs well in practice, used to switch between
expansions near 0 and infinity for our incomplete integral transforms.

> Also the DEBUG message should be improved to be more useful.

Done to some extent, I think. More specific suggestions (svn11475 and above) ?

> > There are only two items left from my initial TODO list about this
> > patch:
> > 
> > A) It still uses far too much memory, so that the "small" curves with
> > rank 7 (say) can't be handled with a PARI stack of 1GByte.
> > 
> > B) Once A) is no longer a problem (say, in about 40 minutes), check Tom
> > Womack's table at
> > 
> >   http://www.warwick.ac.uk/staff/J.E.Cremona/womack.html
> > 
> > Many interesting curves with "largish but tolerable" conductor...
> 
> I just checked the first curves for each rank <=7, and it worked fine.
> For the rank 7, and curve [0,1,0,-5945,583879], we get:
> 
> %3 = [7, 10410274.011880989226208667596394924308]
>   ***   last result computed in 32mn, 22,973 ms.

Yes, point A) has recently been fixed.

            GP/PARI CALCULATOR Version 2.4.3 (development svn-11470)
        amd64 running linux (x86-64 kernel) 64-bit version -- debugging
[...]
? e = ellinit([0,1,0,-5945,583879], 1); ellanalyticrank(e)
  ***   at top-level: ellanalyticrank(e)
  ***                 ^------------------
  *** ellanalyticrank: the PARI stack overflows !
  current stack size: 1280000000 (1220.703 Mbytes)
  [hint] you can increase GP stack with allocatemem()


            GP/PARI CALCULATOR Version 2.4.3 (development svn-11471)
               amd64 running linux (x86-64 kernel) 64-bit version
[...]
? e = ellinit([0,1,0,-5945,583879], 1); ellanalyticrank(e)
time = 30mn, 21,814 ms.
%1 = [7, 10410274.011880989226208667596394924308]


The corresponding changelog:

r11471 | kb | 2008-12-19 23:35:00 +0100 (Fri, 19 Dec 2008)
   M /trunk/src/modules/elliptic.c

1) add proper garbage collecting
  /* conductor 2106671822272, rank 7 */
  ellanalyticrank( ellinit([0,1,0,-5945,583879]) );
now finishes in ~30 minutes with default stack [ used to overflow a 1GB stack ]
2) finish type cleanup (enforce strict input/output types)
3) el->an now a t_VECSMALL
4) miscellaneous small cleanups


I believe 11471 and above are ready for heavy-duty testing :-).

Cheers,

    K.B.
--
Karim Belabas, IMB (UMR 5251)  Tel: (+33) (0)5 40 00 26 17
Universite Bordeaux 1          Fax: (+33) (0)5 40 00 69 50
351, cours de la Liberation    http://www.math.u-bordeaux.fr/~belabas/
F-33405 Talence (France)       http://pari.math.u-bordeaux.fr/  [PARI/GP]
`