### Navigation

- index
- modules |
- next |
- previous |
- Modular Forms for Hecke Triangle Groups »

# Modular forms for Hecke triangle groups

AUTHORS:

- Jonas Jermann (2013): initial version

class `sage.modular.modform_hecketriangle.space.``CuspForms`(group, base_ring, k, ep, n)

  Bases: `sage.modular.modform_hecketriangle.abstract_space.FormsSpace_abstract`, `sage.modules.module.Module`, `sage.structure.unique_representation.UniqueRepresentation`

  Module of (Hecke) cusp forms for the given group, base ring, weight and multiplier

  `coordinate_vector`(v)

    Return the coordinate vector of `v` with respect to the basis `self.gens()`.

    INPUT:

    - `v` – An element of `self`.

    OUTPUT:

    An element of `self.module()`, namely the corresponding coordinate vector of `v` with respect to the basis `self.gens()`.

    The module is the free module over the coefficient ring of `self` with the dimension of `self`.

    EXAMPLES:

        sage: from sage.modular.modform_hecketriangle.space import CuspForms
        sage: MF = CuspForms(n=12, k=72/5, ep=-1)
        sage: MF.default_prec(4)
        sage: MF.dimension()
        2
        sage: el = MF(MF.f_i()*MF.Delta())
        sage: el
        q - 1/(288*d)*q^2 - 96605/(1327104*d^2)*q^3 + O(q^4)
        sage: vec = el.coordinate_vector()
        sage: vec
        (1, -1/(288*d))
        sage: vec.parent()
        Vector space of dimension 2 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring
        sage: vec.parent() == MF.module()
        True
        sage: el == vec[0]*MF.gen(0) + vec[1]*MF.gen(1)
        True
        sage: el == MF.element_from_coordinates(vec)
        True

        sage: MF = CuspForms(n=infinity, k=16)
        sage: el2 = MF(MF.Delta()*MF.E4())
        sage: vec2 = el2.coordinate_vector()
        sage: vec2
        (1, 5/(8*d), 187/(1024*d^2))
        sage: el2 == MF.element_from_coordinates(vec2)
        True

  `dimension`()

    Return the dimension of `self`.

    EXAMPLES:

        sage: from sage.modular.modform_hecketriangle.space import CuspForms
        sage: MF = CuspForms(n=12, k=72/5, ep=1)
        sage: MF.dimension()
        3
        sage: len(MF.gens()) == MF.dimension()
        True

        sage: CuspForms(n=infinity, k=8).dimension()
        1

  `gens`()

    Return a basis of `self` as a list of basis elements.

    EXAMPLES:

        sage: from sage.modular.modform_hecketriangle.space import CuspForms
        sage: MF=CuspForms(n=12, k=72/5, ep=1)
        sage: MF
        CuspForms(n=12, k=72/5, ep=1) over Integer Ring
        sage: MF.dimension()
        3
        sage: MF.gens()
        [q + 296888795/(10319560704*d^3)*q^4 + O(q^5),
         q^2 + 6629/(221184*d^2)*q^4 + O(q^5),
         q^3 - 25/(96*d)*q^4 + O(q^5)]

        sage: MF = CuspForms(n=infinity, k=8, ep=1)
        sage: MF.gen(0) == MF.E4()*MF.f_inf()
        True

class `sage.modular.modform_hecketriangle.space.``MeromorphicModularForms`(group, base_ring, k, ep, n)

  Bases: `sage.modular.modform_hecketriangle.abstract_space.FormsSpace_abstract`, `sage.modules.module.Module`, `sage.structure.unique_representation.UniqueRepresentation`

  Module of (Hecke) meromorphic modular forms for the given group, base ring, weight and multiplier

