Opened 11 years ago

Closed 11 years ago

Last modified 10 years ago

#11220 closed enhancement (fixed)

implement listing j-invariants of CM curves over other fields and fix incorrect remark in the documentation

Reported by: was Owned by: cremona
Priority: minor Milestone: sage-4.7.1
Component: elliptic curves Keywords:
Cc: kohel Merged in: sage-4.7.1.alpha2
Authors: John Cremona, Robert Bradshaw, William Stein Reviewers: Robert Bradshaw, John Cremona
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Status badges

Description (last modified by jdemeyer)

This email thread says it all:

Hi David,

Do you have a list of the CM j-invariants over Q(sqrt(5))?

http://www.sagemath.org/doc/reference/sage/schemes/elliptic_curves/cm.html

 -- William

Hi William,

I don't understand the comment (attribution to me) in the doc file.
I think it is a typo -- replace "field" with "functions" [on modular
curves of higher level].  In order to solve the problem (as a
precomputation) over an extension field F, it suffices to factor
the Hilbert class polynomials.  In this case the class number can
be up to 2 (degree [F:Q]).  The attached Magma and Sage code output
these values for F = Q(sqrt(5)).

Cheers,

David

I've attached his files to this ticket.

Apply trac_11220-apply_only_this.patch

Attachments (5)

class.sage (347 bytes) - added by was 11 years ago.
class.mg (289 bytes) - added by was 11 years ago.
trac_11220-CM.patch (7.1 KB) - added by cremona 11 years ago.
Applies to 4.7.alpha5
11220-fix.patch (8.6 KB) - added by robertwb 11 years ago.
apply on top of previous
trac_11220-apply_only_this.patch (8.7 KB) - added by was 11 years ago.
apply only this patch -- adds more documentation.

Download all attachments as: .zip

Change History (18)

Changed 11 years ago by was

Changed 11 years ago by was

comment:1 Changed 11 years ago by cremona

The imaginary quadratic orders of class number 2 are the maximal orders in Q(sqrt(-d)) for d in [-5,-6,-10,-13,-15,-22,-35,-37,-51,-58,-91,-115,-123,-187,-235,-267,-403,-427] and the order of index 2 in Q(sqrt(-15)). [Reference: many places including J E Cremona, Abelian Varieties with Extra Twist, Cusp Forms, and Elliptic Curves Over Imaginary Quadratic Fields, Journal of the London Mathematical Society 45 (1992) 402-416.]

Using this list it's easy to write a function for the case of any quadratic field. [For Q(sqrt(5)) itself it is easy to see that the discriminant must have the form 5*D where D is a negative prime discriminant; this gives the same list output as David's script.]

For higher degree one could start with Mark Watkins' determination of all i.q.fields with h<=100 [See http://www.ams.org/journals/mcom/2004-73-246/S0025-5718-03-01517-5/S0025-5718-03-01517-5.pdf.] The number of fields can be as large as 3283 (for h=96) but the table there gives the maximal discriminant in each case --e.g.427 for h=2 -- so a script like David's is probably the way to go. That table only deals with maximal orders. There's still the question of non-maximal orders: I'll ask Mark if he knows if that has been done (it's just an exercise, but a lengthy one.)

comment:2 Changed 11 years ago by cremona

  • Authors set to John Cremona
  • Cc kohel added
  • Description modified (diff)
  • Milestone changed from sage-4.7 to sage-4.7.1

I have done the implementation for quadratic fields.

Changed 11 years ago by cremona

Applies to 4.7.alpha5

comment:3 Changed 11 years ago by cremona

  • Description modified (diff)
  • Status changed from new to needs_review

comment:4 Changed 11 years ago by robertwb

  • Status changed from needs_review to needs_info

The implementation of cm_j_invariants_and_orders looks wrong to me--you seem to be listing/zipping every D rather than only the ones corresponding to the j's found when the Hilbert polynomial is reducible.

As a side note there seems to be a lot of duplication between the two functions--given that cm_j_invariants_and_orders is just about a cheap, I'd just invoke that and strip off the part you want for cm_j_invariants. Also, I think the code might be cleaner if you make an inner function d -> (D, f, j) and then do [func(d) for d in dlist] (or the concatenation, if there are 0-2 results for every d) rather than expressing things as a series of list comprehensions with adjustments here and there.

comment:5 Changed 11 years ago by robertwb

  • Status changed from needs_info to needs_review

comment:6 Changed 11 years ago by robertwb

  • Status changed from needs_review to needs_work

comment:7 Changed 11 years ago by cremona

All good comments, and anything which makes it easier to add new degrees would be worth doing too. No time to work on this just now though...

comment:8 Changed 11 years ago by robertwb

  • Status changed from needs_work to needs_review

Changed 11 years ago by robertwb

apply on top of previous

Changed 11 years ago by was

apply only this patch -- adds more documentation.

comment:9 Changed 11 years ago by was

  • Status changed from needs_review to positive_review

I read the patches and I think this is now good. When reading, I missed Cremona's comment on this ticket, which made it harder to read the code, so I added his argument as a comment in the code. Otherwise, I changed nothing, except flattening the patches and making the authors both John and Robert.

Positive review (imho).

comment:10 Changed 11 years ago by cremona

  • Authors changed from John Cremona to John Cremona, Robert Bradshaw
  • Reviewers set to Robert Bradshaw, William Stein

I like the new version -- thanks for improving (and correcting) my first version, Robert!

comment:11 Changed 11 years ago by jdemeyer

  • Authors changed from John Cremona, Robert Bradshaw to John Cremona, Robert Bradshaw, William Stein
  • Description modified (diff)
  • Reviewers changed from Robert Bradshaw, William Stein to Robert Bradshaw, John Cremona

comment:12 Changed 11 years ago by jdemeyer

  • Merged in set to sage-4.7.1.alpha2
  • Resolution set to fixed
  • Status changed from positive_review to closed

comment:13 Changed 10 years ago by cremona

See #12356 for a very important bug fix!

Note: See TracTickets for help on using tickets.