Example #1
0
def f21_sym6(prec):
    '''One of the generator with the determinant weight 21 given by
    van Dorp.
    '''
    Q = _sym6_od_Q(21, (4, 6, 10))
    phi4 = eisenstein_series_degree2(4, prec)
    phi6 = eisenstein_series_degree2(6, prec)
    x10 = x10_with_prec(prec)
    forms = _rankin_cohen_bracket_func(Q)([phi4, phi6, x10])
    return SWMFE(forms, 21, prec)
 def assert_degree_2(self, k):
     es = eisenstein_series_degree2(k, prec=10)
     es1 = sess(weight=k, degree=2)
     self.assertTrue(
         all(es[(n, r, m)] == es1.fourier_coefficient(matrix([[n, ZZ(r) / ZZ(2)],
                                                              [ZZ(r) / ZZ(2), m]]))
             for n, r, m in es.prec))
Example #3
0
def f17_sym6(prec):
    '''One of the generator with the determinant weight 17 given by
    van Dorp.
    '''
    Q = _sym6_od_Q(17, (5, 5, 6))
    phi6 = eisenstein_series_degree2(6, prec + 1)
    return rankin_cohen_triple_x5(Q, phi6, prec)
Example #4
0
def f15_sym6(prec):
    '''One of the generator with the determinant weight 15 given by
    van Dorp.
    '''
    Q = _sym6_od_Q(15, (5, 5, 4))
    phi4 = eisenstein_series_degree2(4, prec + 1)
    return rankin_cohen_triple_x5(Q, phi4, prec)
Example #5
0
 def test_det(self):
     prec = 10
     l = [eisenstein_series_degree2(k, prec) for k in [4, 6, 10, 12]]
     m = [[a.wt * a for a in l],
          [a.differentiate_wrt_tau() for a in l],
          [a.differentiate_wrt_w() for a in l],
          [a.differentiate_wrt_z() for a in l]]
     d = det_deg2(m, wt=35)
     d = d * d[(2, -1, 3)] ** (-1)
     self.assertEqual(d, x35_with_prec(prec))
Example #6
0
 def test_interpolate(self):
     prec = 15
     es4 = eisenstein_series_degree2(4, prec)
     x35 = x35_with_prec(prec)
     f = es4.differentiate_wrt_tau()
     self.assertEqual(calc_forms(lambda fs: fs[0] ** 2, [es4], prec, wt=8),
                      es4 ** 2)
     self.assertEqual(calc_forms(lambda fs: fs[0] * fs[1],
                                 [es4, x35], prec, wt=39), es4 * x35)
     self.assertEqual(calc_forms(lambda fs: fs[0] ** 2,
                                 [f], prec, autom=False), f ** 2)
Example #7
0
# -*- coding: utf-8; mode: sage -*-
from sage.all import QQ

from degree2.all import (
    rankin_cohen_pair_sym, eisenstein_series_degree2,
    x10_with_prec, x12_with_prec, x35_with_prec,
    rankin_cohen_pair_det2_sym,
    rankin_cohen_triple_det_sym4)

from degree2.interpolate import det_deg2

prec_ev = 7

phi4 = eisenstein_series_degree2(4, prec_ev)
phi6 = eisenstein_series_degree2(6, prec_ev)
x10 = x10_with_prec(prec_ev)
x12 = x12_with_prec(prec_ev)
x35 = x35_with_prec(prec_ev)

f1 = rankin_cohen_pair_sym(4, phi4, phi4)
f2 = rankin_cohen_pair_sym(4, phi4, phi6)
f3 = rankin_cohen_pair_det2_sym(4, phi4, phi6)
f4 = rankin_cohen_pair_sym(4, phi4, x10)
f5 = rankin_cohen_pair_sym(4, phi6, x10)

x70 = det_deg2([f.forms for f in [f1, f2, f3, f4, f5]],
               wt=sum([f.wt for f in [f1, f2, f3, f4, f5]]) + 10)
y70 = x70 * QQ(-19945421021123916595200000)**(-1)
assert y70 == x35**2

Example #8
0
f15 = f15_sym6(prec_od)
f17 = f17_sym6(prec_od)
f19 = f19_sym6(prec_od)
f21 = f21_sym6(prec_od)
f23 = f23_sym6(prec_od)

# The rank of A_{Sym(6)}^{1}(Gamma_2) is equal to 7.
# Therefore we need other two vector valued Siegel modular forms.

# We construct two modular forms f17_1 and f17_2 by
# Siegel modualr forms of weight det^12 Sym(6) and
# Rankin-Cohen type differential operator defined by Dorp
# (i.e. function vector_valued_rankin_cohen).

es4 = eisenstein_series_degree2(4, prec_od)
es6 = eisenstein_series_degree2(6, prec_od)
x35 = x35_with_prec(prec_od)
f12 = rankin_cohen_pair_det2_sym(6, es4, es6)
h12 = rankin_cohen_pair_sym(6, es4, es4**2)

f17_1 = vector_valued_rankin_cohen(es4, f12)

# f12_prect2 is {phi4, phi6}_{det^2 Sym(6)}.
# The prec of f12_prect2 is larger than other forms.
f12_prect2 = rankin_cohen_pair_det2_sym(
    6,
    eisenstein_series_degree2(4, prec_od*2),
    eisenstein_series_degree2(6, prec_od*2))

def _g12():
Example #9
0
 def assert_pullback_m_2(self, k, A1, prec=3):
     f0 = eisenstein_pullback_coeff(k, A1, tpl_to_half_int_mat((0, 0, 0)))
     f = eisenstein_series_degree2(k, prec=5) * f0
     for t in PrecisionDeg2(prec):
         self.assertEqual(f[t],
                          eisenstein_pullback_coeff(k, A1, tpl_to_half_int_mat(t)))