Esempio n. 1
0
def modular_ratio_to_prec(chi, qexp, prec):
    r"""
    Given a q-expansion of a modular ratio up to sufficient precision to
    determine it uniquely, compute it to greater precision.

    EXAMPLES::

        sage: from sage.modular.modform.weight1 import modular_ratio_to_prec
        sage: R.<q> = QQ[[]]
        sage: modular_ratio_to_prec(DirichletGroup(31,QQ).0, q-q^2-q^5-q^7+q^8+O(q^9), 20)
        q - q^2 - q^5 - q^7 + q^8 + q^9 + q^10 + q^14 - q^16 - q^18 - q^19 + O(q^20)
    """
    if prec <= qexp.prec():
        return qexp.add_bigoh(prec)
    from sage.modular.modform.constructor import EisensteinForms, CuspForms
    C = CuspForms(chi.level(), 2, base_ring=qexp.base_ring())
    B = EisensteinForms(~chi, 1).gen(0).qexp(prec)
    qexp = qexp.add_bigoh(C.sturm_bound())
    fB = qexp * B
    fB_elt = C(fB, check=False)
    return fB_elt.qexp(prec) / B