Jacobian in characteristic 3

23 views
Skip to first unread message

Gabriel Furstenheim Milerud

unread,
May 9, 2014, 7:16:59 AM5/9/14
to sage-s...@googlegroups.com
I'd like to create an elliptic curve from a degree 3 polynomial without a base point, but when I use the Jacobian method I get a "division by zero" error. 

This is my data:
A=GF(3^2,'c')
S.<a,b,c>=A[]
gS=a^3 - a^2*b + b^3 - a^2*c - a*b*c + b^2*c + a*c^2 + b*c^2 + c^3
Jacobian(gS)

My intuition is that Jacobian tries to compute a short Weierstrass polynomial and this is not necessarily possible in characteristic 3 (I didn't have any problem in characteristic 5). I also checked that the curve was smooth, so it is indeed genus 1

Is there any way to make it work?


This is the error I get:
 
"Traceback (most recent call last):
  File "sag.py", line 16, in <module>
    Jacobian(gS)
  File "/usr/lib/sagemath/local/lib/python2.7/site-packages/sage/schemes/elliptic_curves/jacobian.py", line 116, in Jacobian
    return Jacobian_of_equation(X, **kwds)
  File "/usr/lib/sagemath/local/lib/python2.7/site-packages/sage/schemes/elliptic_curves/jacobian.py", line 225, in Jacobian_of_equation
    f, g = WeierstrassForm(polynomial, variables=variables)
  File "/usr/lib/sagemath/local/lib/python2.7/site-packages/sage/schemes/toric/weierstrass.py", line 506, in WeierstrassForm
    return WeierstrassForm_P2(polynomial, variables)
  File "/usr/lib/sagemath/local/lib/python2.7/site-packages/sage/schemes/toric/weierstrass.py", line 771, in WeierstrassForm_P2
    S = cubic.S_invariant()
  File "/usr/lib/sagemath/local/lib/python2.7/site-packages/sage/rings/invariant_theory.py", line 1769, in S_invariant
    a,b,c,a2,a3,b1,b3,c1,c2,m = self.scaled_coeffs()
  File "/usr/lib/sagemath/local/lib/python2.7/site-packages/sage/rings/invariant_theory.py", line 1753, in scaled_coeffs
    1/F(3)*a[3], 1/F(3)*a[4], 1/F(3)*a[5],
  File "element.pyx", line 1813, in sage.structure.element.RingElement.__div__ (sage/structure/element.c:15219)
  File "coerce.pyx", line 783, in sage.structure.coerce.CoercionModel_cache_maps.bin_op (sage/structure/coerce.c:7325)
  File "element.pyx", line 1811, in sage.structure.element.RingElement.__div__ (sage/structure/element.c:15198)
  File "element_givaro.pyx", line 1201, in sage.rings.finite_rings.element_givaro.FiniteField_givaroElement._div_ (sage/rings/finite_rings/element_givaro.cpp:10695)"

John Cremona

unread,
May 9, 2014, 11:05:30 AM5/9/14
to SAGE support
It is quite likely that the implementation of Jacobian for plane cubics does not work in characteristic 3 (at least in general).  I had something to do with early implementations but then it was all rewritten in terms of Jacobians, so I cannot remember the details.  Perhaps Volker Braun can comment.  You yourself can look at the code which is run to see what you think -- and of course you are more than welcome to add code for char. 3.

John Cremona


--
You received this message because you are subscribed to the Google Groups "sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-support...@googlegroups.com.
To post to this group, send email to sage-s...@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.

Message has been deleted

Gabriel Furstenheim Milerud

unread,
May 12, 2014, 4:10:33 AM5/12/14
to sage-s...@googlegroups.com
I've read through the code and this is indeed the problem. It calls WeierstrassForm from schemes.toric which only implements the short version.

Fernando Rodriguez Villegas has some code available for Pari/GP http://www.ma.utexas.edu/users/villegas/cnt/cnt-frames.html in "jacobians" which works in any characteristic.

Volker Braun

unread,
May 12, 2014, 5:08:41 AM5/12/14
to sage-s...@googlegroups.com
Indeed I was (am) only interested in the case of char != 2,3. Its should be easy to add the missing cases, tough. 
Reply all
Reply to author
Forward
0 new messages