Saturday, November 8, 2008

Dokchitser's Algorithm for Computing L-functions

On the trip Thursday from Seattle to Austin, I read Tim Dokchiter's paper "Computing special values of motivic L-functions". This is Tim's oldest paper listed here, and some of his other papers build on it. It describes a very general algorithm for computing "anything" numerical about motivic L-series, which are Dirichlet series with meromorphic continuation, functional equation, etc. We are implemented this algorithm in Sage right now, since it's potentially very important to many things I care about:

  1. Birch and Swinnerton-Dyer, Bloch-Kato, Stark Conjectures
  2. Heegner heights: Gross-Zagier + Zhang; computation of twisted L-series by characters of class groups, and also computing Rankin-Selberg convolutions.
  3. Computing conductors of curves, local factors at primes of bad reduction
  4. Computing the Petersson pairing by computing special values of symmetric square L-functions; get explicit Poincares series from this. Also, the related problem of
    computing modular degrees of modular abelian varieties and modular motives analytically.

Dokchitser's algorithm is already implemented (by him) in GP/PARI and Magma, but a highly optimized implementation done directly in Sage would be extremely desirable. Nick Alexander, Jen Balakrishnan, and Sourev San Gupta have all worked on this but their implementation is still rough and has bit rotted. We already use the GP/PARI version in Sage a lot, but the main motivation for doing a new implementation is that it will be more flexible wrt the above problems, and we can potentially optimize it.

Speaking of speed, I tested Pari versus Magma's Dokchitser implementation for the elliptic curve [1,2,3,4,5], and Pari was 2 to 6 times faster on everything I tried for that L-series. Somebody conjectured this might be that Dokchitser knows pari better than Magma, or that Pari has more relevant low level data structures that he could use.

Today I gave a talk on Dokchitser's algorithm, focused on explaining the key "theoretical" ideas of the algorithm, without getting bogged down in details. In my talk, I discussed the applications of Dokchitser's algorithm, then wrote down his formula for L^*(s) in terms of G_s(t) and the a_n, and emphasized that the G_s(t) depend only on the gamma factor. Then I said some words about how to compute G_s(t), and finally I gave almost all the gory details of derivation for the formula for L^*(s) in terms of G_s(t) and a_n. I was surprised to end up giving all the details. Mike Rubinstein and Fernando Rodriguez-Villegas both made a lot of helpful comments during they talk.

1 comment:

pbsl said...
This comment has been removed by a blog administrator.