nome Convention Consistency for EisensteinE2 and Elliptic Functions?
I just wonder whether your convention for the "nome" is consistent through the whole package --- "nome" is usually defined as $q=e^{i\pi\tau}$ for elliptic function (like theta function), but in many number theory literature $q=e^{i2\pi\tau}$, as is emphasized on mathworld https://mathworld.wolfram.com/Nome.html
Extreme care is needed when consulting the literature, as it is common in the theory of modular functions (and in particular the Dedekind eta function) to use the symbol q to denote $e^{2\pi i\tau}$, i.e., the square of the usual nome $e^{i\pi i \tau}$
For example, there are two Eisenstein series, $E_2(\tau):=\frac{1}{2}\sum_{(m,n)\in\mathbb Z^2_{\text{prime}}}\frac{1}{(m+n\tau)^2}$, and $G_2(\tau):=\sum_{(m,n)\in\mathbb Z^2}\frac{1}{(m+n\tau)^2}$ in Eisenstein sum sense, which are expected to satisfy
$$ G_2(\tau)=2\zeta(2)E_2(\tau), $$
and
$$ E_2=1-24\sum_{n=1}^\infty\sigma_1(n)q_{\text{number}}^n\quad\text{with}\quad q_{\text{number}}\equiv e^{i2\pi\tau} $$
for sum of divisor powers $\sigma_r(n):=\sum_{d|n}d^r$. This series converge very fast so can be directly evaluated.
Now to examine the convention of nome in this package, I test for the for the lattice $\mathbb L=\{1m+2in\mid (m,n)\in\mathbb Z^2\}$, so $\tau=2i$ and $q_{\text{number}}=e^{-4\pi}$. By truncate the series upto $n=3$ by hand, I get
using Primes
""" Return the factors of n, including 1, n """
function factors(n::T)::Vector{T} where {T<:Integer}
sort(vec(map(prod, Iterators.product((p .^ (0:m) for (p, m) in Primes.eachfactor(n))...))))
end
N = 3 # truncation for the series of E2
@show E2_tau = 1 - 24 * sum([sum(factors(n)) * exp(-4π*n) for n in 1:N]) # 0.9999163029078149
@show G2_tau = pi^2/3 * E2_tau # 3.2895927812999894
I can double check this result of G2 using another version of "G2", denoted by $G_2(\mathbb L)$ for the lattice, with sum in the principal value sense
$$ G_2(\mathbb L)=\text{P.V.}\sum_{w\in\mathbb L\setminus{0}}\frac{1}{w^2}\equiv\lim_{R\rightarrow\infty}\sum_{w\in\mathbb L\bigcap R\mathcal O\setminus{0}}\frac{1}{w^2} $$
for the neighbor $\mathcal O$ around the origin. The relation of this $G_2(\mathbb L)$ and Eisensteins' $G_2$ is (see Eq.(1.35) in https://mtaylor.web.unc.edu/wp-content/uploads/sites/16915/2018/04/wpfs.pdf)
$$ G_2(\mathbb L)=G_2(\tau) - \frac{\pi}{\text{cell-vol}}\frac{\bar\omega_1}{\omega_1}. $$
Brute-forcely, I can truncate $R=100$ and compute this $G_2(\mathbb L)$:
@show G2_L = begin
truncation_radius = 100
n_ω1_truncation = Int(floor(truncation_radius / abs(ω1)))
n_ω2_truncation = Int(floor(truncation_radius / abs(ω2)))
site_cart_list = [m * ω1 + n * ω2 for m in -n_ω1_truncation:n_ω1_truncation for n in -n_ω2_truncation:n_ω2_truncation]
site_cart_list = filter(z -> abs(z) > 1.0E-10, site_cart_list)
sum([1.0 / site_cart^2 for site_cart in site_cart_list])
end # 1.7138213711774903 + 4.2934406030425976e-17im
Then with $\text{cell-vol}=2$, we have
@show G2_tau_from_G2_L = G2_L + pi / 2 * imag(1)/1 # 3.284617697972387 + 4.2934406030425976e-17im
which is consistent with the value obtained from $E_2$ above (but with less accuracy due to the slow convergence)
However, with the conventional "nome" $q=e^{i\pi\tau}=e^{-2\pi}$ and the method EisensteinE2, I got
Riemann_zeta_2 = pi^2/3
@show EisensteinE2(exp(-2pi)) * Riemann_zeta_2 # 3.1415926535897936 + 0.0im
which is terribly WRONG!
While with the number-theory convention $q_{\text{number}}=e^{-4\pi}$, I got
Riemann_zeta_2 = pi^2/3
@show EisensteinE2(exp(-4pi)) * Riemann_zeta_2 # 3.2895927812999886 + 0.0im
which is correct!
So my puzzle is on the consistency of the concept of "nome" of this package, I am afraid the two-$q$ get mixed here: the "nome" for Jacobi theta function is $q=e^{i\pi\tau}$ (this is discuss in #13), while the standard "q" for number theory is $q=e^{i2\pi\tau}$. If so, please change the doc for Eisenstein series and related number theory functions
I'm not sure why @stla is not responding here. I haven't seen any GitHub activity from him since August of last year.