1
0
mirror of https://github.com/kalmarek/SmallHyperbolic synced 2024-11-23 23:40:28 +01:00

fix discrete reps enumeration for p = 3 (mod 4)

This commit is contained in:
kalmarek 2020-06-08 16:18:02 +02:00
parent 62c8a09cc9
commit c2740d58d3
No known key found for this signature in database
GPG Key ID: 8BF1A3855328FC15

View File

@ -8,7 +8,6 @@ const p = try
@assert length(ARGS) == 2 && ARGS[1] == "-p" @assert length(ARGS) == 2 && ARGS[1] == "-p"
p = parse(Int, ARGS[2]) p = parse(Int, ARGS[2])
RamanujanGraphs.Primes.isprime(p) RamanujanGraphs.Primes.isprime(p)
# @assert p % 4 == 1
p p
catch ex catch ex
@error "You need to provide a prime `-p` which is congruent to 1 mod 4." @error "You need to provide a prime `-p` which is congruent to 1 mod 4."
@ -82,25 +81,35 @@ end
let α = RamanujanGraphs.generator(RamanujanGraphs.GF{p}(0)), let α = RamanujanGraphs.generator(RamanujanGraphs.GF{p}(0)),
β = RamanujanGraphs.generator_min(QuadraticExt(α)) β = RamanujanGraphs.generator_min(QuadraticExt(α))
for j = 1:(p-1)÷4
if p % 4 == 1
ub = (p - 1) ÷ 4
ζ = root_of_unity(CC, (p + 1) ÷ 2, (p - 1) ÷ 4)
else # p % 4 == 3
ub = (p + 1) ÷ 4
ζ = root_of_unity(CC, (p + 1), 1)
end
for k = 1:ub
try try
h = DiscreteRepr( h = DiscreteRepr(
RamanujanGraphs.GF{p}(1) => root_of_unity(CC, p), RamanujanGraphs.GF{p}(1) => root_of_unity(CC, p),
β => root_of_unity(CC, (p+1)÷2, j*(p-1)÷4)) β => ζ^k,
)
@time adjacency = let @time adjacency = let
A = matrix(CC, h(SL2p[2])) A = matrix(CC, h(SL2p[2]))
B = matrix(CC, h(SL2p[3])) B = matrix(CC, h(SL2p[3]))
sum(A^i for i in 1:4) + sum(B^i for i in 1:4) sum(A^i for i = 1:4) + sum(B^i for i = 1:4)
end end
@time ev = let evs = safe_eigvals(adjacency) @time ev = let evs = safe_eigvals(adjacency)
_count_multiplicites(evs) _count_multiplicites(evs)
end end
@info "Discrete Series Representation $j" ev[1:2] ev[end] @info "Discrete Series Representation $k" ev[1:2] ev[end]
catch ex catch ex
@error "Discrete Series Representation $j : failed" ex @error "Discrete Series Representation $k : failed" ex
ex isa InterruptException && rethrow(ex) ex isa InterruptException && rethrow(ex)
end end
end end