Пример #1
0
def genus1_lookup_equation_nf(rec):
    assert rec['g'] == 1
    # make base field
    nf_matches = list(db.nf_fields.search({'coeffs': rec['base_field']}))
    if len(nf_matches) == 0:
        return None
    else:
        nf_rec = nf_matches[0]
        # make curve
        f, h = curve_string_parser(rec)
        ainvs = hyperelliptic_polys_to_ainvs(f, h)
        E = EllipticCurve(ainvs)
        K = E.base_field()
        j = E.j_invariant()
        j_str = NFelt(j)
        j_matches = list(
            db.ec_nfcurves.search({
                "field_label": nf_rec['label'],
                "jinv": j_str
            }))
        for r in j_matches:
            ainvs2 = parse_ainvs(K, r['ainvs'])
            E2 = EllipticCurve(ainvs2)
            assert E.base_field() == E2.base_field()
            if E.is_isomorphic(E2):
                return r['label']
    #print("Curve not found in database")
    return None
Пример #2
0
def genus1_lookup_equation_QQ(rec):
    assert rec['g'] == 1
    f, h = curve_string_parser(rec)
    ainvs = hyperelliptic_polys_to_ainvs(f, h)
    E = EllipticCurve(ainvs)
    j = E.j_invariant()
    for r in db.ec_curves.search({"jinv": str(j)}):
        ainvs2 = r['ainvs']
        E2 = EllipticCurve(ainvs2)
        if E.is_isomorphic(E2):
            return r['lmfdb_label']
    #print("Curve not found in database")
    return None
Пример #3
0
def genus2_lookup_equation(rec):
    f, h = curve_string_parser(rec)
    return genus2_lookup_equation_polys(str([f, h]))