Introduction

This chapter contains descriptions of functions designed to perform calculations with hyperelliptic curves and their Jacobians. A hyperelliptic curve, which is taken to include the genus one case, is given by a nonsingular generalized Weierstrass equation

y2 + h(x) y = f(x),

where h(x) and f(x) are polynomials over a field K. The curve is viewed as embedded in a weighted projective space, with weights 1, g + 1, and 1, in which the points at infinity are nonsingular.

Functionality for hyperelliptic curves includes optimized algorithms for working on genus two curves over Q, including heights on the Jacobian, and a datatype for the Kummer surface of the Jacobian. For Jacobians of curves over finite fields, there exist specialized algorithms for computing the group structure of the set of rational points.

The category of hyperelliptic curves is CrvHyp and points on curves are of type PtHyp. Jacobians of hyperelliptic curves are of type JacHyp and points JacHypPt. Similarly, the Kummer surface of a genus two curve is of type SrfKum with points of type SrfKumPt.

The initial development of machinery for hyperelliptic curves was undertaken by Michael Stoll, supported by members of the Magma group.

V2.28, 13 July 2023