@@ -26,14 +26,53 @@ def test1():
2626 )
2727
2828 circuit_m , _ = moment_similarity (circuit , weight = 1.0 )
29- # print(circuit_m)
3029 circuit_b , _ = block_similarity (circuit , weight = 1.0 , block_id = 1 )
3130 circuit_m2 = remove_tags (circuit_m )
32- print (circuit_m2 )
3331 circuit2 = parallelize (circuit )
34- # print(circuit2)
3532 assert len (circuit2 .moments ) == 7
3633
34+ def test_measurement_and_reset ():
35+ qubits = cirq .LineQubit .range (4 )
36+ circuit = cirq .Circuit (
37+ cirq .H (qubits [0 ]),
38+ cirq .CX (qubits [0 ], qubits [1 ]),
39+ cirq .measure (qubits [1 ]),
40+ cirq .reset (qubits [1 ]),
41+ cirq .CX (qubits [1 ], qubits [2 ]),
42+ cirq .measure (qubits [2 ]),
43+ cirq .reset (qubits [2 ]),
44+ cirq .CX (qubits [2 ], qubits [3 ]),
45+ cirq .measure (qubits [0 ]),
46+ cirq .reset (qubits [0 ]),
47+ )
48+
49+ circuit_m , _ = moment_similarity (circuit , weight = 1.0 )
50+ circuit_b , _ = block_similarity (circuit , weight = 1.0 , block_id = 1 )
51+ circuit_m2 = remove_tags (circuit_m )
52+
53+ parallelized_circuit = parallelize (circuit )
54+
55+ assert len (parallelized_circuit .moments ) == 11
56+
57+ #this circuit should deterministically return all qubits to |0>
58+ #let's check:
59+ simulator = cirq .Simulator ()
60+ for _ in range (20 ): #one in a million chance we miss an error
61+ state_vector = simulator .simulate (parallelized_circuit ).state_vector ()
62+ assert np .all (np .isclose (np .abs (state_vector ), np .concatenate ((np .array ([1 ]),np .zeros (2 ** 4 - 1 )))))
63+
64+ def test_nonunitary_error_gate ():
65+ qubits = cirq .LineQubit .range (2 )
66+ circuit = cirq .Circuit (
67+ cirq .H (qubits [0 ]),
68+ cirq .CX (qubits [0 ], qubits [1 ]),
69+ cirq .amplitude_damp (0.5 ).on (qubits [1 ]),
70+ cirq .CX (qubits [1 ], qubits [0 ]),
71+ )
72+
73+ parallelized_circuit = parallelize (circuit )
74+
75+ assert len (parallelized_circuit .moments ) == 7
3776
3877RNG_STATE = np .random .RandomState (1902833 )
3978
0 commit comments