Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

elliptic curves -- implement gross-Zagier L-functions #4606

Closed
robertwb opened this issue Nov 24, 2008 · 73 comments
Closed

elliptic curves -- implement gross-Zagier L-functions #4606

robertwb opened this issue Nov 24, 2008 · 73 comments

Comments

@robertwb
Copy link
Contributor

Make it so one can do:

sage: e = EllipticCurve('37a')
sage: K.<a> = QuadraticField(-40)
sage: A = K.class_group().gen(0); A
Fractional ideal class (2, -1/2*a)
sage: L = e.lseries_gross_zagier(A)  
sage: L(1)
0.000000000000000
sage: L.taylor_series(1,5)
0.000000000000000 - 5.51899839494458*z + 13.6297841350649*z^2 - 16.2292417817675*z^3 + 7.94788823722712*z^4 + O(z^5)

nobody had seen this!

CC: @williamstein @craigcitro @categorie

Component: elliptic curves

Author: William Stein, Robert Bradshaw, Craig Citro

Branch/Commit: 1c7df55

Reviewer: Chris Wuthrich

Issue created by migration from https://trac.sagemath.org/ticket/4606

@robertwb
Copy link
Contributor Author

Attachment: 4606-gz-lseries.patch.gz

@robertwb
Copy link
Contributor Author

comment:1

Still going to add some doctests right now, but here's the code. Note, however, the check \sum_A L_A(E,s) = L(E/K,s) fails. :(

@robertwb
Copy link
Contributor Author

Attachment: 4606-gz-doctests.patch.gz

@craigcitro
Copy link
Member

Attachment: trac-4606-pt3.patch.gz

@craigcitro
Copy link
Member

comment:2

So I've attached a patch, which at least fixes a few issues. This patch fixes two definite bugs:

  • In E.lseries_gross_zagier(A), you were caching the value -- no matter what value of A was getting passed in! That was an easy fix. :) Unfortunately, after fixing that, there were still issues.

  • There was a subtle issue in I.quadratic_form(), for I an ideal in a quadratic number field. For instance, with just the first two patches above, taking K = QuadraticField(-40) and I the trivial element in the class group, the code returned x^2 + 40*y^2 for I.quadratic_form(). The underlying issue was one of choice of generators: you were using K.gen() where you really needed K.ring_of_integers().gen(), because you needed to know that something generated all of I over ZZ, not just QQ. I'm fairly certain that the current code is correct, but it's after 2AM, so someone should double check me.

So, now that those are fixed, we go back to the example Robert points out in the code:

sage: E = EllipticCurve('37a')
sage: K.<a> = QuadraticField(-40)
sage: A = K.class_group().gen(0)
sage: L = E.lseries_gross_zagier(A)
sage: LL = E.lseries_gross_zagier(A**2)
sage: L(2) + LL(2)
0.506799279512368

sage: E.lseries()(2) * E.quadratic_twist(-40).lseries()(2)
0.502803417587467

So we're now quite close. In particular, I wonder if there isn't rounding going on:

sage: E.lseries().taylor_series(2,5) * E.quadratic_twist(-40).lseries().taylor_series(2,5)
0.50 + 0.38*z - 0.16*z^2 + 0.0078*z^3 + 0.070*z^4 - 0.039*z^5 + O(z^6)

That definitely seems to suggest small precision to me. In any event, we're getting close:

sage: L.taylor_series(2,5) + LL.taylor_series(2,5)
0.506799279512368 + 0.360199571567893*z - 0.122141848388581*z^2 - 0.00635398874570253*z^3 + 0.0383995215484257*z^4 + O(z^5)

sage: L.taylor_series(2,5) + LL.taylor_series(2,5) - (E.lseries().taylor_series(2,5) * E.quadratic_twist(-40).lseries().taylor_series(2,5))
-0.016*z + 0.035*z^2 - 0.014*z^3 - 0.031*z^4 + O(z^5)

I'll cook up a few more examples and post what I find.

@robertwb
Copy link
Contributor Author

comment:3

