#8820: elliptic_exponential broken for curves over number fields
----------------------------------------------+-----------------------------
   Reporter:  robertwb                        |       Owner:  cremona   
       Type:  enhancement                     |      Status:  needs_work
   Priority:  major                           |   Milestone:  sage-4.6  
  Component:  elliptic curves                 |    Keywords:            
     Author:  John Cremona                    |    Upstream:  N/A       
   Reviewer:  Chris Wuthrich, Jeroen Demeyer  |      Merged:            
Work_issues:                                  |  
----------------------------------------------+-----------------------------
Changes (by jdemeyer):

  * status:  needs_review => needs_work


Comment:

 A few comments:

  * I think the help for {{{elliptic_exponential}}} (lines 1379--1385) is
 not so well written.  I would write something like
 {{{
 OUTPUT:

 - If ``to_curve`` is False, a 2-tuple of real or complex numbers
 representing the point `(x,y) = (\wp(z),\wp'(z))` where `\wp` denotes the
 Weierstrass
 `\wp`-function with respect to this lattice.

 - If ``to_curve`` is True, the point `(x-b_2/12,y-(a_1(x-b_2/12)-a_3)/2)`
 as a point in `E(\RR)` or `E(\CC)`, with `(x,y) = (\wp(z),\wp'(z))` as
 above.

 If the lattice is real...
 }}}

  * The comment
 {{{
        # the next lines compute [P(w), P'(w)] when flag=1
        # or [x:y:1] in E(C) when flag=2
 }}}
  seems to refer to old code.

  * Is there a good reason to distinguish between QQ and general number
 fields?  The number-field code seems simpler, so you could consider
 removing the special-case code for QQ.

  * lines 1503 and 1530: {{{C(t.real().python(),t.imag().python())}}} can
 be simplified as {{{C(t)}}}.

  * it doesn't work for the point at infinity (and there should be a
 doctest for that case anyway):
 {{{
 sage: E = EllipticCurve([1,1,1,-8,6])
 sage: L = E.period_lattice()
 sage: L.elliptic_exponential(0)
 ---------------------------------------------------------------------------
 UnboundLocalError                         Traceback (most recent call
 last)

 /usr/local/src/pari/src/<ipython console> in <module>()

 /usr/local/src/sage-4.6.alpha1/local/lib/python2.6/site-
 packages/sage/schemes/elliptic_curves/period_lattice.pyc in
 elliptic_exponential(self, z, to_curve)
    1476         if self.coordinates(z) == self.coordinates(z,
 rounding='round'):
    1477             if to_curve:
 -> 1478                 return E.change_ring(C)(0)
    1479             return (C('+infinity'),C('+infinity'))
    1480

 UnboundLocalError: local variable 'E' referenced before assignment
 }}}

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/8820#comment:22>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to