def test_differential_operator(self): def load_cache(f): return SymWtModFmElt.load_from(opath.join( data_dir("vector_valued_differential"), f)) p_e4_e4 = load_cache("pair_sym4_e4_e4_prec7.sobj") p_e4_x10 = load_cache("pair_sym4_e4_x10_prec7.sobj") p_det2_e4_e6 = load_cache("pair_sym4_det2_e4_e6_prec7.sobj") t_det_sym4_e4_e4_e6 = load_cache( "triple_det_sym4_e4_e4_e6_prec10.sobj") t_det_sym4_e4_e6_x12 = load_cache( "triple_det_sym4_e4_e6_x12_prec10.sobj") # prec 7 es4, es6, x10, x12, _ = degree2_modular_forms_ring_level1_gens(7) self.assertEqual(rankin_cohen_pair_sym(4, es4, es4), p_e4_e4) self.assertEqual(rankin_cohen_pair_sym(4, es4, x10), p_e4_x10) self.assertEqual(rankin_cohen_pair_det2_sym(4, es4, es6), p_det2_e4_e6) # prec 10 es4, es6, x10, x12, _ = degree2_modular_forms_ring_level1_gens(10) self.assertEqual(rankin_cohen_triple_det_sym4(es4, es4, es6), t_det_sym4_e4_e4_e6) self.assertEqual(rankin_cohen_triple_det_sym4(es4, es6, x12), t_det_sym4_e4_e6_x12)
def test_hecke_operator(self): es4, es6, _, _, _ = degree2_modular_forms_ring_level1_gens(10) self.assertEqual(es4.hecke_operator_acted(2, 5), 45 * es4._down_prec(5)) f10 = rankin_cohen_pair_sym(2, es4, es6) self.assertEqual(f10.hecke_operator_acted(2, 5), -6168 * f10._down_prec(5))
def test_det_sym2_odd(self): prec = 7 es4, es6, x10, x12, x35 = degree2_modular_forms_ring_level1_gens(prec) f21 = rankin_cohen_triple_det_sym2(es4, es6, x10) f23 = rankin_cohen_triple_det_sym2(es4, es6, x12) f27 = rankin_cohen_triple_det_sym2(es4, x10, x12) fs = [f21, f23, f27] det_form = det([f.forms for f in fs]) det_form = det_form[(4, -2, 6)] ** (-1) * det_form self.assertEqual(det_form, es4 * x35 ** 2)
def test_vector_valued_rankin_cohen(self): prec = 5 M4_10 = vvld_smfs(4, 10, prec) f4_10 = M4_10.basis()[0] f4_15 = vvld_smfs(4, 15, prec).basis()[0] e4 = eisenstein_series_degree2(4, prec) g4_15 = vector_valued_rankin_cohen(e4, f4_10) t = ((1, 1, 1), 0) self.assertEqual(f4_15 * g4_15[t], g4_15 * f4_15[t]) es4, es6, _, _, _ = degree2_modular_forms_ring_level1_gens(5) f = es6 x5 = x5__with_prec(5) f_even_sym2 = rankin_cohen_pair_sym(2, f, x5) f_odd_sym2 = vector_valued_rankin_cohen(es4 * x5, f_even_sym2) a = f_odd_sym2[(1, 0, 2)].vec[1] g_sym2_21 = vvld_smfs(2, 21, 4).basis()[0] b = g_sym2_21[(1, 0, 2)].vec[1] self.assertEqual(f_odd_sym2 * b, g_sym2_21 * a)