Elliptic and Modular Functions

More information on elliptic functions can be found for example in Chandrasekharan [Cha85], and for modular functions and their use see Koblitz [Kob84].

Contents

Eisenstein Series

Let f(z) be a modular function. Then f(z) may be written as a Fourier series f(z) = ∑n ∈Z an qn, where q = e2 π i z, which has at most finitely many nonzero coefficients an with n<0. Such a Fourier expansion of a modular function is called its q-expansion. In this and the next section we present intrinsics for q-expansions of the Eisenstein series and the Weierstrass wp-function.

Let z be a point in the upper half-plane and let L be a lattice in C. The Eisenstein series are defined as the coefficients of the Laurent Series expansion of the Weierstrass wp-function: wp(z, L) = ((1)/(z2)) + ∑2≤k Gk(L)(2k - 1)z2k - 2 where Gk(L) are the Eisenstein series. The normalization E2n(z) = ((1)/(2 ζ(2n))) G2n(z) ensures that E2n(z) has a rational q-expansion.

Eisenstein(k, z) : RngIntElt, RngSerElt -> RngSerElt
    Precision: RngIntElt                Default: 
Given a positive even integer k = 2n and a complex power series z with positive valuation, return the q-expansion of the normalized Eisenstein series E2n(z). If z has finite precision this is the default for Precision otherwise the default precision of the parent of z is used.
Eisenstein(k, t) : RngIntElt, FldComElt -> FldComElt
Given a positive even integer k = 2n and a point t in the upper half plane, return the value of E2n(z) at t.

Eisenstein(k, L) : RngIntElt, SeqEnum -> FldComElt
Given a positive even integer k = 2n and a lattice L = [a, b] in the complex plane, return the value of the Eisenstein series E2n(z) relative to the lattice L.

Eisenstein(k, F) : RngIntElt, QuadBinElt -> RngSerElt
Given a positive even integer k = 2n and a binary quadratic form F = ax2 + bxy + cy2, return the value of the Eisenstein series E2n(z) at the point τ = ( - b + Sqrt(b2 - 4ac) )/(2a) where z is e2π * i * τ.

Example FldRe_Eisenstein (H26E9)

We compute the q-expansion for the normalized Eisenstein series E4(z).
> C<i> := ComplexField();
> R<z> := PowerSeriesRing(C);
> E4<q> := Eisenstein(4, z);
> E4;
1.00000000000000000000000000000 +
    240.000000000000000000000000000*q +
    2160.00000000000000000000000000*q^2 +
    6720.00000000000000000000000000*q^3 +
    17520.0000000000000000000000000*q^4 +
    30240.0000000000000000000000000*q^5 +
    60480.0000000000000000000000000*q^6 +
    82560.0000000000000000000000000*q^7 +
    140400.000000000000000000000000*q^8 +
    181680.000000000000000000000000*q^9 +
    272160.000000000000000000000000*q^10 +
    319680.000000000000000000000000*q^11 +
    490560.000000000000000000000000*q^12 +
    527520.000000000000000000000000*q^13 +
    743040.000000000000000000000000*q^14 +
    846720.000000000000000000000000*q^15 +
    1123440.00000000000000000000000*q^16 +
    1179360.00000000000000000000000*q^17 +
    1635120.00000000000000000000000*q^18 +
    1646400.00000000000000000000000*q^19 + O(q^20)
We now evaluate this series at the point z1 = 2.5 + i. Since the expansion is in terms of q rather than z we first must calculate the point q1 that corresponds to z1.
> q1 := Exp(2*Pi(RealField())*i*(2.5 +i));
> Evaluate(E4, q1);
0.559302852856190773766762411942 +
3.67329046709782088758389413820E-31*i
If we are interested only in the value of E4 at a single point, then we can compute it directly:
> Eisenstein(4, 2.5 + i);
0.559302852856190773766762411942 +
3.67329046709782088758389413820E-31*i

Weierstrass Series

WeierstrassSeries(z, q) : RngSerElt, RngSerElt -> RngSerElt
    Precision: RngIntElt                Default: 
Return a normalized q-expansion of the Weierstrass wp-function: wp(z, L) = ((1)/(z2)) + ∑2≤k Gk(L)(2k - 1)z2k - 2 where Gk(L) are the Eisenstein series and WeierstrassSeries(z, q) = (2 π i) - 2wp(q, z/(2 π i)) Each term is an Eisenstein series, calculated to precision Precision, which is by default the precision of q.

WeierstrassSeries(z, t) : RngSerElt, FldComElt -> RngSerElt
Given a complex power series z with positive valuation and a point t =τ in the upper-half complex plane, return the normalized q-expansion of the Weierstrass wp-function. This is equivalent to evaluating the q-series expansion at q = e2π iτ.

WeierstrassSeries(z, L) : RngSerElt, SeqEnum -> RngSerElt
Given a complex power series z with positive valuation and a lattice L = [a, b] in the complex plane, returns the normalized q-expansion of the Weierstrass wp-function relative to the lattice L.

WeierstrassSeries(z, F) : RngSerElt, QuadBinElt -> RngSerElt
Given a complex power series z with positive valuation and a binary quadratic form F = ax2 + bxy + cy2, this function returns the q-expansion of the Weierstrass wp-function at τ = ( - b + Sqrt(b2 - 4ac) )/(2a).

The Jacobi θ and Dedekind η- functions

The first Jacobi θ-function, θ(q, z), is defined by θ(q, z)=(1/i)∑n= - ∞^∞( - 1)nq^((n + (1/2))2)e(2n + 1)i z=2∑n=0^∞( - 1)nq^((n + (1/2))2)sin(2n + 1)z.

