def basis_of_subsp_annihilated_by(self, pol, a=2, parallel=False): ''' Returns the basis of the subspace annihilated by pol(T(a)). ''' S = PolynomialRing(QQ, names="x") pol = S(pol) A = self.hecke_matrix(a) B = polynomial_func(pol)(A.transpose()) if parallel: with number_of_procs(1): res = pmap(self._to_form, B.kernel().basis()) else: res = [self._to_form(v) for v in B.kernel().basis()] return res
def test_ramanujan_conj_and_klingen(self): '''Test Ramanujan conjectures for eigenforms of determinant weights less than or equal to 29 and Hecke eigenvalues of Kligen-Eisenstein series. ''' prec = 10 @fork def _check(k, j): M = vvsmf(j, k, prec) if M.dimension() > 0: self.assertEqual(M.dimension(), len(M.basis())) _chply = M.hecke_charpoly(2) for cply, _ in _chply.factor(): K = NumberField(cply, names="a") a = K.gens()[0] f = M.eigenform_with_eigenvalue_t2(a) self.assert_hecke_eigen_values(f) with number_of_procs(1): for k, j in CartesianProduct(range(4, 30), [2, 4, 10]): _check(k, j)