Excellent. That's looking very good. I was very tired the day I was finishing that up, so I'm glad you caught these errors.

@sagetrac-mabshoff
Copy link
Mannequin

sagetrac-mabshoff mannequin commented Nov 28, 2008

comment:4

Replying to @robertwb:

Excellent. That's looking very good. I was very tired the day I was finishing that up, so I'm glad you caught these errors.

Should this ticker be "[with patch, needs review]" ?

Cheers,

Michael

@robertwb
Copy link
Contributor Author

comment:5

No, I don't think so yet (but if Craig is happy with it, then sure).

@loefflerd loefflerd mannequin assigned loefflerd and unassigned williamstein Jul 20, 2009
@loefflerd loefflerd mannequin removed their assignment Oct 9, 2009
@jdemeyer jdemeyer modified the milestones: sage-5.11, sage-5.12 Aug 13, 2013
@fchapoton
Copy link
Contributor

comment:9

for the patchbots:

apply only trac_4606_gross_zagier_lseries_rebased.patch

@fchapoton
Copy link
Contributor

Attachment: trac_4606_gross_zagier_lseries_rebased.patch.gz

folded all three patches and rebased on 5.12.beta5

@fchapoton
Copy link
Contributor

comment:10

apply trac_4606_gross_zagier_lseries_rebased.patch

@fchapoton
Copy link
Contributor

Branch: u/chapoton/4606

@fchapoton
Copy link
Contributor

Commit: a356ce0

@fchapoton
Copy link
Contributor

New commits:

a356ce0Gross-Zagier L-function attached to an elliptic curve

@sagetrac-vbraun-spam sagetrac-vbraun-spam mannequin removed this from the sage-6.1 milestone Jan 30, 2014
@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented May 17, 2015

Changed commit from 42ae892 to abe5e2c

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented May 17, 2015

Changed commit from abe5e2c to 0886afa

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented May 17, 2015

Branch pushed to git repo; I updated commit sha1. New commits:

0886afatrac #4606 more doc

@fchapoton
Copy link
Contributor

comment:47

Anybody interested, please give me feed back. It seems to work.

@fchapoton
Copy link
Contributor

comment:48

ping ?

@fchapoton fchapoton modified the milestones: sage-6.7, sage-6.8 Jun 26, 2015
@chriswuthrich
Copy link
Contributor

Changed branch from u/chapoton/4606 to u/wuthrich/ticket/4606

@chriswuthrich
Copy link
Contributor

Reviewer: Chris Wuthrich

@chriswuthrich
Copy link
Contributor

comment:49

... pong!

I added a little bit more to the documentation. Just pointing to the article is not enough.

I tested this (merged into 6.8.beta6) and all passed.


New commits:

ff129c9#4606: additional doc

@chriswuthrich
Copy link
Contributor

Changed commit from 0886afa to ff129c9

@chriswuthrich
Copy link
Contributor

Changed commit from ff129c9 to 0886afa

@chriswuthrich
Copy link
Contributor

comment:50

oops, sorry, something went wrong. I should be able fix that..

@chriswuthrich
Copy link
Contributor

Changed branch from u/wuthrich/ticket/4606 to u/chapoton/4606

@chriswuthrich
Copy link
Contributor

Changed branch from u/chapoton/4606 to u/wuthrich/ticket/4606_new

@chriswuthrich
Copy link
Contributor

comment:51

done and retested.


New commits:

1c7df55#4606: more doc

@chriswuthrich
Copy link
Contributor

Changed commit from 0886afa to 1c7df55

@chriswuthrich
Copy link
Contributor

comment:52

There is one thing, I should add here, although I am in favour of putting this into sage: It is unlikely that this code will be used much. I might be wrong.

@JohnCremona
Copy link
Member

comment:53

You may well be right, and the fact that nothing much happened to this code for 7 years tends to support that. But surely that does not matter -- far better that the code be here, properly documented and tested for the future, than that it should wither and die!

@vbraun
Copy link
Member

vbraun commented Jun 29, 2015

Changed branch from u/wuthrich/ticket/4606_new to 1c7df55

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants