QEtaFundamentalDomain¶
fundom.spad line 92 [edit on github]
QEtaFundamentalDomain finds a matrix in SL2Z that transforms a given t
in the upper half plane of the form t=u + i*v*sqrt(D
) where u
and v
are rational numbers and D
is a positive sqarefree integer into an element z=r+i*s*sqrt(D
) in the standard fundamental domain.
- decomposeIntoSTProduct: Matrix Integer -> FreeGroup Symbol
decomposeIntoSTProduct(m)
returns a non-commutative powerproductfgs
in the variablesS
andT
such thatm
is equal to this product ifS
is replaced by the matrix [[0,-1
],[1,0]] andT
by the matrix [[1,1],[0,1]]. Suppose that s:=”S”::Symbol;t:=”T”::Symbol; mat(x:Record(gen:Symbol,exp:ZZ)):Matrix(Integer)==
(x
.gen=t=>matrix[[1,x
.exp],[0,1]];z:=positiveRemainder(x
.exp,4); z=0=>unit;z=2=>-unit;z=1=>matrix[[0,-1
],[1,0]];matrix[[0,1],[-1
,0]]); unit:=matrix[[1,0],[0,1]]; M:=reduce(_*
,[matf
forf
in factorsfgs
],unit) thenm=M
.
- toFundamentalDomain: (AlgebraicNumber, PositiveInteger) -> Matrix Integer
If
t=
(u+v*sqrt(-d
))/w
whereu
,v
,w
,d
are integers andd>0
,w>0
, then toFundamentalDomain(t
,k
) returns a matrixm
such thatm
is a finite product of powers the matrices S=matrix[[0,-k
],[1,0]] and T=matrix[[1,k
],[0,1]] such that if a+sqrt(-d
)*b=moebiusTransform(m
, (u+v*sqrt(-d
))/w
), then-k/2<=a<k/2
and a^2+b^2*d>=k. The valuek=1
corresponds to the group SL2Z whereask=2
corresponds to the Radu-Wurm group.