Skip to content

Commit 4cc664e

Browse files
authored
fix to affectedbit for symbolic measurements (#414)
1 parent abfcd3c commit 4cc664e

File tree

4 files changed

+41
-3
lines changed

4 files changed

+41
-3
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55

66
# News
77

8+
## v0.9.14 - 2024-11-02
9+
10+
- **(fix)** `affectedqubits()` on `sMX`, `sMY`, and `sMR*`
11+
812
## v0.9.13 - 2024-10-30
913

1014
- New error-correction group theory tools:

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "QuantumClifford"
22
uuid = "0525e862-1e90-11e9-3e4d-1b39d7109de1"
33
authors = ["Stefan Krastanov <[email protected]> and QuantumSavory community members"]
4-
version = "0.9.13"
4+
version = "0.9.14"
55

66
[deps]
77
Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa"

src/affectedqubits.jl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,5 @@ affectedqubits(c::CliffordOperator) = 1:nqubits(c)
1515
affectedqubits(c::ClassicalXOR) = ()
1616

1717
affectedbits(o) = ()
18-
affectedbits(m::sMRZ) = (m.bit,)
19-
affectedbits(m::sMZ) = (m.bit,)
18+
affectedbits(m::Union{sMRZ,sMZ,sMRX,sMX,sMRY,sMY}) = m.bit==0 ? () : (m.bit,)
2019
affectedbits(c::ClassicalXOR) = (c.bits..., c.store)

test/test_symmeas.jl

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
@testitem "Symbolic Measurements" begin
2+
using Random
3+
using QuantumClifford
4+
using Test
5+
test_sizes = [10,63,64,65,127,128,129] # Including sizes that would test off-by-one errors in the bit encoding.
6+
7+
@testset "Symbolic Measurements" begin
8+
for n in test_sizes
9+
for i in [rand(1:n), 1, n, n÷2+1, n÷2-1, n÷2]
10+
for T in [sMRZ,sMZ,sMRX,sMX] # TODO sMY sMRY
11+
for _ in 1:10
12+
apply!(PauliFrame(n,n,n), T(i,1))
13+
end
14+
end
15+
end
16+
for i in [rand(1:n), 1, n, n÷2+1, n÷2-1, n÷2]
17+
for T in [sMRZ,sMZ,sMRX,sMX,sMY] # TODO sMRY
18+
for _ in 1:10
19+
s = random_stabilizer(n)
20+
apply!(Register(copy(s),1), T(i,1))
21+
end
22+
end
23+
end
24+
end
25+
@test_throws DimensionMismatch SingleQubitOperator(tCNOT,1)
26+
@test_throws DimensionMismatch CliffordOperator(sHadamard(5),2)
27+
@test_throws ArgumentError CliffordOperator(sHadamard(5),6,compact=true)
28+
for T in [sMRZ,sMZ,sMRX,sMX,sMRY,sMY]
29+
@test_throws ArgumentError T(-1)
30+
@test_throws ArgumentError T(-1,0)
31+
@test_throws ArgumentError T(-1,1)
32+
@test T(1,0) == T(1)
33+
end
34+
end
35+
end

0 commit comments

Comments
 (0)