compute a normal form for elliptic or hyperelliptic curves
Weierstrassform(f, x, y, x0, y0, opt)
polynomial in x and y representing a (hyper)-elliptic curve
x, y, x0, y0
(optional) a sequence of options
A curve f is called elliptic if the genus is 1. An algebraic function field Cxy/f is isomorphic to the field Cx0y0/f0 where f0 is of the form y0^2 + square-free polynomial in x0 of degree 3 if and only if the curve is elliptic.
For a hyperelliptic curve with genus g there exists a similar normal form: f0=y02+ a squarefree polynomial in x0 of degree 2⁢g+1 or 2⁢g+2.
This procedure computes such normal form f0. It also gives an isomorphism from Cx0y0/f0 to Cxy/f by giving the images of x0 and y0. The inverse isomorphism will also be computed, unless the option `no inverse` is used.
The output is a list of 5 items:
The curve f0
The image of x0 under this isomorphism
The image of y0 under this isomorphism
The image of x under the inverse isomorphism
The image of y under the inverse isomorphism
For a description of the method in the elliptic case see M. van Hoeij, "An algorithm for computing the Weierstrass normal form", ISSAC'95 Proceedings, p. 90-95 (1995). For the hyperelliptic case, see: http://arXiv.org/abs/math.AG/0203130
The analogue of this procedure for curves of genus zero is parametrization.
A regular point x,y,z on the curve can be specified as a 6th argument. In some cases this can speed up the computation. In the genus 1 case the option Weierstrass results in a Weierstrass normal form, i.e. −4⁢x03−a⁢x0+y02−b.
If the curve is not elliptic (which can be verified by computing the genus) nor hyperelliptic (which can be verified with is_hyperelliptic then an error message will be given. If the curve is reducible, which can be checked with evala(AFactor(f)), then the normal form does not exist and Weierstrassform will fail.
Check if the image of x and y still satisfy the relation f in the field Cx0y0/f0
Check if the image of x0 and y0 still satisfy the relation f0 in the field Cxy/f
A curve with genus 2:
Download Help Document
What kind of issue would you like to report? (Optional)