Find the smallest basering over which chi and psi are valued, and return new chi and psi valued in that ring.
EXAMPLES:
sage: sage.modular.modform.eis_series.__common_minimal_basering(DirichletGroup(1).0, DirichletGroup(1).0)
([1], [1])
sage: sage.modular.modform.eis_series.__common_minimal_basering(DirichletGroup(3).0, DirichletGroup(5).0)
([-1], [zeta4])
sage: sage.modular.modform.eis_series.__common_minimal_basering(DirichletGroup(12).0, DirichletGroup(36).0)
([-1, 1], [-1, 1])
Find all characters chi such that (chi,k) gives rise to Eisenstein series for the group determined by character.
EXAMPLES:
sage: sage.modular.modform.eis_series.__find_eisen_chars(DirichletGroup(36).0, 4)
[]
sage: sage.modular.modform.eis_series.__find_eisen_chars(DirichletGroup(36).0, 5)
[([1, 1], [-1, 1], 1),
([1, 1], [-1, 1], 3),
([1, 1], [-1, 1], 9),
([1, -1], [-1, -1], 1),
([-1, 1], [1, 1], 1),
([-1, 1], [1, 1], 3),
([-1, 1], [1, 1], 9),
([-1, -1], [1, -1], 1)]
Find all characters chi such that (chi,k) gives rise to Eisenstein series for Gamma1(N).
EXAMPLES:
sage: sage.modular.modform.eis_series.__find_eisen_chars_gamma1(12, 4)
[([1, 1], [1, 1], 1),
([1, 1], [1, 1], 2),
([1, 1], [1, 1], 3),
([1, 1], [1, 1], 4),
([1, 1], [1, 1], 6),
([1, 1], [1, 1], 12),
([1, 1], [-1, -1], 1),
([-1, -1], [1, 1], 1),
([-1, 1], [1, -1], 1),
([1, -1], [-1, 1], 1)]
sage: sage.modular.modform.eis_series.__find_eisen_chars_gamma1(12, 5)
[([1, 1], [-1, 1], 1),
([1, 1], [-1, 1], 3),
([-1, 1], [1, 1], 1),
([-1, 1], [1, 1], 3),
([1, 1], [1, -1], 1),
([1, 1], [1, -1], 2),
([1, 1], [1, -1], 4),
([1, -1], [1, 1], 1),
([1, -1], [1, 1], 2),
([1, -1], [1, 1], 4)]
Compute and return a list of all parameters that
define the Eisenstein series with given character and weight
.
Only the parity of is relevant (unless k = 1, which is a slightly different case).
If character is an integer , then the parameters for
are computed instead. Then the condition is that
.
EXAMPLES:
sage: sage.modular.modform.eis_series.compute_eisenstein_params(DirichletGroup(30)(1), 3)
[]
sage: sage.modular.modform.eis_series.compute_eisenstein_params(DirichletGroup(30)(1), 4)
[([1, 1], [1, 1], 1),
([1, 1], [1, 1], 2),
([1, 1], [1, 1], 3),
([1, 1], [1, 1], 5),
([1, 1], [1, 1], 6),
([1, 1], [1, 1], 10),
([1, 1], [1, 1], 15),
([1, 1], [1, 1], 30)]
sage: sage.modular.modform.eis_series.compute_eisenstein_params(15, 1)
[([1, 1], [-1, 1], 1),
([1, 1], [-1, 1], 5),
([1, 1], [1, zeta4], 1),
([1, 1], [1, zeta4], 3),
([1, 1], [-1, -1], 1),
([1, 1], [1, -zeta4], 1),
([1, 1], [1, -zeta4], 3),
([-1, 1], [1, -1], 1)]
sage: sage.modular.modform.eis_series.compute_eisenstein_params(DirichletGroup(15).0, 1)
[([1, 1], [-1, 1], 1), ([1, 1], [-1, 1], 5)]
Return the L-series of the weight Eisenstein series
on
.
This actually returns an interface to Tim Dokchitser’s program for computing with the L-series of the Eisenstein series
INPUT:
OUTPUT:
The L-series of the Eisenstein series.
EXAMPLES:
We compute with the L-series of and then
:
sage: L = eisenstein_series_lseries(16)
sage: L(1)
-0.291657724743873
sage: L = eisenstein_series_lseries(20)
sage: L(2)
-5.02355351645987
Return the -expansion of the normalized weight
Eisenstein
series to precision prec in the ring
. (The normalization
chosen here is the one that forces the coefficient of
to be
1.)
Here’s a rough description of how the algorithm works: we know
. Now, we basically just
compute all the
simultaneously, as
is
multiplicative.
INPUT:
EXAMPLES:
sage: eisenstein_series_qexp(2,5)
-1/24 + q + 3*q^2 + 4*q^3 + 7*q^4 + O(q^5)
sage: eisenstein_series_qexp(2,0)
O(q^0)
sage: eisenstein_series_qexp(2,5,GF(7))
2 + q + 3*q^2 + 4*q^3 + O(q^5)
sage: eisenstein_series_qexp(2,5,GF(7),var='T')
2 + T + 3*T^2 + 4*T^3 + O(T^5)
sage: eisenstein_series_qexp(10, 30, GF(17))
15 + q + 3*q^2 + 15*q^3 + 7*q^4 + 13*q^5 + 11*q^6 + 11*q^7 + 15*q^8 + 7*q^9 + 5*q^10 + 7*q^11 + 3*q^12 + 14*q^13 + 16*q^14 + 8*q^15 + 14*q^16 + q^17 + 4*q^18 + 3*q^19 + 6*q^20 + 12*q^21 + 4*q^22 + 12*q^23 + 4*q^24 + 4*q^25 + 8*q^26 + 14*q^27 + 9*q^28 + 6*q^29 + O(q^30)
AUTHORS: