# Ticket #1237(closed defect: fixed)

Opened 6 years ago

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

Reported by: Owned by: was roed major sage-2.9 number theory

### 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=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

## Change History

Fix

### comment:1 Changed 6 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 5 years ago by mabshoff

• Milestone changed from sage-2.9 to sage-2.8.15

### Changed 5 years ago by was

this touches up a bunch of the docs.

### comment:3 Changed 5 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 5 years ago by mabshoff

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

Merged in 2.9.rc0.

Note: See TracTickets for help on using tickets.