Skip to content

Commit

Permalink
Reduces JET errors a bit further
Browse files Browse the repository at this point in the history
  • Loading branch information
Fe-r-oz committed Sep 13, 2024
1 parent da60deb commit 7ce56c5
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 25 deletions.
4 changes: 3 additions & 1 deletion src/QuantumClifford.jl
Original file line number Diff line number Diff line change
Expand Up @@ -763,7 +763,9 @@ comm!(v, l::Tableau, r::PauliOperator) = comm!(v, r, l)
@inline comm!(v, l::PauliOperator, r::Stabilizer) = comm!(v, l, tab(r))
@inline comm!(v, l::Stabilizer, r::PauliOperator) = comm!(v, tab(l), r)
@inline comm!(v, s::Stabilizer, l::Int, r::Int) = comm!(v, tab(s), l, r)

@inline comm!(v, l::PauliOperator, r::Tableau, i::Int) = comm!(v, l, r, i)
@inline comm!(v, l::Tableau, r::PauliOperator, i::Int) = comm!(v, l, r, i)
@inline comm!(v, s::Tableau, l::Int, r::Int) = comm!(v, s, l, r)

Base.:(*)(l::PauliOperator, r::PauliOperator) = mul_left!(copy(r),l)

Expand Down
10 changes: 9 additions & 1 deletion src/dense_cliffords.jl
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,15 @@ function row_limit(str, limit=50)
end

digits_subchars = collect("₀₁₂₃₄₅₆₇₈₉")
digits_substr(n,nwidth) = join(([digits_subchars[d+1] for d in reverse(digits(n, pad=nwidth))]))
function digits_substr(n::Integer, nwidth::Int)
dlist = digits(n, base=10, pad=nwidth)
for d in dlist
if d < 0 || d > 9
throw(BoundsError("Digits out of range: $d"))
end
end
return join([digits_subchars[d+1] for d in reverse(dlist)])
end

function Base.copy(c::CliffordOperator)
CliffordOperator(copy(c.tab))
Expand Down
5 changes: 3 additions & 2 deletions src/ecc/ECC.jl
Original file line number Diff line number Diff line change
Expand Up @@ -335,8 +335,9 @@ isdegenerate(c::AbstractECC, args...) = isdegenerate(parity_checks(c), args...)
isdegenerate(c::AbstractStabilizer, args...) = isdegenerate(stabilizerview(c), args...)

function isdegenerate(H::Stabilizer, errors) # Described in https://quantumcomputing.stackexchange.com/questions/27279
syndromes = comm.((H,), errors) # TODO This can be optimized by having something that always returns bitvectors
return length(Set(syndromes)) != length(errors)
syndromes = map(e -> comm(H,e), errors) # TODO This can be optimized by having something that always returns bitvectors
syndrome_set = Set(syndromes)
return length(syndrome_set) != length(errors)
end

function isdegenerate(H::Stabilizer, d::Int=1)
Expand Down
5 changes: 4 additions & 1 deletion src/ecc/decoder_pipeline.jl
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,10 @@ function evaluate_decoder(d::AbstractSyndromeDecoder, setup::AbstractECCSetup, n

physical_noisy_circ, syndrome_bits, n_anc = physical_ECC_circuit(H, setup)
encoding_circ = naive_encoding_circuit(H)
preX = [sHadamard(i) for i in n-k+1:n]
preX = Vector{typeof(sHadamard(1))}()
for i in (n-k+1):n
push!(preX, sHadamard(i))
end

mdH = MixedDestabilizer(H)
logX_circ, _, logX_bits = naive_syndrome_circuit(logicalxview(mdH), n_anc+1, last(syndrome_bits)+1)
Expand Down
6 changes: 5 additions & 1 deletion src/sumtypes.jl
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,11 @@ julia> make_variant(sCNOT)
```
"""
function make_variant(type::Union{DataType,SymbolicDataType})
Expr(:call, _symbol(type), [:(::$t) for t in _types(type)]...)
variant_args = []
for t in _types(type)
push!(variant_args, :(::$t))
end
Expr(:call, _symbol(type), variant_args...)
end

"""
Expand Down
39 changes: 20 additions & 19 deletions test/test_jet.jl
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
@testitem "JET checks" tags=[:jet] begin
using JET
using ArrayInterface
using Static
using Graphs
using StridedViews
using LinearAlgebra
using JET
using Test
using ArrayInterface
using Static
using Graphs
using StridedViews
using LinearAlgebra

rep = report_package("QuantumClifford";
ignored_modules=(
AnyFrameModule(Graphs.LinAlg),
AnyFrameModule(Graphs.SimpleGraphs),
AnyFrameModule(ArrayInterface),
AnyFrameModule(Static),
AnyFrameModule(StridedViews),
AnyFrameModule(LinearAlgebra),
)
)
@show rep
@test_broken length(JET.get_reports(rep)) == 0
@test length(JET.get_reports(rep)) <= 23
rep = report_package("QuantumClifford";
ignored_modules=(
AnyFrameModule(Graphs.LinAlg),
AnyFrameModule(Graphs.SimpleGraphs),
AnyFrameModule(ArrayInterface),
AnyFrameModule(Static),
AnyFrameModule(StridedViews),
AnyFrameModule(LinearAlgebra),
))

@show rep
@test_broken length(JET.get_reports(rep)) == 0
@test length(JET.get_reports(rep)) <= 19
end

0 comments on commit 7ce56c5

Please sign in to comment.