class `sage.modular.modform_hecketriangle.space.``ModularForms`(group, base_ring, k, ep, n)

  Bases: `sage.modular.modform_hecketriangle.abstract_space.FormsSpace_abstract`, `sage.modules.module.Module`, `sage.structure.unique_representation.UniqueRepresentation`

  Module of (Hecke) modular forms for the given group, base ring, weight and multiplier

  `coordinate_vector`(v)

    Return the coordinate vector of `v` with respect to the basis `self.gens()`.

    INPUT:

    - `v` – An element of `self`.

    OUTPUT:

    An element of `self.module()`, namely the corresponding coordinate vector of `v` with respect to the basis `self.gens()`.

    The module is the free module over the coefficient ring of `self` with the dimension of `self`.

    EXAMPLES:

        sage: from sage.modular.modform_hecketriangle.space import ModularForms
        sage: MF = ModularForms(n=6, k=20, ep=1)
        sage: MF.dimension()
        4
        sage: el = MF.E4()^2*MF.Delta()
        sage: el
        q + 78*q^2 + 2781*q^3 + 59812*q^4 + O(q^5)
        sage: vec = el.coordinate_vector()
        sage: vec
        (0, 1, 13/(18*d), 103/(432*d^2))
        sage: vec.parent()
        Vector space of dimension 4 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring
        sage: vec.parent() == MF.module()
        True
        sage: el == vec[0]*MF.gen(0) + vec[1]*MF.gen(1) + vec[2]*MF.gen(2) + vec[3]*MF.gen(3)
        True
        sage: el == MF.element_from_coordinates(vec)
        True

        sage: MF = ModularForms(n=infinity, k=8, ep=1)
        sage: (MF.E4()^2).coordinate_vector()
        (1, 1/(2*d), 15/(128*d^2))

  `dimension`()

    Return the dimension of `self`.

    EXAMPLES:

        sage: from sage.modular.modform_hecketriangle.space import ModularForms
        sage: MF = ModularForms(n=6, k=20, ep=1)
        sage: MF.dimension()
        4
        sage: len(MF.gens()) == MF.dimension()
        True

        sage: ModularForms(n=infinity, k=8).dimension()
        3

  `gens`()

    Return a basis of `self` as a list of basis elements.

    EXAMPLES:

        sage: from sage.modular.modform_hecketriangle.space import ModularForms
        sage: MF = ModularForms(n=6, k=20, ep=1)
        sage: MF.dimension()
        4
        sage: MF.gens()
        [1 + 360360*q^4 + O(q^5),
         q + 21742*q^4 + O(q^5),
         q^2 + 702*q^4 + O(q^5),
         q^3 - 6*q^4 + O(q^5)]

        sage: ModularForms(n=infinity, k=4).gens()
        [1 + 240*q^2 + 2160*q^4 + O(q^5), q - 8*q^2 + 28*q^3 - 64*q^4 + O(q^5)]

class `sage.modular.modform_hecketriangle.space.``QuasiCuspForms`(group, base_ring, k, ep, n)

  Bases: `sage.modular.modform_hecketriangle.abstract_space.FormsSpace_abstract`, `sage.modules.module.Module`, `sage.structure.unique_representation.UniqueRepresentation`

  Module of (Hecke) quasi cusp forms for the given group, base ring, weight and multiplier

  `coordinate_vector`(v)

    Return the coordinate vector of `v` with respect to the basis `self.gens()`.

    INPUT:

    - `v` – An element of `self`.

    OUTPUT:

    An element of `self.module()`, namely the corresponding coordinate vector of `v` with respect to the basis `self.gens()`.

    The module is the free module over the coefficient ring of `self` with the dimension of `self`.

    EXAMPLES:

        sage: from sage.modular.modform_hecketriangle.space import QuasiCuspForms
        sage: MF = QuasiCuspForms(n=6, k=20, ep=1)
        sage: MF.dimension()
        12
        sage: el = MF(MF.E4()^2*MF.Delta() + MF.E4()*MF.E2()^2*MF.Delta())
        sage: el
        2*q + 120*q^2 + 3402*q^3 + 61520*q^4 + O(q^5)
        sage: vec = el.coordinate_vector()    # long time
        sage: vec    # long time
        (1, 13/(18*d), 103/(432*d^2), 0, 0, 1, 1/(2*d), 0, 0, 0, 0, 0)
        sage: vec.parent()    # long time
        Vector space of dimension 12 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring
        sage: vec.parent() == MF.module()    # long time
        True
        sage: el == MF(sum([vec[l]*MF.gen(l) for l in range(0,12)]))    # long time
        True
        sage: el == MF.element_from_coordinates(vec)    # long time
        True
        sage: MF.gen(1).coordinate_vector() == vector([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])    # long time
        True

        sage: MF = QuasiCuspForms(n=infinity, k=10, ep=-1)
        sage: el2 = MF(MF.E4()*MF.f_inf()*(MF.f_i() - MF.E2()))
        sage: el2.coordinate_vector()
        (1, -1)
        sage: el2 == MF.element_from_coordinates(el2.coordinate_vector())
        True

  `dimension`()

    Return the dimension of `self`.

    EXAMPLES:

        sage: from sage.modular.modform_hecketriangle.space import QuasiCuspForms
        sage: MF = QuasiCuspForms(n=8, k=46/3, ep=-1)
        sage: MF.default_prec(3)
        sage: MF.dimension()
        7
        sage: len(MF.gens()) == MF.dimension()
        True

        sage: QuasiCuspForms(n=infinity, k=10, ep=-1).dimension()
        2

  `gens`()

    Return a basis of `self` as a list of basis elements.

    EXAMPLES:

        sage: from sage.modular.modform_hecketriangle.space import QuasiCuspForms
        sage: MF = QuasiCuspForms(n=8, k=46/3, ep=-1)
        sage: MF.default_prec(4)
        sage: MF.dimension()
        7
        sage: MF.gens()
        [q - 17535/(262144*d^2)*q^3 + O(q^4),
         q^2 - 47/(128*d)*q^3 + O(q^4),
         q - 9/(128*d)*q^2 + 15633/(262144*d^2)*q^3 + O(q^4),
         q^2 - 7/(128*d)*q^3 + O(q^4),
         q - 23/(64*d)*q^2 - 3103/(262144*d^2)*q^3 + O(q^4),
         q - 3/(64*d)*q^2 - 4863/(262144*d^2)*q^3 + O(q^4),
         q - 27/(64*d)*q^2 + 17217/(262144*d^2)*q^3 + O(q^4)]

        sage: MF = QuasiCuspForms(n=infinity, k=10, ep=-1)
        sage: MF.gens()
        [q - 16*q^2 - 156*q^3 - 256*q^4 + O(q^5), q - 60*q^3 - 256*q^4 + O(q^5)]

