Opened 11 years ago

Last modified 7 years ago

#9758 new enhancement

implement Watkins-Delaunay's algorithm for computing modular degrees in Sage

Reported by: was Owned by: was
Priority: major Milestone: sage-6.4
Component: number theory Keywords:
Cc: mpatel, robertwb, cremona Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Status badges


Relevant paper:

When this is done and of comparable speed to the current modular degree code in Sage, then Sympow can be moved from standard to optional (or worse) as a Sage spkg. Implementation options:

  • Build on top of the Dokchiter l-series code in Sage (via PARI)
  • Build something on Robert Bradshaw's soon-to-be-in-Sage re-implementation of Dokchitser: #9193

Change History (9)

comment:1 Changed 11 years ago by was

Kirkby said:

It would be good to state on the ticket what level of student project this is (undergrad, postgrad), and the skill set needed (C, Python etc). I expect you would prefer it in Python, though I think personally a C implementation like Mark's, which you can easily call from Python, would be more beneficial to the scientific community in general - not everyone is using Sage/Python?.

Good idea.

Level: graduate student or greater, with a background in number theory.

Skill set needed: read C, write Python, possibly Cython later for speed purposes.

C versus Python: the implementation can depend on absolutely anything in Sage; for this I'm not concerned about providing a general tool for the scientific community.

comment:2 Changed 11 years ago by mpatel

  • Cc mpatel added

comment:3 Changed 11 years ago by robertwb

  • Cc robertwb added

comment:4 Changed 11 years ago by drkirkby

  • Cc cremona added

I'm adding John Cremona to this, as I think this is his area of interest. If not, John can delete himself!

For anyone taking this project on, it may be useful to know that in the opinion of Mark Watkins, double-precsion maths is probably good enough for computing the modular degrees. That would no doubt make the code simpler and faster than using MPFR. See

Strange as it may seem, fixing the SYMPOW bug (#9703) was actually one of the more interesting changes I've made to Sage. It required reading the paper in the quad double package to understand how that was supposed to work, then reading the Intel manual on the 387 processor to sort out how to get the processor to work as required by quad double.


comment:5 Changed 9 years ago by cremona

Here's one case which can be used for testing (I have correspondence with Mark Watkins which explains the problem and how to fix it, and will open a new ticket for that):

sage: E = EllipticCurve([1,-1,0,-318360868065,-69208434591226115]) 
sage: E.modular_degree(algorithm='magma')                         


sage: E = EllipticCurve([1,-1,0,-318360868065,-69208434591226115]) 
sage: E.modular_degree()    
# boom

comment:6 Changed 8 years ago by jdemeyer

  • Milestone changed from sage-5.11 to sage-5.12

comment:7 Changed 7 years ago by vbraun_spam

  • Milestone changed from sage-6.1 to sage-6.2

comment:8 Changed 7 years ago by vbraun_spam

  • Milestone changed from sage-6.2 to sage-6.3

comment:9 Changed 7 years ago by vbraun_spam

  • Milestone changed from sage-6.3 to sage-6.4
Note: See TracTickets for help on using tickets.