@@ -44,12 +44,8 @@ function backtrajectory(circuit::Vector{<:AbstractOperation}, n::Int)
4444 for op in circuit
4545 if op isa AbstractCliffordOperator
4646 apply_right!(T, op)
47- elseif op isa sMX
48- push!(results, do_MX!(T, op))
49- elseif op isa sMY
50- push!(results, do_MY!(T, op))
51- elseif op isa sMZ
52- push!(results, do_MZ!(T, op))
47+ elseif op isa AbstractMeasurement
48+ push!(results, do_measure!(T, op))
5349 elseif op isa sMRX
5450 push!(results, do_MRX!(T, op))
5551 elseif op isa sMRY
@@ -67,7 +63,7 @@ function backtrajectory(circuit::Vector{<:AbstractOperation}, n::Int)
6763end
6864
6965
70- function do_MX !(T, op::sMX)
66+ function do_measure !(T, op::sMX)
7167 collapse_x!(T, op.qubit)
7268 return phases(tab(T))[op.qubit] == 0x00 ? 1 : -1
7369end
@@ -96,7 +92,7 @@ function collapse_x!(T, q::Int)
9692 apply_right!(T, sHadamard(q))
9793end
9894
99- function do_MY !(T, op::sMY)
95+ function do_measure !(T, op::sMY)
10096 collapse_y!(T, op.qubit)
10197 return eval_y_obs(T, op.qubit).phase[] == 0x00 ? 1 : -1
10298end
@@ -141,7 +137,7 @@ function eval_y_obs(T, q::Int)
141137 return result
142138end
143139
144- function do_MZ !(T, op::sMZ)
140+ function do_measure !(T, op::sMZ)
145141 collapse_z!(T, op.qubit)
146142 return phases(tab(T))[nqubits(T)+op.qubit] == 0x00 ? 1 : -1
147143end
209205@inline getzbytes(T, r) = tab(T).xzs[2:2:end,r]
210206
211207
208+ # function do_measure!(T, op::PauliMeasurement)
209+ # h_xz = []
210+ # h_yz = []
211+ # cnot = []
212+ # meas = []
213+
214+ # start = 0
215+
216+ # end
217+
218+ # function do_set!(T, state)
219+ # end
220+
221+
212222# function backtrajectory(circuit0::Vector{AbstractOperation}, state::AbstractStabilizer)
213223# # TODO - Figure out if to use Reset or Gates
214224# pushfirst!(circuit0, Reset(state, 1:nqubits(state)))
0 commit comments