Example #1
0
    def _fourier_coefficient(self, content, det_4):

        def zeta(s):
            k = ZZ(1 - s)
            return -bernoulli(k) / k

        k = self.wt
        if det_4 < 0:
            return 0
        elif det_4 == 0:
            return 2 / zeta(1 - k) * sum([d ** (k - 1) for d in divisors(content)])
        else:
            return 2 * quadratic_L_function__exact(2 - k, -det_4) *\
                self._fc__unramfactor(content, det_4)\
                / (zeta(1 - k) * zeta(3 - 2 * k))
 def _product_of_l_part(self, mat):
     '''Factor of Fourier coefficient except unramified factors.
     '''
     mat_det = self._mat_det_full_rank(mat)
     n = self.degree
     k = self.weight
     if n % 2 == 0:
         quadl = quadratic_L_function__exact(
             1 + n // 2 - k, (-1) ** (n // 2) * mat_det)
         prod = reduce(operator.mul,
                       (zeta(1 + 2 * i - 2 * k)
                        for i in range(1, n // 2 + 1)), ZZ(1)) ** (-1)
         return ZZ(2) ** (n // 2) * zeta(1 - k) ** (-1) * quadl * prod
     else:
         prod = reduce(operator.mul,
                       (zeta(1 + 2 * i - 2 * k)
                        for i in range(1, (n - 1) // 2 + 1)), ZZ(1)) ** (-1)
         return ZZ(2) ** ((n + 1) // 2) * zeta(1 - k) ** (-1) * prod