Opened 7 years ago

Closed 7 years ago

#1237 closed defect (fixed)

[with patch, positive review] E.torsion_order() fails on curves with big coefficients !!

Reported by: was Owned by: roed
Priority: major Milestone: sage-2.9
Component: number theory Keywords:
Cc: Merged in:
Authors: Reviewers:
Report Upstream: Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description

On Nov 20, 2007 1:40 PM, Paul Zimmermann wrote:

William,

sage told me to report you, thus I do:

[... see below]

For the particular curve you're considering mwrank (via sage's rank command)
can compute the rank -- which is what you want -- in 0.5 seconds, so maybe
you can use .rank() instead?

{{{id=24|
e = EllipticCurve?([0, 33076156654533652066609946884, 0,
347897536144342179642120321790729023127716119338758604800,
114112815436927429551902303280680424778815462104985764887003237028585178\
1352816640000])
}}}

{{{id=27|
time e.rank()
/
1
CPU time: 0.00 s, Wall time: 0.46 s
}}}

That said, the fact that e.torsion_order() fails is certainly a bug:

{{{id=29|
e.torsion_order()
/
Traceback (most recent call last):

File "<stdin>", line 1, in <module>
File "/Users/was/sage_notebook/worksheets/admin/23/code/91.py", line 4, in <module>

...

self.torsion_subgroup = rational_torsion.EllipticCurveTorsionSubgroup?(self, flag)

File "/Users/was/s/local/lib/python2.5/site-packages/sage/schemes/elliptic_curves/rational_torsion.py", line 56, in init

self.E.pari_double_prec()

AttributeError?: 'EllipticCurve_rational_field' object has no attribute '_EllipticCurveTorsionSubgrouppari_double_prec'
}}}

> sage: d = 919681/88529281
> sage: _ = magma.eval('K := Rationals()')
> sage: _ = magma.eval('P<x,y,z>:=ProjectiveSpace(K,2)')
> sage: def rank(d):
> ....:        s='f := (x^2+y^2)*z^2-z^4-('
> ....:    s=''.join([s, repr(d), ')*x^2*y^2;'])
> ....:    magma.eval(s)
> ....:    magma.eval('C:=Curve(P,f);')
> ....:    E = magma('EllipticCurve(C,C![0,1,1])')
> ....:    l = E.aInvariants()
> ....:    EE = EllipticCurve(map(Integer,l))
> ....:    return EE.simon_two_descent()[0]
> ....:
> sage: rank(d)
> ---------------------------------------------------------------------------
> <type 'exceptions.AttributeError'>        Traceback (most recent call last)
> 
> /home/zimmerma/<ipython console> in <module>()
> 
> /home/zimmerma/<ipython console> in rank(d)
> 
> /usr/local/sage-2.8.12/sage/local/lib/python2.5/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py in simon_two_descent(self, verbose, lim1, lim3, limtriv, maxprob, limbigprime)
>     858             (8, 8)
>     859         """
> --> 860         if self.torsion_order() % 2 == 0:
>     861             raise ArithmeticError, "curve must not have rational 2-torsion\nThe *only* reason for this is that I haven't finished implementing the wrapper\nin this case.  It wouldn't be too difficult.\nPerhaps you could do it?!  Email me (wstein@gmail.com)."
>     862         F = self.integral_weierstrass_model()
> 
> /usr/local/sage-2.8.12/sage/local/lib/python2.5/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py in torsion_order(self)
>    1743             return self.__torsion_order
>    1744         except AttributeError:
> -> 1745             self.__torsion_order = self.torsion_subgroup().order()
>    1746             return self.__torsion_order
>    1747
> 
> /usr/local/sage-2.8.12/sage/local/lib/python2.5/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py in torsion_subgroup(self, flag)
>    1781             return self.__torsion_subgroup
>    1782         except AttributeError:
> -> 1783             self.__torsion_subgroup = rational_torsion.EllipticCurveTorsionSubgroup(self, flag)
>    1784             return self.__torsion_subgroup
>    1785
> 
> /usr/local/sage-2.8.12/sage/local/lib/python2.5/site-packages/sage/schemes/elliptic_curves/rational_torsion.py in __init__(self, E, flag)
>      54                 G = self.__E.pari_curve().elltors(flag)
>      55             except RuntimeError:
> ---> 56                 self.__E.__pari_double_prec()
>      57         if G is None:
>      58             raise RuntimeError, "Could not compute torsion subgroup"
> 
> <type 'exceptions.AttributeError'>: 'EllipticCurve_rational_field' object has no attribute '_EllipticCurveTorsionSubgroup__pari_double_prec'
> 
> Paul
> 

--
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

Attachments (2)

trac1237.patch (5.2 KB) - added by roed 7 years ago.
Fix
trac-1237-part2.patch (3.2 KB) - added by was 7 years ago.
this touches up a bunch of the docs.

Download all attachments as: .zip

Change History (6)

Changed 7 years ago by roed

Fix

comment:1 Changed 7 years ago by roed

  • Owner changed from was to roed
  • Status changed from new to assigned
  • Summary changed from E.torsion_order() fails on curves with big coefficients !! to [with patch] E.torsion_order() fails on curves with big coefficients !!

comment:2 Changed 7 years ago by mabshoff

  • Milestone changed from sage-2.9 to sage-2.8.15

Changed 7 years ago by was

this touches up a bunch of the docs.

comment:3 Changed 7 years ago by was

  • Summary changed from [with patch] E.torsion_order() fails on curves with big coefficients !! to [with patch, positive review] E.torsion_order() fails on curves with big coefficients !!

I give this a positive review.

comment:4 Changed 7 years ago by mabshoff

  • Resolution set to fixed
  • Status changed from assigned to closed

Merged in 2.9.rc0.

Note: See TracTickets for help on using tickets.