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)[source]#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationModule of (Hecke) cusp forms for the given group, base ring, weight and multiplier
- coordinate_vector(v)[source]#
Return the coordinate vector of
vwith respect to the basisself.gens().INPUT:
v– An element ofself.
OUTPUT:
An element of
self.module(), namely the corresponding coordinate vector ofvwith respect to the basisself.gens().The module is the free module over the coefficient ring of
selfwith the dimension ofself.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
from sage.modular.modform_hecketriangle.space import CuspForms MF = CuspForms(n=12, k=72/5, ep=-1) MF.default_prec(4) MF.dimension() el = MF(MF.f_i()*MF.Delta()) el vec = el.coordinate_vector() vec vec.parent() vec.parent() == MF.module() el == vec[0]*MF.gen(0) + vec[1]*MF.gen(1) el == MF.element_from_coordinates(vec) MF = CuspForms(n=infinity, k=16) el2 = MF(MF.Delta()*MF.E4()) vec2 = el2.coordinate_vector() vec2 el2 == MF.element_from_coordinates(vec2)
>>> from sage.all import * >>> from sage.modular.modform_hecketriangle.space import CuspForms >>> MF = CuspForms(n=Integer(12), k=Integer(72)/Integer(5), ep=-Integer(1)) >>> MF.default_prec(Integer(4)) >>> MF.dimension() 2 >>> el = MF(MF.f_i()*MF.Delta()) >>> el q - 1/(288*d)*q^2 - 96605/(1327104*d^2)*q^3 + O(q^4) >>> vec = el.coordinate_vector() >>> vec (1, -1/(288*d)) >>> vec.parent() Vector space of dimension 2 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring >>> vec.parent() == MF.module() True >>> el == vec[Integer(0)]*MF.gen(Integer(0)) + vec[Integer(1)]*MF.gen(Integer(1)) True >>> el == MF.element_from_coordinates(vec) True >>> MF = CuspForms(n=infinity, k=Integer(16)) >>> el2 = MF(MF.Delta()*MF.E4()) >>> vec2 = el2.coordinate_vector() >>> vec2 (1, 5/(8*d), 187/(1024*d^2)) >>> el2 == MF.element_from_coordinates(vec2) True
- dimension()[source]#
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
from sage.modular.modform_hecketriangle.space import CuspForms MF = CuspForms(n=12, k=72/5, ep=1) MF.dimension() len(MF.gens()) == MF.dimension() CuspForms(n=infinity, k=8).dimension()
>>> from sage.all import * >>> from sage.modular.modform_hecketriangle.space import CuspForms >>> MF = CuspForms(n=Integer(12), k=Integer(72)/Integer(5), ep=Integer(1)) >>> MF.dimension() 3 >>> len(MF.gens()) == MF.dimension() True >>> CuspForms(n=infinity, k=Integer(8)).dimension() 1
- gens()[source]#
Return a basis of
selfas 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
from sage.modular.modform_hecketriangle.space import CuspForms MF=CuspForms(n=12, k=72/5, ep=1) MF MF.dimension() MF.gens() MF = CuspForms(n=infinity, k=8, ep=1) MF.gen(0) == MF.E4()*MF.f_inf()
>>> from sage.all import * >>> from sage.modular.modform_hecketriangle.space import CuspForms >>> MF=CuspForms(n=Integer(12), k=Integer(72)/Integer(5), ep=Integer(1)) >>> MF CuspForms(n=12, k=72/5, ep=1) over Integer Ring >>> MF.dimension() 3 >>> 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)] >>> MF = CuspForms(n=infinity, k=Integer(8), ep=Integer(1)) >>> MF.gen(Integer(0)) == MF.E4()*MF.f_inf() True
- class sage.modular.modform_hecketriangle.space.MeromorphicModularForms(group, base_ring, k, ep, n)[source]#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationModule 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)[source]#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationModule of (Hecke) modular forms for the given group, base ring, weight and multiplier
- coordinate_vector(v)[source]#
Return the coordinate vector of
vwith respect to the basisself.gens().INPUT:
v– An element ofself.
OUTPUT:
An element of
self.module(), namely the corresponding coordinate vector ofvwith respect to the basisself.gens().The module is the free module over the coefficient ring of
selfwith the dimension ofself.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))
from sage.modular.modform_hecketriangle.space import ModularForms MF = ModularForms(n=6, k=20, ep=1) MF.dimension() el = MF.E4()^2*MF.Delta() el vec = el.coordinate_vector() vec vec.parent() vec.parent() == MF.module() el == vec[0]*MF.gen(0) + vec[1]*MF.gen(1) + vec[2]*MF.gen(2) + vec[3]*MF.gen(3) el == MF.element_from_coordinates(vec) MF = ModularForms(n=infinity, k=8, ep=1) (MF.E4()^2).coordinate_vector()
>>> from sage.all import * >>> from sage.modular.modform_hecketriangle.space import ModularForms >>> MF = ModularForms(n=Integer(6), k=Integer(20), ep=Integer(1)) >>> MF.dimension() 4 >>> el = MF.E4()**Integer(2)*MF.Delta() >>> el q + 78*q^2 + 2781*q^3 + 59812*q^4 + O(q^5) >>> vec = el.coordinate_vector() >>> vec (0, 1, 13/(18*d), 103/(432*d^2)) >>> vec.parent() Vector space of dimension 4 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring >>> vec.parent() == MF.module() True >>> el == vec[Integer(0)]*MF.gen(Integer(0)) + vec[Integer(1)]*MF.gen(Integer(1)) + vec[Integer(2)]*MF.gen(Integer(2)) + vec[Integer(3)]*MF.gen(Integer(3)) True >>> el == MF.element_from_coordinates(vec) True >>> MF = ModularForms(n=infinity, k=Integer(8), ep=Integer(1)) >>> (MF.E4()**Integer(2)).coordinate_vector() (1, 1/(2*d), 15/(128*d^2))
- dimension()[source]#
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
from sage.modular.modform_hecketriangle.space import ModularForms MF = ModularForms(n=6, k=20, ep=1) MF.dimension() len(MF.gens()) == MF.dimension() ModularForms(n=infinity, k=8).dimension()
>>> from sage.all import * >>> from sage.modular.modform_hecketriangle.space import ModularForms >>> MF = ModularForms(n=Integer(6), k=Integer(20), ep=Integer(1)) >>> MF.dimension() 4 >>> len(MF.gens()) == MF.dimension() True >>> ModularForms(n=infinity, k=Integer(8)).dimension() 3
- gens()[source]#
Return a basis of
selfas 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)]
from sage.modular.modform_hecketriangle.space import ModularForms MF = ModularForms(n=6, k=20, ep=1) MF.dimension() MF.gens() ModularForms(n=infinity, k=4).gens()
>>> from sage.all import * >>> from sage.modular.modform_hecketriangle.space import ModularForms >>> MF = ModularForms(n=Integer(6), k=Integer(20), ep=Integer(1)) >>> MF.dimension() 4 >>> 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)] >>> ModularForms(n=infinity, k=Integer(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)[source]#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationModule of (Hecke) quasi cusp forms for the given group, base ring, weight and multiplier
- coordinate_vector(v)[source]#
Return the coordinate vector of
vwith respect to the basisself.gens().INPUT:
v– An element ofself.
OUTPUT:
An element of
self.module(), namely the corresponding coordinate vector ofvwith respect to the basisself.gens().The module is the free module over the coefficient ring of
selfwith the dimension ofself.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
from sage.modular.modform_hecketriangle.space import QuasiCuspForms MF = QuasiCuspForms(n=6, k=20, ep=1) MF.dimension() el = MF(MF.E4()^2*MF.Delta() + MF.E4()*MF.E2()^2*MF.Delta()) el vec = el.coordinate_vector() # long time vec # long time vec.parent() # long time vec.parent() == MF.module() # long time el == MF(sum([vec[l]*MF.gen(l) for l in range(0,12)])) # long time el == MF.element_from_coordinates(vec) # long time MF.gen(1).coordinate_vector() == vector([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) # long time MF = QuasiCuspForms(n=infinity, k=10, ep=-1) el2 = MF(MF.E4()*MF.f_inf()*(MF.f_i() - MF.E2())) el2.coordinate_vector() el2 == MF.element_from_coordinates(el2.coordinate_vector())
>>> from sage.all import * >>> from sage.modular.modform_hecketriangle.space import QuasiCuspForms >>> MF = QuasiCuspForms(n=Integer(6), k=Integer(20), ep=Integer(1)) >>> MF.dimension() 12 >>> el = MF(MF.E4()**Integer(2)*MF.Delta() + MF.E4()*MF.E2()**Integer(2)*MF.Delta()) >>> el 2*q + 120*q^2 + 3402*q^3 + 61520*q^4 + O(q^5) >>> vec = el.coordinate_vector() # long time >>> vec # long time (1, 13/(18*d), 103/(432*d^2), 0, 0, 1, 1/(2*d), 0, 0, 0, 0, 0) >>> vec.parent() # long time Vector space of dimension 12 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring >>> vec.parent() == MF.module() # long time True >>> el == MF(sum([vec[l]*MF.gen(l) for l in range(Integer(0),Integer(12))])) # long time True >>> el == MF.element_from_coordinates(vec) # long time True >>> MF.gen(Integer(1)).coordinate_vector() == vector([Integer(0), Integer(1), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0)]) # long time True >>> MF = QuasiCuspForms(n=infinity, k=Integer(10), ep=-Integer(1)) >>> el2 = MF(MF.E4()*MF.f_inf()*(MF.f_i() - MF.E2())) >>> el2.coordinate_vector() (1, -1) >>> el2 == MF.element_from_coordinates(el2.coordinate_vector()) True
- dimension()[source]#
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
from sage.modular.modform_hecketriangle.space import QuasiCuspForms MF = QuasiCuspForms(n=8, k=46/3, ep=-1) MF.default_prec(3) MF.dimension() len(MF.gens()) == MF.dimension() QuasiCuspForms(n=infinity, k=10, ep=-1).dimension()
>>> from sage.all import * >>> from sage.modular.modform_hecketriangle.space import QuasiCuspForms >>> MF = QuasiCuspForms(n=Integer(8), k=Integer(46)/Integer(3), ep=-Integer(1)) >>> MF.default_prec(Integer(3)) >>> MF.dimension() 7 >>> len(MF.gens()) == MF.dimension() True >>> QuasiCuspForms(n=infinity, k=Integer(10), ep=-Integer(1)).dimension() 2
- gens()[source]#
Return a basis of
selfas 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)]
from sage.modular.modform_hecketriangle.space import QuasiCuspForms MF = QuasiCuspForms(n=8, k=46/3, ep=-1) MF.default_prec(4) MF.dimension() MF.gens() MF = QuasiCuspForms(n=infinity, k=10, ep=-1) MF.gens()
>>> from sage.all import * >>> from sage.modular.modform_hecketriangle.space import QuasiCuspForms >>> MF = QuasiCuspForms(n=Integer(8), k=Integer(46)/Integer(3), ep=-Integer(1)) >>> MF.default_prec(Integer(4)) >>> MF.dimension() 7 >>> 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)] >>> MF = QuasiCuspForms(n=infinity, k=Integer(10), ep=-Integer(1)) >>> 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)[source]#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationModule 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)[source]#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationModule of (Hecke) quasi modular forms for the given group, base ring, weight and multiplier
- coordinate_vector(v)[source]#
Return the coordinate vector of
vwith respect to the basisself.gens().INPUT:
v– An element ofself.
OUTPUT:
An element of
self.module(), namely the corresponding coordinate vector ofvwith respect to the basisself.gens().The module is the free module over the coefficient ring of
selfwith the dimension ofself.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
from sage.modular.modform_hecketriangle.space import QuasiModularForms MF = QuasiModularForms(n=6, k=20, ep=1) MF.dimension() el = MF(MF.E4()^2*MF.E6()^2 + MF.E4()*MF.E2()^2*MF.Delta() + MF.E2()^3*MF.E4()^2*MF.E6()) el vec = el.coordinate_vector() # long time vec # long time vec.parent() # long time vec.parent() == MF.module() # long time el == MF(sum([vec[l]*MF.gen(l) for l in range(0,22)])) # long time el == MF.element_from_coordinates(vec) # long time 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 MF = QuasiModularForms(n=infinity, k=4, ep=1) el2 = MF.E4() + MF.E2()^2 el2 el2.coordinate_vector() el2 == MF.element_from_coordinates(el2.coordinate_vector())
>>> from sage.all import * >>> from sage.modular.modform_hecketriangle.space import QuasiModularForms >>> MF = QuasiModularForms(n=Integer(6), k=Integer(20), ep=Integer(1)) >>> MF.dimension() 22 >>> el = MF(MF.E4()**Integer(2)*MF.E6()**Integer(2) + MF.E4()*MF.E2()**Integer(2)*MF.Delta() + MF.E2()**Integer(3)*MF.E4()**Integer(2)*MF.E6()) >>> el 2 + 25*q - 2478*q^2 - 82731*q^3 - 448484*q^4 + O(q^5) >>> vec = el.coordinate_vector() # long time >>> 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) >>> vec.parent() # long time Vector space of dimension 22 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring >>> vec.parent() == MF.module() # long time True >>> el == MF(sum([vec[l]*MF.gen(l) for l in range(Integer(0),Integer(22))])) # long time True >>> el == MF.element_from_coordinates(vec) # long time True >>> MF.gen(Integer(1)).coordinate_vector() == vector([Integer(0), Integer(1), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0), Integer(0)]) # long time True >>> MF = QuasiModularForms(n=infinity, k=Integer(4), ep=Integer(1)) >>> el2 = MF.E4() + MF.E2()**Integer(2) >>> el2 2 + 160*q^2 + 512*q^3 + 1632*q^4 + O(q^5) >>> el2.coordinate_vector() (1, 1/(4*d), 0, 1) >>> el2 == MF.element_from_coordinates(el2.coordinate_vector()) True
- dimension()[source]#
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
from sage.modular.modform_hecketriangle.space import QuasiModularForms MF = QuasiModularForms(n=5, k=6, ep=-1) MF.dimension() len(MF.gens()) == MF.dimension()
>>> from sage.all import * >>> from sage.modular.modform_hecketriangle.space import QuasiModularForms >>> MF = QuasiModularForms(n=Integer(5), k=Integer(6), ep=-Integer(1)) >>> MF.dimension() 3 >>> len(MF.gens()) == MF.dimension() True
- gens()[source]#
Return a basis of
selfas 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)]
from sage.modular.modform_hecketriangle.space import QuasiModularForms MF = QuasiModularForms(n=5, k=6, ep=-1) MF.default_prec(2) MF.gens() MF = QuasiModularForms(n=infinity, k=2, ep=-1) MF.default_prec(2) MF.gens()
>>> from sage.all import * >>> from sage.modular.modform_hecketriangle.space import QuasiModularForms >>> MF = QuasiModularForms(n=Integer(5), k=Integer(6), ep=-Integer(1)) >>> MF.default_prec(Integer(2)) >>> 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)] >>> MF = QuasiModularForms(n=infinity, k=Integer(2), ep=-Integer(1)) >>> MF.default_prec(Integer(2)) >>> 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)[source]#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationModule 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)[source]#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationModule 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)[source]#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationZero Module for the zero form for the given group, base ring weight and multiplier
- coordinate_vector(v)[source]#
Return the coordinate vector of
vwith respect to the basisself.gens().Since this is the zero module which only contains the zero form the trivial vector in the trivial module of dimension
0is returned.INPUT:
v– An element ofself, i.e. in this case the zero vector.
EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import ZeroForm sage: MF = ZeroForm(6, QQ, 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 Rational Field sage: vec.parent() == MF.module() True
from sage.modular.modform_hecketriangle.space import ZeroForm MF = ZeroForm(6, QQ, 3, -1) el = MF(0) el vec = el.coordinate_vector() vec vec.parent() vec.parent() == MF.module()
>>> from sage.all import * >>> from sage.modular.modform_hecketriangle.space import ZeroForm >>> MF = ZeroForm(Integer(6), QQ, Integer(3), -Integer(1)) >>> el = MF(Integer(0)) >>> el O(q^5) >>> vec = el.coordinate_vector() >>> vec () >>> vec.parent() Vector space of dimension 0 over Fraction Field of Univariate Polynomial Ring in d over Rational Field >>> vec.parent() == MF.module() True
- dimension()[source]#
Return the dimension of
self. Since this is the zero module0is returned.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import ZeroForm sage: ZeroForm(6, CC, 3, -1).dimension() 0
from sage.modular.modform_hecketriangle.space import ZeroForm ZeroForm(6, CC, 3, -1).dimension()
>>> from sage.all import * >>> from sage.modular.modform_hecketriangle.space import ZeroForm >>> ZeroForm(Integer(6), CC, Integer(3), -Integer(1)).dimension() 0
- gens()[source]#
Return a basis of
selfas 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() []
from sage.modular.modform_hecketriangle.space import ZeroForm ZeroForm(6, CC, 3, -1).gens()
>>> from sage.all import * >>> from sage.modular.modform_hecketriangle.space import ZeroForm >>> ZeroForm(Integer(6), CC, Integer(3), -Integer(1)).gens() []
- sage.modular.modform_hecketriangle.space.canonical_parameters(group, base_ring, k, ep, n=None)[source]#
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)
from sage.modular.modform_hecketriangle.space import canonical_parameters canonical_parameters(5, ZZ, 20/3, int(1)) canonical_parameters(infinity, ZZ, 2, int(-1))
>>> from sage.all import * >>> from sage.modular.modform_hecketriangle.space import canonical_parameters >>> canonical_parameters(Integer(5), ZZ, Integer(20)/Integer(3), int(Integer(1))) (Hecke triangle group for n = 5, Integer Ring, 20/3, 1, 5) >>> canonical_parameters(infinity, ZZ, Integer(2), int(-Integer(1))) (Hecke triangle group for n = +Infinity, Integer Ring, 2, -1, +Infinity)