class `sage.modular.modform_hecketriangle.space.``QuasiMeromorphicModularForms`(group, base_ring, k, ep, n)

  Bases: `sage.modular.modform_hecketriangle.abstract_space.FormsSpace_abstract`, `sage.modules.module.Module`, `sage.structure.unique_representation.UniqueRepresentation`

  Module of (Hecke) quasi meromorphic modular forms for the given group, base ring, weight and multiplier

class `sage.modular.modform_hecketriangle.space.``QuasiModularForms`(group, base_ring, k, ep, n)

  Bases: `sage.modular.modform_hecketriangle.abstract_space.FormsSpace_abstract`, `sage.modules.module.Module`, `sage.structure.unique_representation.UniqueRepresentation`

  Module of (Hecke) quasi modular forms for the given group, base ring, weight and multiplier

  `coordinate_vector`(v)

    Return the coordinate vector of `v` with respect to the basis `self.gens()`.

    INPUT:

    - `v` – An element of `self`.

    OUTPUT:

    An element of `self.module()`, namely the corresponding coordinate vector of `v` with respect to the basis `self.gens()`.

    The module is the free module over the coefficient ring of `self` with the dimension of `self`.

    EXAMPLES:

        sage: from sage.modular.modform_hecketriangle.space import QuasiModularForms
        sage: MF = QuasiModularForms(n=6, k=20, ep=1)
        sage: MF.dimension()
        22
        sage: el = MF(MF.E4()^2*MF.E6()^2 + MF.E4()*MF.E2()^2*MF.Delta() + MF.E2()^3*MF.E4()^2*MF.E6())
        sage: el
        2 + 25*q - 2478*q^2 - 82731*q^3 - 448484*q^4 + O(q^5)
        sage: vec = el.coordinate_vector()    # long time
        sage: vec    # long time
        (1, 1/(9*d), -11/(81*d^2), -4499/(104976*d^3), 0, 0, 0, 0, 1, 1/(2*d), 1, 5/(18*d), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
        sage: vec.parent()    # long time
        Vector space of dimension 22 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring
        sage: vec.parent() == MF.module()    # long time
        True
        sage: el == MF(sum([vec[l]*MF.gen(l) for l in range(0,22)]))    # long time
        True
        sage: el == MF.element_from_coordinates(vec)    # long time
        True
        sage: MF.gen(1).coordinate_vector() == vector([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])    # long time
        True

        sage: MF = QuasiModularForms(n=infinity, k=4, ep=1)
        sage: el2 = MF.E4() + MF.E2()^2
        sage: el2
        2 + 160*q^2 + 512*q^3 + 1632*q^4 + O(q^5)
        sage: el2.coordinate_vector()
        (1, 1/(4*d), 0, 1)
        sage: el2 == MF.element_from_coordinates(el2.coordinate_vector())
        True

  `dimension`()

    Return the dimension of `self`.

    EXAMPLES:

        sage: from sage.modular.modform_hecketriangle.space import QuasiModularForms
        sage: MF = QuasiModularForms(n=5, k=6, ep=-1)
        sage: MF.dimension()
        3
        sage: len(MF.gens()) == MF.dimension()
        True

  `gens`()

    Return a basis of `self` as a list of basis elements.

    EXAMPLES:

        sage: from sage.modular.modform_hecketriangle.space import QuasiModularForms
        sage: MF = QuasiModularForms(n=5, k=6, ep=-1)
        sage: MF.default_prec(2)
        sage: MF.gens()
        [1 - 37/(200*d)*q + O(q^2),
         1 + 33/(200*d)*q + O(q^2),
         1 - 27/(200*d)*q + O(q^2)]

        sage: MF = QuasiModularForms(n=infinity, k=2, ep=-1)
        sage: MF.default_prec(2)
        sage: MF.gens()
        [1 - 24*q + O(q^2), 1 - 8*q + O(q^2)]

class `sage.modular.modform_hecketriangle.space.``QuasiWeakModularForms`(group, base_ring, k, ep, n)

  Bases: `sage.modular.modform_hecketriangle.abstract_space.FormsSpace_abstract`, `sage.modules.module.Module`, `sage.structure.unique_representation.UniqueRepresentation`

  Module of (Hecke) quasi weakly holomorphic modular forms for the given group, base ring, weight and multiplier

class `sage.modular.modform_hecketriangle.space.``WeakModularForms`(group, base_ring, k, ep, n)

  Bases: `sage.modular.modform_hecketriangle.abstract_space.FormsSpace_abstract`, `sage.modules.module.Module`, `sage.structure.unique_representation.UniqueRepresentation`

  Module of (Hecke) weakly holomorphic modular forms for the given group, base ring, weight and multiplier

class `sage.modular.modform_hecketriangle.space.``ZeroForm`(group, base_ring, k, ep, n)

  Bases: `sage.modular.modform_hecketriangle.abstract_space.FormsSpace_abstract`, `sage.modules.module.Module`, `sage.structure.unique_representation.UniqueRepresentation`

  Zero Module for the zero form for the given group, base ring weight and multiplier

  `coordinate_vector`(v)

    Return the coordinate vector of `v` with respect to the basis `self.gens()`.

    Since this is the zero module which only contains the zero form the trivial vector in the trivial module of dimension `0` is returned.

    INPUT:

    - `v` – An element of `self`, i.e. in this case the zero vector.

    EXAMPLES:

        sage: from sage.modular.modform_hecketriangle.space import ZeroForm
        sage: MF = ZeroForm(6, CC, 3, -1)
        sage: el = MF(0)
        sage: el
        O(q^5)
        sage: vec = el.coordinate_vector()
        sage: vec
        ()
        sage: vec.parent()
        Vector space of dimension 0 over Fraction Field of Univariate Polynomial Ring in d over Complex Field with 53 bits of precision
        sage: vec.parent() == MF.module()
        True

  `dimension`()

    Return the dimension of `self`. Since this is the zero module `0` is returned.

    EXAMPLES:

        sage: from sage.modular.modform_hecketriangle.space import ZeroForm
        sage: ZeroForm(6, CC, 3, -1).dimension()
        0

  `gens`()

    Return a basis of `self` as a list of basis elements. Since this is the zero module an empty list is returned.

    EXAMPLES:

        sage: from sage.modular.modform_hecketriangle.space import ZeroForm
        sage: ZeroForm(6, CC, 3, -1).gens()
        []

`sage.modular.modform_hecketriangle.space.``canonical_parameters`(group, base_ring, k, ep, n=None)

  Return a canonical version of the parameters.

  EXAMPLES:

      sage: from sage.modular.modform_hecketriangle.space import canonical_parameters
      sage: canonical_parameters(5, ZZ, 20/3, int(1))
      (Hecke triangle group for n = 5, Integer Ring, 20/3, 1, 5)

      sage: canonical_parameters(infinity, ZZ, 2, int(-1))
      (Hecke triangle group for n = +Infinity, Integer Ring, 2, -1, +Infinity)

### Navigation

- index
- modules |
- next |
- previous |
- Modular Forms for Hecke Triangle Groups »