# QFunctions(R, L)ΒΆ

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{Hirschhorn+Hunt: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)