The hyperelliptic curve is embedded in a weighted projective space, with weights 1, g + 1, and 1, respectively on x, y and z. Therefore point triples satisfy the equivalence relation (x : y : z) = (μ x : μg + 1 y : μ z), and the points at infinity are then normalized to take the form (1 : y : 0).
Returns the point on a hyperelliptic curve C specified by the coordinates (x, y, z). The elt constructor takes the pointset of a hyperelliptic curve as an argument. If z is not specified it is assumed to be 1.
Given a point P on a hyperelliptic curve C1, such that C is a base extension of C1, this returns the corresponding point on the hyperelliptic curve C. The curve C can be, e.g., the reduction of C1 to finite characteristic (i.e., base extension to a finite field) or the tautological coercion to itself.
The indexed set of all rational points on the hyperelliptic curve C that have the value x as their x-coordinate. (Rational points are those with coordinates in the coefficient ring of C). Note that points at infinity are considered to have ∞ as their x-coordinate.
The points at infinity for the hyperelliptic curve C returned as an indexed set of points.
The function returns true if and only if the sequence S specifies a point on the hyperelliptic curve C, and if so, returns this point as the second value.
We look at the point at infinity on y2=x5 + 1.
> P<x> := PolynomialRing(Rationals()); > C := HyperellipticCurve(x^5+1); > PointsAtInfinity(C); {@ (1 : 0 : 0) @}There is only one, and to see that this really is a point on C it must be remembered that in Magma, all hyperelliptic curves are considered to live in weighted projective spaces:
> Ambient(C); Projective Space of dimension 2 Variables : $.1, $.2, $.3 Gradings : 1 3 1In fact, the point is nonsingular on C, as we now check. (It's worth remembering that all the functionality for curves, for instance IsNonsingular, applies to hyperelliptic curves as a special case.)
> pointAtInfinity := C![1,0,0]; // Entering the point by hand. > IsNonsingular(pointAtInfinity); true
Given a hyperelliptic curve C defined over a finite field, this returns a point chosen at random on the curve. If the set of all points on C has already been computed, this gives a truly random point, otherwise the ramification points have a slight advantage.
Returns true if and only if the two points P and Q on the same hyperelliptic curve have the same coordinates.
Returns false if and only if the two points P and Q on the same hyperelliptic curve have the same coordinates.
The i-th coordinate of the point P, for 1≤i≤3.
Given a point P on a hyperelliptic curve, this returns a 3-element sequence consisting of the coordinates of the point P.
Given a point P on a hyperelliptic curve, this returns the image of P under the hyperelliptic involution.
The number of points at infinity on the hyperelliptic curve C.
The points at infinity for the hyperelliptic curve C returned as an indexed set of points.
Given a hyperelliptic curve C defined over a finite field, this returns the number of rational points on C.If the base field is small or there is no other good alternative, a naive point counting technique is used. However, if they are applicable, the faster p-adic methods described in the #J section are employed (which actually yield the full zeta function of C). As for #J, the verbose flag JacHypCnt can be used to output information about the computation.
Bound: RngIntElt Default:
NPrimes: RngIntElt Default: 30
DenominatorBound: RngIntElt Default: Bound
For a hyperelliptic curve C defined over a finite field, the function returns an indexed set of all rational points on C.For a curve C over Q of the form y2 = f(x) with integral coefficients, it returns the set of points such that the naive height of the x-coordinate is less than Bound.
For a curve C over a number field, it returns the set of points in a search region which is controlled by the parameters Bound (which must be specified) and DenominatorBound. The algorithm is a sieve method, described in Appendix A of [Bru02]. The parameter NPrimes controls the number of primes to be used for the sieve.
Returns true if and only if the points of the hyperelliptic curve C have been computed. This can especially be helpful when the curve is likely to have many points and when one does not wish to trigger the possibly expensive point computation.
> P<x> := PolynomialRing(Rationals()); > C := HyperellipticCurve(x^6+x^2+1); > Points(C : Bound := 1); {@ (1 : -1 : 0), (1 : 1 : 0), (0 : -1 : 1), (0 : 1 : 1) @} > Points(C : Bound := 2); {@ (1 : -1 : 0), (1 : 1 : 0), (0 : -1 : 1), (0 : 1 : 1), (-1 : -9 : 2), (-1 : 9 : 2), (1 : -9 : 2), (1 : 9 : 2) @} > Points(C : Bound := 4); {@ (1 : -1 : 0), (1 : 1 : 0), (0 : -1 : 1), (0 : 1 : 1), (-1 : -9 : 2), (-1 : 9 : 2), (1 : -9 : 2), (1 : 9 : 2) @}
Check: BoolElt Default: true
Applies the Frobenius x - > x(#F) to P. If Check is true, it verifies that the curve of which P is a point is defined over the finite field F.
Precision: RngIntElt Default: 10
Given a hyperelliptic curve over the rationals and a good prime p, this computes the matrix corresponding to the action of Frobenius to the indicated precision. The basis used is xe(dx/y) for 0≤e<d - 1, where the curve is given by y2=f(x) with f of degree d.