QFunctions(R, L)ΒΆ

qfunct.spad line 147 [edit on github]

Implement qPochhammer and friends.

eisensteinE2: () -> L

eisensteinE2() returns the normalized Eisenstein series E2 = 1 - 24 sum_{n=1}^infty sigma_1(n) q^{2n}$ where $sigma_1(n)$ is the sum of the divisors of $n$.

eisensteinE4: () -> L

eisensteinE4() returns the normalized Eisenstein series E4 = 1 + 240 sum_{n=1}^infty sigma_3(n) q^{2n}$ where $sigma_3(n)$ is the sum of third powers of the divisors of $n$.

eisensteinE6: () -> L

eisensteinE4() returns the normalized Eisenstein series E6 = 1 - 504 sum_{n=1}^infty sigma_5(n) q^{2n}$ where $sigma_3(n)$ is the sum of fifth powers of the divisors of $n$.

eulerFunction2: PositiveInteger -> L

Do not use this function! It is just another implementation of eulerFunction.

eulerFunction: PositiveInteger -> L

For s>0, eulerFunction(s) = qPochhammer(1, s, s). https://en.wikipedia.org/wiki/Euler_function We use the Pentagonal number theorem to speed up its computation. https://en.wikipedia.org/wiki/Pentagonal_number_theorem eulerFunction(s) = 1 + sum_{n>0} (-1)^n (q^(s*n*(3*n+1)/2) + q^(s*n*(3*n-1)/2))

eulerFunctionPower3: PositiveInteger -> L

eulerFunctionPower3(x) returns eulerFunction(x)^3, but uses the formula $sum_{n=0}^infty (-1)^n (2n+1) q^{frac{1}{2}(n^2 + n)}$ to compute the result more efficiently. See cite{HirschhornHunt_SimpleProofOfTheRamanujanConjecture_1981}. http://eudml.org/doc/152366

eulerStream: (PositiveInteger, Integer, Integer, Stream Record(k: Integer, c: R)) -> Stream Record(k: Integer, c: R)

eulerStream is an auxiliary function for the computation of eulerFunction and only exported for debugging purposes.

generalizedEulerProduct: (PositiveInteger, List Integer) -> L

generalizedEulerProduct(n, ts) computes the product of qPochhammer(1, t, n) for each t in ts)

jacobiFunction: (Integer -> R, PositiveInteger, NonNegativeInteger) -> L

For d>0, 0<=g<d, jacobiFunction(f, d, g) returns $sum_{n=-infty}^infty (-1)^n f(n) q^{g n + d n (n-1) / 2}$ If f(n) = z^n for some element z from R (assuming that z is invertible), then the returned series is equal to the Jacobi triple product $prod_{n=1}^infty (1-zq^{delta (n-1)+g}) (1-z^{-1}q^{delta n-g}) (1-q^{delta n})$ For one(n)==1, we have the identity: jacobiFunction(one, d, g) = generalizedEulerProduct(d, [g, d-g]) * eulerFunction d.

jacobiFunction: (PositiveInteger, NonNegativeInteger) -> L

jacobiFunction(d, g) returns jacobiFunction(n+->1,d,g).

kleinJInvariant: () -> L

kleinJInvariant() returns Klein's j-invariant as a Laurent series in q=2ipi. It is given by 1728*E4^3/(E4^3-E6^2) where E4 and E6 are the respective normalized Eisenstein series.

partitionSeries: PositiveInteger -> L

partitionSeries(s) returns the partition generating series, i.e. the coefficient of $q^(s*n)$ is the number of partitions of $n$ (where $q$ is the variable from $L$). It holds: partitionSeries(s)*eulerFunction(s)=1.

qPochhammer: () -> L

qPochhammer() = qPochhammer(1, 1, 1)

qPochhammer: (R, Integer, Integer, NonNegativeInteger) -> L

qPochhammer(c, r, s, n) returns the Laurent series $(ccdot q^r, q^s)_n$ given by 1, if n=0; and \[prod_{k=0}^{n-1} (1-ccdot q^s cdot (q^r)^k),\] otherwise, where q=monomial(1,1)$L.

qPochhammer: (R, Integer, PositiveInteger) -> L

qPochhammer(c, r, s) returns the Laurent series given by \[(ccdot q^r, q^s)= \[prod_{k=0}^{infty} (1-ccdot q^r cdot (q^s)^k)\] where q=monomial(1,1)$L.

qPochhammer: (R, NonNegativeInteger) -> L

qPochhammer(c, n) = qPochhammer(c, 0, 1, n)

qPochhammer: R -> L

qPochhammer(c) = qPochhammer(c, 0, 1)