Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemath
GitHub Repository: sagemath/sagelib
Path: blob/master/sage/schemes/hyperelliptic_curves/hyperelliptic_rational_field.py
4145 views
1
"""
2
Hyperelliptic curves over the rationals
3
"""
4
5
#*****************************************************************************
6
# Copyright (C) 2006 David Kohel <[email protected]>
7
# Distributed under the terms of the GNU General Public License (GPL)
8
# http://www.gnu.org/licenses/
9
#*****************************************************************************
10
11
import hyperelliptic_generic
12
from sage.rings.all import is_pAdicField, is_pAdicRing, pAdicField
13
14
class HyperellipticCurve_rational_field(hyperelliptic_generic.HyperellipticCurve_generic):
15
16
def matrix_of_frobenius(self, p, prec=20):
17
18
# BUG: should get this method from HyperellipticCurve_generic
19
def my_chage_ring(self, R):
20
from constructor import HyperellipticCurve
21
f, h = self._hyperelliptic_polynomials
22
y = self._printing_ring.gen()
23
x = self._printing_ring.base_ring().gen()
24
return HyperellipticCurve(f.change_ring(R), h, "%s,%s"%(x,y))
25
26
import sage.schemes.elliptic_curves.monsky_washnitzer as monsky_washnitzer
27
if is_pAdicField(p) or is_pAdicRing(p):
28
K = p
29
else:
30
K = pAdicField(p, prec)
31
frob_p, forms = monsky_washnitzer.matrix_of_frobenius_hyperelliptic(my_chage_ring(self, K))
32
return frob_p
33
34
35