Skip to content

Commit f98ece8

Browse files
authored
Avoid going through CliffordSimulator to test StabilizerStateChForm (#3628)
#2423 Now that measurements are supported through StablizerStateChForm from MeasurementGate in #3610, we don't need the help of `CliffordSimulator` to test its behavior.
1 parent 0b58a1a commit f98ece8

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

cirq/sim/clifford/stabilizer_state_ch_form_test.py

+14-7
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ def test_initial_state():
4040

4141
def test_run():
4242
(q0, q1, q2) = (cirq.LineQubit(0), cirq.LineQubit(1), cirq.LineQubit(2))
43+
qubit_map = {q0: 0, q1: 1, q2: 2}
4344

4445
"""
4546
0: ───H───@───────────────X───M───────────
@@ -67,10 +68,16 @@ def test_run():
6768
cirq.measure(q1),
6869
strategy=cirq.InsertStrategy.NEW,
6970
)
70-
# CliffordSimulator uses StabilizerStateChForm internally.
71-
# TODO: Use StabilizerStateChForm directly through `act_on` once
72-
# MeasurementGate is updated to use `_measure` from StabilizerStateChForm.
73-
simulator = cirq.CliffordSimulator()
74-
result = simulator.run(circuit, repetitions=10)
75-
assert all(result.measurements['1'] == 1)
76-
assert all(result.measurements['0'] != result.measurements['2'])
71+
for _ in range(10):
72+
state = cirq.StabilizerStateChForm(num_qubits=3)
73+
measurements = {}
74+
for op in circuit.all_operations():
75+
args = cirq.ActOnStabilizerCHFormArgs(
76+
state,
77+
axes=[qubit_map[i] for i in op.qubits],
78+
prng=np.random.RandomState(),
79+
log_of_measurement_results=measurements,
80+
)
81+
cirq.act_on(op, args)
82+
assert measurements['1'] == [1]
83+
assert measurements['0'] != measurements['2']

0 commit comments

Comments
 (0)