The problem is to construct a curve of genus 2 from a given set of Igusa--Clebsch invariants. To construct such a curve we use an algorithm due to Mestre [Mes91] and implemented by P. Gaudry.
The resulting curve's equation can be huge. To reduce it we implemented an algorithm proposed by P. Van Wamelen in [Wam99] and [Wam01]. While this algorithm works (ie. the resulting curve is `small') most of the time, there are instances where very little reduction is achieved. But so far, this is the best we can do.
Construct a hyperelliptic curve of genus 2 from a set of Igusa-Clebsch invariants (see Subsection Igusa Invariants).
Given a curve C of genus 2, attempt to find an isomorphic curve C' such that its coefficients are much smaller than those of C. The algorithm used is due to Van Wamelen [Wam99].
Set the verbose printing level for the curve-reduction algorithm. Currently the legal values for v are true, false, 0, 1, 2 or 3 (false is the same as 0, and true is the same as 1).
> ICInv := [ -549600, 8357701824, -1392544870972992, > -3126674637319431000064 ]; > time NC := HyperellipticCurveFromIgusa(ICInv); a point on the conic is given by -6482228378246214658367268283712373600667908099616174719879\ 094839597076141357421875/1363791104410093031413327266775768\ 84608685729566758228638696307375685615340204945788400368647\ 7312, 10188009335968531191794821132584413878133549529657888\ 8800450113779781952464580535888671875/107297694738676628355\ 43372267236986876862256732919126043768293539723478848063808\ 8198395325811565610468983296 Compute the gb Compute the resultant Time: 61.920 > time NNC := ReduceCurve(NC); Time: 148.389 > _, g := DefiningPolynomials(NNC); > g; 23*x^6 - 52*x^5 + 55*x^4 - 40*x^3 + 161*x^2 - 92*x + 409