Defined this way, θ satisfies θ(q, - z)= - θ(q, z), it is periodic with period 2π in the second variable: θ(q, z + 2π)= θ(q, z), and its zeroes are of the form m1π + m2(log x/i) for any integers m1, m2.

JacobiTheta(q, z) : FldReElt, RngSerElt[FldRe] -> RngSerElt
JacobiTheta(q, z) : FldComElt, RngSerElt[FldCom] -> RngSerElt
For a real or complex number q satisfying |q|<1, return the first of Jacobi's theta functions θ(q, z) as a power series expansion in z, a series over the complex numbers. Pari is used here.
JacobiTheta(q, z) : FldReElt, FldReElt -> FldReElt
JacobiTheta(q, z) : FldComElt, FldComElt -> FldComElt
For real or complex numbers q, z satisfying |q|<1, return the value of θ(q, z), the first of Jacobi's theta functions. Pari is used here.

JacobiThetaNullK(q, k) : FldReElt, RngIntElt -> FldReElt
For integer k≥0, return the k-th derivative θ(k)(q, 0) of θ(q, z) at z=0. Pari is used here.
DedekindEta(z) : RngSerElt -> RngSerElt
Given a complex power series z with positive valuation, return the q-expansion of Dedekind's η-function. Note that the unnormalized series is returned, that is, the factor q1/24 is not removed. See [Lan87].
DedekindEta(s) : FldComElt -> FldComElt
For complex argument s with positive imaginary part, this returns the actual value of Dedekind's η-function which is defined by η(s)=e2πi s/24 (1 + ∑n=1^∞( - 1)n (qn(3n - 1)/2 + qn(3n + 1)/2) ) where q = e2πi s.

The j-Invariant and the Discriminant

The discriminant of the elliptic curve corresponding to the complex lattice Lτ, spanned by 1 and τ is given by Δ(τ) = q (1 + ∑n=1^∞( - 1)n (qn(3n - 1)/2 + qn(3n + 1)/2) ) where q = e2πi τ.

jInvariant(q) : RngSerElt -> RngSerElt
Given a power series q over a real or complex field with positive valuation, return the q-expansion of the elliptic j-invariant. The expansion begins with j(q) = q - 1 + 744 + 196884 q + ... .

Note that: j(q) = (((E4(q))3)/(Δ(q))) where E4(q) = Eisenstein(4, q) and Δ(q) = Delta(q).

jInvariant(s) : FldComElt -> FldComElt
For complex argument s with positive imaginary part, this returns the value of the elliptic j-invariant at s. This is a modular function of weight 0 whose Fourier expansion starts with j(s)=e - 2πi s + 744 + 196884e2πi s + ... .
jInvariant(L) : SeqEnum -> FldComElt
Given a lattice L = [a, b] in the complex plane, this function returns the value of the elliptic j-invariant of L. This is the j-invariant of τ where τ = a/b or τ = b / a, whichever is in the upper half complex plane.
jInvariant(F) : QuadBinElt -> FldComElt
For a binary quadratic form F = ax2 + bxy + cy2 with negative discriminant, this returns the elliptic j-invariant of F. This is the j-invariant of τ where τ = ( - b + Sqrt(b2 - 4ac)) / (2a).
Delta(z) : RngSerElt -> RngSerElt
Given a complex power series z, this function returns a q-series expansion of the discriminant Δ(z).
Delta(t) : FldComElt -> FldComElt
Given a point t in the upper half plane, return the q-series expansion of the discriminant Δ(q) evaluated at q = e2πi t.

Delta(L) : SeqEnum -> FldComElt
Given a pair L = [a,b] of complex numbers generating a lattice in C, return the q-series expansion of the discriminant Δ(q) evaluated at q = e2πiτ where τ = a/b or τ = b / a, whichever is in the upper half complex plane.

Weber's Functions

WeberF(s) : FldComElt -> FldComElt
For complex argument s in the upper half-plane, this returns the value of Weber's function f, defined in such a way that j(s)=((f(s)24 - 16)3/f(s)24).
WeberF2(g) : RngSerElt -> RngSerElt
For a complex power series g having positive valuation, this function returns the q-expansion of Weber's f2 function f2(x)=(η(2x)Sqrt(2)/η(x)) defined in such a way that j(s)=((f2(s)24 + 16)3/f2(s)24).
WeberF1(s) : FldComElt -> FldComElt
WeberF2(s) : FldComElt -> FldComElt
For complex number s lying in the upper half-plane, these return the value of Weber's functions f1 and f2, defined in such a way that j(s)=((f1/2(s)24 + 16)3/f1/2(s)24). In fact, f2 is as defined above and f1(x)=f2( - 1/x)=(η(x/2)/η(x)).

Example FldRe_Eisenstein (H26E10)

We compute the q-expansion for the Weber function f2(z).
> C<i> := ComplexField();
> R<x> := PowerSeriesRing(C);
> f2<q> := WeberF2(x);
> f2;
1.41421356237309504880168872421 +
    (1.41421356237309504880168872421 +
    0.370240244846530520584656749172*i)*q +
    (1.36574922765338060759226121771 +
    0.370240244846530520584656749172*i)*q^2 +
    (2.77996279002647565639394994192 +
    0.366010933793292419482272977081*i)*q^3 +
    (2.78023959778761313408864734217 +
    0.736251178639822940066929726253*i)*q^4 +
    (4.14598882544099374168090855987 +
    0.736265672260303709036837819528*i)*q^5 +
    (5.56020175541059398072755542234 +
    1.10227660605359612851911079661*i)*q^6 +
    ...
V2.28, 13 July 2023