Karim Belabas on Fri, 26 Oct 2012 09:48:49 +0200


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

Re: New ellinit interface


* Karim Belabas [2012-10-25 19:36]:
> * Henri.Cohen@math.u-bordeaux1.fr [2012-10-20 22:50]:
> > 
> > >A question: computing eta1,et2 is currently done via E_2 (and Legendre
> > >relation). Even for tau in the standard fundamental domain,
> > >computing E_2(tau)
> > >in terms of \sum_{n>0} n q^n / (1-q^n) is expensive, in O~(prec^2),
> > >assuming quasi-linear multiplication. Can one do better ?
> > 
> > Yes, I believe so, using the Weierstrass sigma function, which is also
> > a theta function: with
> > q=exp(2\pi i\tau) and u=exp(2\pi i z/\om_2) we have
> > 
> > sigma(z;L)=(\om_2/2\pi i)exp(\eta_2 z^2/(2\om_2))eta^{-3}(\tau)*
> > \sum_{n\in\Z}(kronecker(-4,n)q^{n^2/8}u^{n/2}
> > 
> > so by choosing any reasonable value of z (om_2/2 perhaps)
> > it should be faster.
> 
> Thanks for the suggestion. As I understood it, one must compute sigma(z)
> for two different values of z and take the quotient, resulting in an
> O~(prec^(3/2)) algorithm for \eta_2.
> 
> I chose to implement the simpler formula E2(tau) = - theta^(3)(q) / theta^(1)(q)
> [ where theta^(n)(q) denotes d/dz^n theta(q, z) | z = 0, for Jacobi sine theta
> function ].  This improves both elleta() and elleisnum(,2)

Btw, already the naive O~(prec^(3/2)) algorithm *does* improve things,
e.g, for elleta([1,I]):

Before:
\p10000   ->        1,740 ms
\p100000  -> 8min, 59,478 ms.
\p1000000 -> stopped after 10h

After:
\p10000   ->           52 ms
\p100000  ->        3,508 ms
\p1000000 -> 1min, 59,596 ms.

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-bordeaux1.fr/~belabas/
F-33405 Talence (France)       http://pari.math.u-bordeaux1.fr/  [PARI/GP]
`