QFunctions(R, L)ΒΆ
qfunct.spad line 147 [edit on github]
R: Ring
Implement qPochhammer and friends.
- eisensteinE2: () -> L
eisensteinE2()
returns the normalized Eisenstein seriesE2
= 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 seriesE4
= 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 seriesE6
= 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 eacht
ints
)
- 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}$ Iff
(n
) =z^n
for some elementz
fromR
(assuming thatz
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^
{deltan
-g
}) (1-q^
{deltan
})$ For one(n
)==1
, we have the identity: jacobiFunction(one,d
,g
) = generalizedEulerProduct(d
, [g
,d
-g
]) * eulerFunctiond
.
- 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
) whereE4
andE6
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 $(c
cdotq^r
,q^s
)_n
$ given by 1, ifn=0
; and\[
prod_{k=0
}^{n
-1} (1-c
cdotq^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\[
(c
cdotq^r
,q^s
)=\[
prod_{k=0
}^{infty} (1-c
cdotq^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)