SatoEigenValueProblemΒΆ

satoevp.spad line 104 [edit on github]

For given $N$, the package SatoEigenValueProblem finds $gamma$ and $tau$ such that $gamma tau = N tau$.

gammaCandidate: (PositiveInteger, Integer, Integer, Integer, Integer) -> Union(Matrix Integer, failed)

gammaCandidate(nn,det,v,c,d) computes for a given $(N,det,v,c,d)$ a possible matrix [[a,b],[c,d]] with a=v-d*nn, b=(a*d-det)/c and fails, if b is not an integer.

gammaCandidateWurm: (PositiveInteger, Integer, Integer, Integer, Integer) -> Union(Matrix Integer, failed)

gammaCandidateWurm(nn,det,v,c,d) computes for a given $(N,det,v,c,d)$ a possible matrix [[a,b],[c,d]] with a=v-d*nn, b=(a*d-det)/c. It fails, if both c and d are even or if b is not an integer or det=1 and either a or d is even or if det=2 and (c is even or any of a,b,d is odd).

gammaTauQCandidateAux: (PositiveInteger, Integer, Integer, Integer, Integer, (PositiveInteger, Integer, Integer, Integer, Integer) -> Union(Matrix Integer, failed)) -> Union(Record(fgamma: Matrix Integer, ftau: AlgebraicNumber, fq: Complex Float, fnn: PositiveInteger, fdiscr: Integer), failed)

gammaTauQCandidate(nn,det,v,c,d,gcand) computes for a given $(N,det,v,c,d)$ a possible matrix $gamma=[[a,b],[c,d]]$ in SL2Z and a $tauinmathbb{H}$ such that $gamma tau = N tau$. It fails if the candidate matrix would have a non-integer entry in position (1,2) or if v^2>=4*nn*det.

gammaTauQCandidates: (PositiveInteger, Integer, Integer) -> List Record(fgamma: Matrix Integer, ftau: AlgebraicNumber, fq: Complex Float, fnn: PositiveInteger, fdiscr: Integer)

gammaTauQCandidates(nn,c,d) returns gammaTauQCandidatesAux(nn,1,c,d,gammaCandidate).

gammaTauQCandidatesAux: (PositiveInteger, Integer, Integer, Integer, (PositiveInteger, Integer, Integer, Integer, Integer) -> Union(Matrix Integer, failed)) -> List Record(fgamma: Matrix Integer, ftau: AlgebraicNumber, fq: Complex Float, fnn: PositiveInteger, fdiscr: Integer)

gammaTauQCandidatesAux(nn,det,c,d,f) collects non-failed gammaTauQCandidateAux(nn,det,v,c,d,f) for the finitely many v with v^2<4*nn*det.

gammaTauQCandidatesWurm: (PositiveInteger, Integer, Integer) -> List Record(fgamma: Matrix Integer, ftau: AlgebraicNumber, fq: Complex Float, fnn: PositiveInteger, fdiscr: Integer)

gammaTauQCandidatesWurm(nn,c,d) returns gammaTauQCandidatesAux(nn,2,c,d,gammaCandidateWurm) if d is even and gammaTauQCandidatesAux(nn,1,c,d,gammaCandidateWurm) if d is odd. It returns 0 if the conditions are not fulfilled.

satoTriples: (PositiveInteger, PositiveInteger) -> XHashTable(List Integer, Record(fnn: PositiveInteger, fgamma: Matrix Integer, ftau: AlgebraicNumber, ftaufd: AlgebraicNumber))

satoTriples(nn,k) returns a number of Sato triples (nn,gamma,tau) such that moebiusTransform(gamma,tau)=nn*tau) and for t=moebiusTransform(moebiusAN(toFundamentalDomain(tau,k),tau)) the value expPiI(2/k*t) is real. Currently, k=1 corresponds to SL2Z and k=2 to the Radu-Wurm group W.