QAuxiliaryModularEtaQuotientPackage¶
QAuxiliaryModularEtaQuotientPackage helps to do computations with eta quotients that are modular functions.
- aLigozat: (PositiveInteger , Integer , Integer ) -> Integer
aLigozat(m, c, delta)computes an entry of the matrix of Ligozat corresponding to the index (c, delta) counted in divisors.
- coprimePart: (Integer , Integer ) -> Integer
- coPrimePart(
n,c) splitsninto u*v such thatgcd(u,c)=1and returnsu. We assume that all input numbers are positive.
- cusps2OfGamma0: PositiveInteger -> List Fraction Integer
- Do not use that function! It is just another implementation of
cuspsOfGamma0.
- cuspsOfGamma0: PositiveInteger -> List Fraction Integer
- According to cite[
Lemma~2.45]{Radu:PhD:2010}, there are $eulerphi(gcd(N/c,c))$ different cusps $frac{a}{c}$ of $Gamma_0(N)$ that correspond to a divisor $c$ of $N$. cusps(m) returns all the cusps forGamma_0(m) sorted first by denominator and then (among the cusps with the same denominator) by the numerator of the cusp.
- cuspToMatrix: (PositiveInteger , Fraction Integer ) -> Matrix Integer
cuspToMatrix(m, a/c)returns a matrix gamma=[[a,b],[c,d]] such that splitMatrix(gamma,m) returns two matrices [m1,m2] withm1*m2= [[m*a,c], [m*b,d]] andm1being inSL_2(Z) andm2being a triangular matrix with 0<=m2(1,2) <m/c.
- dedekindPsi: PositiveInteger -> PositiveInteger
dedekindPsi(n)computes the value of the Dedekind psi function. https://en.wikipedia.org/wiki/Dedekind_psi_function
- doubleCosetRepresentatives: PositiveInteger -> List Matrix Integer
doubleCosetRepresentatives(nn)returns a list of double coset representatives of $Gamma_0(nn) backslash Gamma_0(1) /SL_2(setZ)_infty$ where $SL_2(setZ)_infty$ are matrices of the form [[1,h],[0,1]] withhbeing an integer.
- genusOfGamma0: PositiveInteger -> NonNegativeInteger
genusOfGamma0(level)returns the genus of the congruence subgroupGamma_0(level). It corresponds to the series https://oeis.org/A001617.
- indexOfGamma0: PositiveInteger -> PositiveInteger
indexOfGamma0(n)computes the index ofGamma_0(n) in SL2Z.indexOfGamma0(n) is equal to dedekindPsi(n).
- jacobiLowerStar: (Integer , Integer ) -> Integer
- See, for example, Definition 2.26 in the
PhDthesis of Silviu Radu.http://www3.risc.jku.at/publications/download/risc_5453/main.pdf
- jacobiUpperStar: (Integer , Integer ) -> Integer
- See, for example, Definition 2.26 in the
PhDthesis of Silviu Radu.http://www3.risc.jku.at/publications/download/risc_5453/main.pdf
- matrixAtkinLehner: (PositiveInteger , PositiveInteger ) -> Matrix Integer
matrixAtkinLehner(m, t)withta Hall divisor (https://en.wikipedia.org/wiki/Hall_subgroup) ofmreturns the 2x2 matrix with entries [[t, -a], [m,t*b]] such that n=m/t andt*b+ n*a = 1, see cite{Kohnen:WeierstrassPointsAtInfinity:2004}.
- matrixLigozat: PositiveInteger -> Matrix Integer
matrixLigozat(m)returns the (n,n) matrix with entries a_m(di,dj) given by Notation 3.2.6 in cite{Ligozat:CourbesModulaires:1975} wheredianddjrun over all positive divisors ofm. This matrix is A_N as described after Theorem 5.2 in cite{Hemmecke+Radu:EtaRelations:2018}.
- minimalSquareRootOfUnity: PositiveInteger -> PositiveInteger
minimalSquareRootOfUnity(p)returns an integernsuch that inZ(x) (wherexis a primitiven-th root of unity) there exists an elementysuch that y^2=p.pmust be a radical integer, i.e. should not contain the square of a prime.
- nu2: PositiveInteger -> Integer
- cite[
p.~25]{Shimura:ArithmeticTheory:1994}
- nu3: PositiveInteger -> Integer
- cite[
p.~25]{Shimura:ArithmeticTheory:1994}
- numberOfCuspsOfGamma0: PositiveInteger -> PositiveInteger
numberOfCuspsOfGamma0(m)returns the number of cusps of levelm.
- numberOfGaps: (PositiveInteger , List PositiveInteger ) -> NonNegativeInteger
numberOfGaps(n, l)computes reduce(+, [floor(x/n) forxinl], 0).
- primePower: (PositiveInteger , PositiveInteger ) -> NonNegativeInteger
primePower(d, p)returnsesuch thatgcd(d/p^e,p)=1, i.e. the highest poweresuch that p^e is a factor ofd.
- rationalSquareRoot: Fraction Integer -> Record(rat: Fraction Integer , rootOf: PositiveInteger )
- if
z= rationalSquareRoot(x) thenx= (z.rat)^2*z.root
- rightCosetRepresentatives: (PositiveInteger , PositiveInteger ) -> List Matrix Integer
rightCosetRepresentatives(nn, mm)returns a list of right coset representatives of $Gamma_0(mm*nn) backslash Gamma_0(mm)$.
- rStarConditionMatrix: PositiveInteger -> Matrix Integer
rStarConditionMatrix(nn)returns a matrix mat such that if n=#divisors(nn) andvis such thatmat*v=0thenv(1..n) is inR^*(nn), in other words, the nullspace of mat “generates”R^*(nn).
- rStarConditions: (PositiveInteger , List Integer ) -> Integer
rStarConditions returns0 if all conditions are fulfilled. Otherwise it returns a positive number in the range 1 to 4 that corresponds to the condition that is not met.
- rStarNonNegativeMatrix: (PositiveInteger , List Integer ) -> Matrix Integer
rStarNonNegativeMatrix(nn, idivs)returns a matrix mat which is a vertical concatenation of rStarConditionMatrix(nn) and (a part of) matrixLigozat(nn) whose rowindices correspond to idivs. It computes matrixB_Nequation (8) in cite{Hemmecke+Radu:EtaRelations:2018} (DOI:10.1016/j.jsc.2018.10.001) joined with the respective rows of matrix A_N from the same article.
- splitMatrix: (Integer , Integer , Integer , Integer ) -> Record(red: Matrix Integer , triang: Matrix Integer )
splitMatrix(a, b, c, d)returns a record rec that contains two matrices rec.red=m1and rec.triang=m2such thatmat=m1*m2according to cide[Lemma~4.8]{Radu:PhD:2010}, but in a variation as described in qetafun.spad, i.e. such that 0<=m2(1,2)<det(mat)/gwhereg=gcd(a,c) and mat=[[a,b],[c,d]]. Input condition: a*d-b*c>0.
- splitMatrix: (Matrix Integer , Integer ) -> Record(red: Matrix Integer , triang: Matrix Integer )
splitMatrix(mat, delta)computes splitMatrix(mat, delta, 1, 0). Input condition: determinant(mat)>0.
- splitMatrix: (Matrix Integer , Integer , PositiveInteger , NonNegativeInteger ) -> Record(red: Matrix Integer , triang: Matrix Integer )
splitMatrix(mat, delta, m, lambda)computes splitMatrix(a,b,c,d) where the arguments are the matrix entries of matrix [[delta, delta*lambda], [0,m]]*mat. Input condition: determinant(mat)>0.
- upsilonExponent: (Integer , Integer , Integer , Integer ) -> IntegerMod 24
upsilonExponent(a,b,c,d)returnszin {0..23} such that exp(pi*i*z/12) is a multiplier in the transformation of an eta function by the matrix [[a,b],[c,d]] fromSL_2(Z). A definition can be found in cite[Lemma~2.27]{Radu:PhD:2010}.
- upsilonExponent: Matrix Integer -> IntegerMod 24
upsilonExponent(m)for a matrixmfromSL_2(Z) returns upsilonExponent(m(1,1),m(1,2),m(2,1),m(2,2)).
- width: (PositiveInteger , Integer ) -> Integer
width(m, c)returns the width of the cusp a/c forGamma_0(m) and some a. The width is independent of a and given by m/gcd(c^2,m). cite[Lemma~2.37]{Radu:PhD:2010}