Half Integral Weight Forms#

Basmaji’s Algorithm#

Basmaji (page 55 of his Essen thesis, “Ein Algorithmus zur Berechnung von Hecke-Operatoren und Anwendungen auf modulare Kurven”, http://wstein.org/scans/papers/basmaji/).

Let $$S = S_{k+1}(\varepsilon)$$ be the space of cusp forms of even integer weight $$k+1$$ and character $$\varepsilon = \chi \psi^{(k+1)/2}$$, where $$\psi$$ is the nontrivial mod-4 Dirichlet character. Let $$U$$ be the subspace of $$S \times S$$ of elements $$(a,b)$$ such that $$\Theta_2 a = \Theta_3 b$$. Then $$U$$ is isomorphic to $$S_{k/2}(\chi)$$ via the map $$(a,b) \mapsto a/\Theta_3$$.

This algorithm is implemented in Sage. I’m sure it could be implemented in a way that is much faster than the current implementation…

sage: half_integral_weight_modform_basis(DirichletGroup(16,QQ).1, 3, 10)
[]
sage: half_integral_weight_modform_basis(DirichletGroup(16,QQ).1, 5, 10)
[q - 2*q^3 - 2*q^5 + 4*q^7 - q^9 + O(q^10)]
sage: half_integral_weight_modform_basis(DirichletGroup(16*7).0^2,3,30)
[q - 2*q^2 - q^9 + 2*q^14 + 6*q^18 - 2*q^21 - 4*q^22 - q^25 + O(q^30),
q^2 - q^14 - 3*q^18 + 2*q^22 + O(q^30),
q^4 - q^8 - q^16 + q^28 + O(q^30), q^7 - 2*q^15 + O(q^30)]

>>> from sage.all import *
>>> half_integral_weight_modform_basis(DirichletGroup(Integer(16),QQ).gen(1), Integer(3), Integer(10))
[]
>>> half_integral_weight_modform_basis(DirichletGroup(Integer(16),QQ).gen(1), Integer(5), Integer(10))
[q - 2*q^3 - 2*q^5 + 4*q^7 - q^9 + O(q^10)]
>>> half_integral_weight_modform_basis(DirichletGroup(Integer(16)*Integer(7)).gen(0)**Integer(2),Integer(3),Integer(30))
[q - 2*q^2 - q^9 + 2*q^14 + 6*q^18 - 2*q^21 - 4*q^22 - q^25 + O(q^30),
q^2 - q^14 - 3*q^18 + 2*q^22 + O(q^30),
q^4 - q^8 - q^16 + q^28 + O(q^30), q^7 - 2*q^15 + O(q^30)]