# why this programm is not compilated

Edited as source code for clarity.

def half_integral_weight_hecke_operator_on_basis(B,chi,k,p):
Tp2B = [half_integral_weight_hecke_operator_on_qexp(f,chi,k,p) for f in B]
precp = Tp2B[0].prec()
Tp2B_mat = matrix([Tp2f.padded_list() for Tp2f in Tp2B])
B_mat = matrix([f.padded_list()[:precp] for f in B])
piv = B_mat.pivots()[-1]
assert precp > piv
Tp_mat = B_mat.solve_left(Tp2B_mat)
assert all([sum([Tp_mat[j][i]*B[i] for i in range(len(B))]) ==
Tp2B[j] for j in range(len(B))])
return Tp_mat

def half_integral_weight_hecke_operator_on_qexp(f,chi,k,p):
prec = f.prec()
R = f.parent()
q = R.0
precp = prec // (p^2)
Tp2f = O(q^(precp))
for n in range(1,precp):
bn = f[p^2*n] + chi(p)*(-1)^(((k-1)*(p-1))//4)*kronecker_symbol(n,p)*p^((k-3)//2)*f[n]
if n%(p^2) == 0:
bn += chi(p^2)*p^(k-2)*f[n//(p^2)]
Tp2f += bn*q^n
return Tp2f

N = 64
chi = DirichletGroup(N).one()
k = 5
prec = 1000

B = half_integral_weight_modform_basis(chi,k,prec)
B_mat = matrix([f.padded_list()[:prec] for f in B])
piv = B_mat.pivots()[-1]

Tps = [half_integral_weight_hecke_operator_on_basis(B,chi,k,p) for p
in prime_range(sqrt(prec//piv))]
print prime_range(sqrt(prec//piv))
print Tps

ZZq = B[0].parent()
q = ZZq.0
eta = sage.modular.etaproducts.qexp_eta(ZZq,prec)
etaf = q*eta(q^4)^4*eta(q^8) + O(q^prec)
B_mat = matrix([f.padded_list()[:prec] for f in B])

for p in prime_range(sqrt(prec)):
print p, half_integral_weight_hecke_operator_on_qexp(etaf,chi,k,p)/etaf

Np = N//2
m = (Np)*prod([1-1/p^2 for p in Np.prime_divisors()])
R = (k-1)*m/12 - (m-1)/(Np)
floor(R)

edit retag close merge delete