Hyperelliptic curves over a finite field

EXAMPLES:

sage: K.<a> = GF(9, 'a')
sage: x = polygen(K)
sage: C = HyperellipticCurve(x^7 - x^5 - 2, x^2 + a)
sage: C._points_fast_sqrt()
[(0 : 1 : 0), (2*a : 2*a + 2 : 1), (2*a : 2*a : 1), (a + 1 : a : 1), (a + 1 : a + 1 : 1), (2 : a + 1 : 1), (1 : a + 1 : 1)]
class sage.schemes.hyperelliptic_curves.hyperelliptic_finite_field.HyperellipticCurve_finite_field(PP, f, h=None, names=None, genus=None)

Bases: sage.schemes.hyperelliptic_curves.hyperelliptic_generic.HyperellipticCurve_generic

Cartier_matrix()

INPUT:

  • E : Hyperelliptic Curve of the form y^2 = f(x) over a finite field, \mathbb{F}_q

OUTPUT:

  • M: The matrix M = (c_{pi-j}), where c_i are the coeffients of f(x)^{(p-1)/2} = \sum c_i x^i

Reference-N. Yui. On the Jacobian varieties of hyperelliptic curves over fields of characteristic p > 2.

EXAMPLES:

sage: K.<x>=GF(9,'x')[]
sage: C=HyperellipticCurve(x^7-1,0)
sage: C.Cartier_matrix()
[0 0 2]                                                               
[0 0 0]                                                               
[0 1 0]
            
sage: K.<x>=GF(49,'x')[]
sage: C=HyperellipticCurve(x^5+1,0)
sage: C.Cartier_matrix()
[0 3]                                                     
[0 0]            

sage: P.<x>=GF(9,'a')[]
sage: E=HyperellipticCurve(x^29+1,0)
sage: E.Cartier_matrix()
[0 0 1 0 0 0 0 0 0 0 0 0 0 0]                                                                                                                                
[0 0 0 0 0 1 0 0 0 0 0 0 0 0]                                                                                                                                
[0 0 0 0 0 0 0 0 1 0 0 0 0 0]                                                                                                                                
[0 0 0 0 0 0 0 0 0 0 0 1 0 0]                                                                                                                                
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]                                                                                                                                
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]                                                                                                                                
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]                                                                                                                                
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]                                                                                                                                
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]                                                                                                                                
[1 0 0 0 0 0 0 0 0 0 0 0 0 0]                                                                                                                                
[0 0 0 1 0 0 0 0 0 0 0 0 0 0]                                                                                                                                
[0 0 0 0 0 0 1 0 0 0 0 0 0 0]                                                                                                                                
[0 0 0 0 0 0 0 0 0 1 0 0 0 0]                                                                                                                                
[0 0 0 0 0 0 0 0 0 0 0 0 1 0]

TESTS:

sage: K.<x>=GF(2,'x')[]
sage: C=HyperellipticCurve(x^7-1,0)
sage: C.Cartier_matrix()
...    
ValueError: p must be odd


sage: K.<x>=GF(5,'x')[]
sage: C=HyperellipticCurve(x^7-1,2)
sage: C.Cartier_matrix()
... 
ValueError: E must be of the form y^2 = f(x)


sage: K.<x>=GF(5,'x')[]
sage: C=HyperellipticCurve(x^8-1,0)
sage: C.Cartier_matrix()
... 
ValueError: In this implementation the degree of f must be odd


sage: K.<x>=GF(5,'x')[]
sage: C=HyperellipticCurve(x^5+1,0)
sage: C.Cartier_matrix()
... 
ValueError: so curve is not smooth
Hasse_Witt()

INPUT:

  • E : Hyperelliptic Curve of the form y^2 = f(x) over a finite field, \mathbb{F}_q

OUTPUT:

  • N : The matrix N = M M^p \dots M^{p^{g-1}} where M = c_{pi-j}, and f(x)^{(p-1)/2} = \sum c_i x^i

Reference-N. Yui. On the Jacobian varieties of hyperelliptic curves over fields of characteristic p > 2.

EXAMPLES:

sage: K.<x>=GF(9,'x')[]
sage: C=HyperellipticCurve(x^7-1,0)
sage: C.Hasse_Witt()
[0 0 0]
[0 0 0]
[0 0 0]

sage: K.<x>=GF(49,'x')[]
sage: C=HyperellipticCurve(x^5+1,0)
sage: C.Hasse_Witt()
[0 0]
[0 0]

sage: P.<x>=GF(9,'a')[]
sage: E=HyperellipticCurve(x^29+1,0)
sage: E.Hasse_Witt()
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]
a_number()

INPUT:

  • E: Hyperelliptic Curve of the form y^2 = f(x) over a finite field, \mathbb{F}_q

OUTPUT:

  • a : a-number

EXAMPLES:

sage: K.<x>=GF(49,'x')[]
sage: C=HyperellipticCurve(x^5+1,0)
sage: C.a_number()
1

sage: K.<x>=GF(9,'x')[]
sage: C=HyperellipticCurve(x^7-1,0)
sage: C.a_number()
1

sage: P.<x>=GF(9,'a')[]
sage: E=HyperellipticCurve(x^29+1,0)
sage: E.a_number()
5
frobenius_polynomial()

Charpoly of frobenius, as an element of ZZ[x].

TESTS:

sage: R.<t> = PolynomialRing(GF(37))
sage: H = HyperellipticCurve(t^5 + t + 2)
sage: H.frobenius_polynomial()
x^4 + x^3 - 52*x^2 + 37*x + 1369

A quadratic twist:

sage: H = HyperellipticCurve(2*t^5 + 2*t + 4)
sage: H.frobenius_polynomial()
x^4 - x^3 - 52*x^2 - 37*x + 1369
p_rank()

INPUT:

  • E : Hyperelliptic Curve of the form y^2 = f(x) over a finite field, \mathbb{F}_q

OUTPUT:

  • pr :p-rank

EXAMPLES:

sage: K.<x>=GF(49,'x')[]
sage: C=HyperellipticCurve(x^5+1,0)
sage: C.p_rank()
0

sage: K.<x>=GF(9,'x')[]
sage: C=HyperellipticCurve(x^7-1,0)
sage: C.p_rank()
0

sage: P.<x>=GF(9,'a')[]
sage: E=HyperellipticCurve(x^29+1,0)
sage: E.p_rank()
0
points()

All the points on this hyperelliptic curve.

EXAMPLES:

sage: x = polygen(GF(7))
sage: C = HyperellipticCurve(x^7 - x^2 - 1)
sage: C.points()
[(0 : 1 : 0), (2 : 5 : 1), (2 : 2 : 1), (3 : 0 : 1), (4 : 6 : 1), (4 : 1 : 1), (5 : 0 : 1), (6 : 5 : 1), (6 : 2 : 1)]
sage: x = polygen(GF(121, 'a'))
sage: C = HyperellipticCurve(x^5 + x - 1, x^2 + 2)
sage: len(C.points())
122

Previous topic

Hyperelliptic curve constructor

Next topic

Hyperelliptic curves over a general ring

This Page