QEtaQuotientMonoidExponentVectorsStar helps to do computations with eta-functions and quotients of eta-functions expressed in terms of the q-series.

basisReduction: (List Vector Integer, Vector Integer) -> List Vector Integer

basisReduction(basis, ix) assumes that for each vector b in basis and each i in 1..#ix: If ix.i > 0, then b.i > 0, if ix.i < 0, then b.i <= 0, if ix.i = 0, then this entry is ignored. It returns another basis bas such that with the same property as the input basis and additionally, for each i in 1..ix, length(bas.i)^2 <= length(basis.i).

etaQuotientMonoidExponentVectors: PositiveInteger -> List List Integer

etaQuotientMonoidExponentVectorsX: PositiveInteger -> List List Integer

etaQuotientMonoidExponentVectors(m) returns Z-vectors $r$ (of dimension n, where n=\#(divisors m)). These vectors form a Z-basis of $R^*(N)$ as defined in cite{Hemmecke+Radu:EtaRelations:2019}). The version with X at the end tries to make the resulting vector of the orders of the series small in absolute value.

extendedBasisReduction: (List Vector Integer, Vector Integer) -> List Vector Integer

extendedBasisRedcution(basis, ix) returns the same as basisReduction(basis, ix) except that before calling basisReduction, each vector from basis gets extended by the respective unit vector.