cjdoris / Genus2Conductor

A package for computing the conductor exponent of hyperelliptic curves of genus 2 defined over number fields.
https://cjdoris.github.io/Genus2Conductor
GNU General Public License v3.0
2 stars 0 forks source link

Runtime error due to precision bug #5

Open aghitza opened 3 years ago

aghitza commented 3 years ago
R<x> := PolynomialRing(Rationals()); C := HyperellipticCurve(R![11, 64, 80, 40, 0, 4, 1], R![]);
Conductor_Genus2(C);

returns the following:

    Conductor_Genus2(
        C: Hyperelliptic Curve defined by y^2 = x^6 + 4*x^5 + 40*x^3 + ...
    )
    EvenConductorExponent_Genus2(
        C: Hyperelliptic Curve defined by y^2 = x^6 + 4*x^5 + 40*x^3 + ...
    )
    evencondexp(
        C: Hyperelliptic Curve defined by y^2 = x^6 + 4*x^5 + 40*x^3 + ...,
        p: 2
    )
    evencondexpdata(
        C: Hyperelliptic Curve defined by y^2 = x^6 + 4*x^5 + 40*x^3 + ...,
        p: 2
    )
    find_3torsion(
        f: 4*x^6 + 16*x^5 + 160*x^3 + 320*x^2 + 256*x + 44,
        p: Ideal of Integer Ring generated by 2
    )
    go(
        r: rec<recformat<success, err, seed, moebius, groebner_basis, K...
    )
    factorization(
        f: (1 + O(2))*$.1^40 + (2^6 + O(2^7))*$.1^39 + (2^5 + O(2^6))*$...
    )
    Factorization(
        f: (1 + O(2))*$.1^40 + (2^6 + O(2^7))*$.1^39 + (2^5 + O(2^6))*$...
    )
    ExactpAdics_Factorization(
        f: (1 + O(2))*$.1^40 + (2^6 + O(2^7))*$.1^39 + (2^5 + O(2^6))*$...
    )
    factorize(
        st: rec<recformat<xpol_state, xpol_get, xpols, brs_todo, brs_don...
    )
    In file "/home/ghitza/ExactpAdics2/common/Factorization_new.mag", line 850,
    column 11:
    >>           assert x0 eq br`width;
                 ^
    Runtime error in assert: Assertion failed
cjdoris commented 3 years ago

Thanks, this is a difficult-to-avoid precision error in Magma's p-adics.

A work-around is to do Conductor_Genus2(C : MobiusRandomize:=1) instead, which solves a different formulation of the same problem. (If that doesn't work, keep incrementing MobiusRandomize by 1 until it works.)