cirq-core 1.7.0.dev20250915211227__py3-none-any.whl → 1.7.0.dev20250917023732__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of cirq-core might be problematic. Click here for more details.
- cirq/_version.py +1 -1
- cirq/_version_test.py +1 -1
- cirq/circuits/circuit_operation_test.py +5 -0
- cirq/ops/classically_controlled_operation.py +3 -7
- cirq/ops/measure_util.py +7 -6
- cirq/ops/pauli_string_test.py +2 -2
- cirq/ops/raw_types.py +19 -2
- cirq/protocols/has_stabilizer_effect_protocol_test.py +11 -9
- cirq/protocols/has_unitary_protocol_test.py +3 -3
- cirq/protocols/json_serialization.py +3 -3
- cirq/protocols/json_serialization_test.py +31 -31
- cirq/protocols/kraus_protocol_test.py +5 -5
- cirq/protocols/measurement_key_protocol.py +31 -8
- cirq/protocols/mixture_protocol.py +1 -1
- cirq/protocols/mixture_protocol_test.py +7 -7
- cirq/protocols/mul_protocol_test.py +4 -4
- cirq/protocols/phase_protocol.py +13 -4
- cirq/protocols/pow_protocol_test.py +5 -5
- cirq/protocols/resolve_parameters.py +1 -1
- cirq/protocols/unitary_protocol_test.py +31 -19
- cirq/qis/clifford_tableau.py +14 -14
- cirq/qis/clifford_tableau_test.py +17 -17
- cirq/qis/entropy.py +1 -1
- cirq/qis/entropy_test.py +1 -1
- cirq/qis/states_test.py +54 -54
- cirq/sim/classical_simulator_test.py +56 -28
- cirq/sim/clifford/clifford_simulator.py +5 -5
- cirq/sim/clifford/clifford_simulator_test.py +50 -49
- cirq/sim/clifford/stabilizer_state_ch_form.py +9 -9
- cirq/sim/density_matrix_simulation_state.py +6 -6
- cirq/sim/density_matrix_simulator.py +1 -1
- cirq/sim/density_matrix_simulator_test.py +94 -84
- cirq/sim/density_matrix_utils_test.py +1 -1
- cirq/sim/mux_test.py +26 -26
- cirq/sim/simulation_product_state_test.py +7 -7
- cirq/sim/simulation_state.py +4 -4
- cirq/sim/simulation_state_base.py +1 -1
- cirq/sim/simulation_state_test.py +5 -5
- cirq/sim/simulator.py +2 -2
- cirq/sim/simulator_base_test.py +49 -35
- cirq/sim/simulator_test.py +39 -35
- cirq/sim/sparse_simulator.py +1 -1
- cirq/sim/sparse_simulator_test.py +92 -82
- cirq/sim/state_vector.py +1 -1
- cirq/sim/state_vector_simulation_state.py +7 -7
- cirq/sim/state_vector_simulator_test.py +9 -9
- cirq/sim/state_vector_test.py +37 -37
- cirq/study/result_test.py +20 -20
- cirq/study/sweepable_test.py +20 -20
- cirq/study/sweeps_test.py +43 -43
- cirq/testing/circuit_compare_test.py +16 -14
- cirq/testing/consistent_channels.py +2 -2
- cirq/testing/consistent_controlled_gate_op.py +1 -1
- cirq/testing/consistent_decomposition.py +4 -2
- cirq/testing/consistent_phase_by.py +1 -1
- cirq/testing/consistent_qasm.py +2 -2
- cirq/testing/consistent_qasm_test.py +3 -3
- cirq/transformers/eject_z.py +1 -0
- cirq/transformers/gauge_compiling/__init__.py +5 -0
- cirq/transformers/gauge_compiling/idle_moments_gauge.py +222 -0
- cirq/transformers/gauge_compiling/idle_moments_gauge_test.py +193 -0
- {cirq_core-1.7.0.dev20250915211227.dist-info → cirq_core-1.7.0.dev20250917023732.dist-info}/METADATA +1 -1
- {cirq_core-1.7.0.dev20250915211227.dist-info → cirq_core-1.7.0.dev20250917023732.dist-info}/RECORD +66 -64
- {cirq_core-1.7.0.dev20250915211227.dist-info → cirq_core-1.7.0.dev20250917023732.dist-info}/WHEEL +0 -0
- {cirq_core-1.7.0.dev20250915211227.dist-info → cirq_core-1.7.0.dev20250917023732.dist-info}/licenses/LICENSE +0 -0
- {cirq_core-1.7.0.dev20250915211227.dist-info → cirq_core-1.7.0.dev20250917023732.dist-info}/top_level.txt +0 -0
|
@@ -23,7 +23,7 @@ import sympy
|
|
|
23
23
|
import cirq
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
def test_x_gate():
|
|
26
|
+
def test_x_gate() -> None:
|
|
27
27
|
q0, q1 = cirq.LineQubit.range(2)
|
|
28
28
|
circuit = cirq.Circuit()
|
|
29
29
|
circuit.append(cirq.X(q0))
|
|
@@ -31,30 +31,33 @@ def test_x_gate():
|
|
|
31
31
|
circuit.append(cirq.X(q1))
|
|
32
32
|
circuit.append(cirq.measure((q0, q1), key='key'))
|
|
33
33
|
expected_results = {'key': np.array([[[1, 0]]], dtype=np.uint8)}
|
|
34
|
+
sim: cirq.ClassicalStateSimulator
|
|
34
35
|
sim = cirq.ClassicalStateSimulator()
|
|
35
36
|
results = sim.run(circuit, param_resolver=None, repetitions=1).records
|
|
36
37
|
np.testing.assert_equal(results, expected_results)
|
|
37
38
|
|
|
38
39
|
|
|
39
|
-
def test_CNOT():
|
|
40
|
+
def test_CNOT() -> None:
|
|
40
41
|
q0, q1 = cirq.LineQubit.range(2)
|
|
41
42
|
circuit = cirq.Circuit()
|
|
42
43
|
circuit.append(cirq.X(q0))
|
|
43
44
|
circuit.append(cirq.CNOT(q0, q1))
|
|
44
45
|
circuit.append(cirq.measure(q1, key='key'))
|
|
45
46
|
expected_results = {'key': np.array([[[1]]], dtype=np.uint8)}
|
|
47
|
+
sim: cirq.ClassicalStateSimulator
|
|
46
48
|
sim = cirq.ClassicalStateSimulator()
|
|
47
49
|
results = sim.run(circuit, param_resolver=None, repetitions=1).records
|
|
48
50
|
np.testing.assert_equal(results, expected_results)
|
|
49
51
|
|
|
50
52
|
|
|
51
|
-
def test_Swap():
|
|
53
|
+
def test_Swap() -> None:
|
|
52
54
|
q0, q1 = cirq.LineQubit.range(2)
|
|
53
55
|
circuit = cirq.Circuit()
|
|
54
56
|
circuit.append(cirq.X(q0))
|
|
55
57
|
circuit.append(cirq.SWAP(q0, q1))
|
|
56
58
|
circuit.append(cirq.measure((q0, q1), key='key'))
|
|
57
59
|
expected_results = {'key': np.array([[[0, 1]]], dtype=np.uint8)}
|
|
60
|
+
sim: cirq.ClassicalStateSimulator
|
|
58
61
|
sim = cirq.ClassicalStateSimulator()
|
|
59
62
|
results = sim.run(circuit, param_resolver=None, repetitions=1).records
|
|
60
63
|
np.testing.assert_equal(results, expected_results)
|
|
@@ -67,10 +70,11 @@ def test_Swap():
|
|
|
67
70
|
for n in np.random.randint(3, 8, size=10)
|
|
68
71
|
],
|
|
69
72
|
)
|
|
70
|
-
def test_qubit_permutation_gate(n, perm, state):
|
|
73
|
+
def test_qubit_permutation_gate(n, perm, state) -> None:
|
|
71
74
|
qubits = cirq.LineQubit.range(n)
|
|
72
75
|
perm_gate = cirq.QubitPermutationGate(perm)
|
|
73
76
|
circuit = cirq.Circuit(perm_gate(*qubits), cirq.measure(*qubits, key='key'))
|
|
77
|
+
sim: cirq.ClassicalStateSimulator
|
|
74
78
|
sim = cirq.ClassicalStateSimulator()
|
|
75
79
|
result = sim.simulate(circuit, initial_state=state)
|
|
76
80
|
expected = [0] * n
|
|
@@ -79,7 +83,7 @@ def test_qubit_permutation_gate(n, perm, state):
|
|
|
79
83
|
np.testing.assert_equal(result.measurements['key'], expected)
|
|
80
84
|
|
|
81
85
|
|
|
82
|
-
def test_CCNOT():
|
|
86
|
+
def test_CCNOT() -> None:
|
|
83
87
|
q0, q1, q2 = cirq.LineQubit.range(3)
|
|
84
88
|
circuit = cirq.Circuit()
|
|
85
89
|
circuit.append(cirq.CCNOT(q0, q1, q2))
|
|
@@ -97,13 +101,14 @@ def test_CCNOT():
|
|
|
97
101
|
expected_results = {
|
|
98
102
|
'key': np.array([[[0, 0, 0], [1, 0, 0], [0, 1, 0], [1, 1, 1]]], dtype=np.uint8)
|
|
99
103
|
}
|
|
104
|
+
sim: cirq.ClassicalStateSimulator
|
|
100
105
|
sim = cirq.ClassicalStateSimulator()
|
|
101
106
|
results = sim.run(circuit, param_resolver=None, repetitions=1).records
|
|
102
107
|
np.testing.assert_equal(results, expected_results)
|
|
103
108
|
|
|
104
109
|
|
|
105
110
|
@pytest.mark.parametrize(['initial_state'], [(list(x),) for x in product([0, 1], repeat=4)])
|
|
106
|
-
def test_CCCX(initial_state):
|
|
111
|
+
def test_CCCX(initial_state) -> None:
|
|
107
112
|
CCCX = cirq.CCNOT.controlled()
|
|
108
113
|
qubits = cirq.LineQubit.range(4)
|
|
109
114
|
|
|
@@ -114,13 +119,14 @@ def test_CCCX(initial_state):
|
|
|
114
119
|
final_state = initial_state.copy()
|
|
115
120
|
final_state[-1] ^= all(final_state[:-1])
|
|
116
121
|
|
|
122
|
+
sim: cirq.ClassicalStateSimulator
|
|
117
123
|
sim = cirq.ClassicalStateSimulator()
|
|
118
124
|
results = sim.simulate(circuit, initial_state=initial_state).measurements['key']
|
|
119
125
|
np.testing.assert_equal(results, final_state)
|
|
120
126
|
|
|
121
127
|
|
|
122
128
|
@pytest.mark.parametrize(['initial_state'], [(list(x),) for x in product([0, 1], repeat=3)])
|
|
123
|
-
def test_CSWAP(initial_state):
|
|
129
|
+
def test_CSWAP(initial_state) -> None:
|
|
124
130
|
CSWAP = cirq.SWAP.controlled()
|
|
125
131
|
qubits = cirq.LineQubit.range(3)
|
|
126
132
|
circuit = cirq.Circuit()
|
|
@@ -134,46 +140,50 @@ def test_CSWAP(initial_state):
|
|
|
134
140
|
b, c = c, b
|
|
135
141
|
final_state = [a, b, c]
|
|
136
142
|
|
|
143
|
+
sim: cirq.ClassicalStateSimulator
|
|
137
144
|
sim = cirq.ClassicalStateSimulator()
|
|
138
145
|
results = sim.simulate(circuit, initial_state=initial_state).measurements['key']
|
|
139
146
|
np.testing.assert_equal(results, final_state)
|
|
140
147
|
|
|
141
148
|
|
|
142
|
-
def test_measurement_gate():
|
|
149
|
+
def test_measurement_gate() -> None:
|
|
143
150
|
q0, q1 = cirq.LineQubit.range(2)
|
|
144
151
|
circuit = cirq.Circuit()
|
|
145
152
|
circuit.append(cirq.measure((q0, q1), key='key'))
|
|
146
153
|
expected_results = {'key': np.array([[[0, 0]]], dtype=np.uint8)}
|
|
154
|
+
sim: cirq.ClassicalStateSimulator
|
|
147
155
|
sim = cirq.ClassicalStateSimulator()
|
|
148
156
|
results = sim.run(circuit, param_resolver=None, repetitions=1).records
|
|
149
157
|
np.testing.assert_equal(results, expected_results)
|
|
150
158
|
|
|
151
159
|
|
|
152
|
-
def test_qubit_order():
|
|
160
|
+
def test_qubit_order() -> None:
|
|
153
161
|
q0, q1 = cirq.LineQubit.range(2)
|
|
154
162
|
circuit = cirq.Circuit()
|
|
155
163
|
circuit.append(cirq.CNOT(q0, q1))
|
|
156
164
|
circuit.append(cirq.X(q0))
|
|
157
165
|
circuit.append(cirq.measure((q0, q1), key='key'))
|
|
158
166
|
expected_results = {'key': np.array([[[1, 0]]], dtype=np.uint8)}
|
|
167
|
+
sim: cirq.ClassicalStateSimulator
|
|
159
168
|
sim = cirq.ClassicalStateSimulator()
|
|
160
169
|
results = sim.run(circuit, param_resolver=None, repetitions=1).records
|
|
161
170
|
np.testing.assert_equal(results, expected_results)
|
|
162
171
|
|
|
163
172
|
|
|
164
|
-
def test_same_key_instances():
|
|
173
|
+
def test_same_key_instances() -> None:
|
|
165
174
|
q0, q1 = cirq.LineQubit.range(2)
|
|
166
175
|
circuit = cirq.Circuit()
|
|
167
176
|
circuit.append(cirq.measure((q0, q1), key='key'))
|
|
168
177
|
circuit.append(cirq.X(q0))
|
|
169
178
|
circuit.append(cirq.measure((q0, q1), key='key'))
|
|
170
179
|
expected_results = {'key': np.array([[[0, 0], [1, 0]]], dtype=np.uint8)}
|
|
180
|
+
sim: cirq.ClassicalStateSimulator
|
|
171
181
|
sim = cirq.ClassicalStateSimulator()
|
|
172
182
|
results = sim.run(circuit, param_resolver=None, repetitions=1).records
|
|
173
183
|
np.testing.assert_equal(results, expected_results)
|
|
174
184
|
|
|
175
185
|
|
|
176
|
-
def test_same_key_instances_order():
|
|
186
|
+
def test_same_key_instances_order() -> None:
|
|
177
187
|
q0, q1 = cirq.LineQubit.range(2)
|
|
178
188
|
circuit = cirq.Circuit()
|
|
179
189
|
circuit.append(cirq.X(q0))
|
|
@@ -181,12 +191,13 @@ def test_same_key_instances_order():
|
|
|
181
191
|
circuit.append(cirq.X(q0))
|
|
182
192
|
circuit.append(cirq.measure((q1, q0), key='key'))
|
|
183
193
|
expected_results = {'key': np.array([[[1, 0], [0, 0]]], dtype=np.uint8)}
|
|
194
|
+
sim: cirq.ClassicalStateSimulator
|
|
184
195
|
sim = cirq.ClassicalStateSimulator()
|
|
185
196
|
results = sim.run(circuit, param_resolver=None, repetitions=1).records
|
|
186
197
|
np.testing.assert_equal(results, expected_results)
|
|
187
198
|
|
|
188
199
|
|
|
189
|
-
def test_repetitions():
|
|
200
|
+
def test_repetitions() -> None:
|
|
190
201
|
q0 = cirq.LineQubit.range(1)
|
|
191
202
|
circuit = cirq.Circuit()
|
|
192
203
|
circuit.append(cirq.measure(q0, key='key'))
|
|
@@ -195,12 +206,13 @@ def test_repetitions():
|
|
|
195
206
|
[[[0]], [[0]], [[0]], [[0]], [[0]], [[0]], [[0]], [[0]], [[0]], [[0]]], dtype=np.uint8
|
|
196
207
|
)
|
|
197
208
|
}
|
|
209
|
+
sim: cirq.ClassicalStateSimulator
|
|
198
210
|
sim = cirq.ClassicalStateSimulator()
|
|
199
211
|
results = sim.run(circuit, param_resolver=None, repetitions=10).records
|
|
200
212
|
np.testing.assert_equal(results, expected_results)
|
|
201
213
|
|
|
202
214
|
|
|
203
|
-
def test_multiple_gates():
|
|
215
|
+
def test_multiple_gates() -> None:
|
|
204
216
|
q0, q1 = cirq.LineQubit.range(2)
|
|
205
217
|
circuit = cirq.Circuit()
|
|
206
218
|
circuit.append(cirq.X(q0))
|
|
@@ -210,12 +222,13 @@ def test_multiple_gates():
|
|
|
210
222
|
circuit.append(cirq.X(q1))
|
|
211
223
|
circuit.append(cirq.measure((q0, q1), key='key'))
|
|
212
224
|
expected_results = {'key': np.array([[[1, 0]]], dtype=np.uint8)}
|
|
225
|
+
sim: cirq.ClassicalStateSimulator
|
|
213
226
|
sim = cirq.ClassicalStateSimulator()
|
|
214
227
|
results = sim.run(circuit, param_resolver=None, repetitions=1).records
|
|
215
228
|
np.testing.assert_equal(results, expected_results)
|
|
216
229
|
|
|
217
230
|
|
|
218
|
-
def test_multiple_gates_order():
|
|
231
|
+
def test_multiple_gates_order() -> None:
|
|
219
232
|
q0, q1 = cirq.LineQubit.range(2)
|
|
220
233
|
circuit = cirq.Circuit()
|
|
221
234
|
circuit.append(cirq.X(q0))
|
|
@@ -223,20 +236,22 @@ def test_multiple_gates_order():
|
|
|
223
236
|
circuit.append(cirq.CNOT(q1, q0))
|
|
224
237
|
circuit.append(cirq.measure((q0, q1), key='key'))
|
|
225
238
|
expected_results = {'key': np.array([[[0, 1]]], dtype=np.uint8)}
|
|
239
|
+
sim: cirq.ClassicalStateSimulator
|
|
226
240
|
sim = cirq.ClassicalStateSimulator()
|
|
227
241
|
results = sim.run(circuit, param_resolver=None, repetitions=1).records
|
|
228
242
|
np.testing.assert_equal(results, expected_results)
|
|
229
243
|
|
|
230
244
|
|
|
231
|
-
def test_tuple_initial_state():
|
|
245
|
+
def test_tuple_initial_state() -> None:
|
|
232
246
|
q0, q1, q2 = cirq.LineQubit.range(3)
|
|
233
247
|
circuit = cirq.Circuit(cirq.X(q0), cirq.measure(q0, q1, q2, key='key'))
|
|
248
|
+
sim: cirq.ClassicalStateSimulator
|
|
234
249
|
sim = cirq.ClassicalStateSimulator()
|
|
235
250
|
result = sim.simulate(circuit, initial_state=(0, 1, 0))
|
|
236
251
|
np.testing.assert_equal(result.measurements['key'], [1, 1, 0])
|
|
237
252
|
|
|
238
253
|
|
|
239
|
-
def test_param_resolver():
|
|
254
|
+
def test_param_resolver() -> None:
|
|
240
255
|
gate = cirq.CNOT ** sympy.Symbol('t')
|
|
241
256
|
q0, q1 = cirq.LineQubit.range(2)
|
|
242
257
|
circuit = cirq.Circuit()
|
|
@@ -244,6 +259,7 @@ def test_param_resolver():
|
|
|
244
259
|
circuit.append(gate(q0, q1))
|
|
245
260
|
circuit.append(cirq.measure((q1), key='key'))
|
|
246
261
|
resolver = cirq.ParamResolver({'t': 0})
|
|
262
|
+
sim: cirq.ClassicalStateSimulator
|
|
247
263
|
sim = cirq.ClassicalStateSimulator()
|
|
248
264
|
results_with_parameter_zero = sim.run(circuit, param_resolver=resolver, repetitions=1).records
|
|
249
265
|
resolver = cirq.ParamResolver({'t': 1})
|
|
@@ -252,33 +268,37 @@ def test_param_resolver():
|
|
|
252
268
|
np.testing.assert_equal(results_with_parameter_one, {'key': np.array([[[1]]], dtype=np.uint8)})
|
|
253
269
|
|
|
254
270
|
|
|
255
|
-
def test_unknown_gates():
|
|
271
|
+
def test_unknown_gates() -> None:
|
|
256
272
|
gate = cirq.Y
|
|
257
273
|
q = cirq.LineQubit(0)
|
|
258
274
|
circuit = cirq.Circuit(gate(q), cirq.measure((q), key='key'))
|
|
275
|
+
sim: cirq.ClassicalStateSimulator
|
|
259
276
|
sim = cirq.ClassicalStateSimulator()
|
|
260
277
|
with pytest.raises(ValueError):
|
|
261
278
|
_ = sim.run(circuit).records
|
|
262
279
|
|
|
263
280
|
|
|
264
|
-
def test_incompatible_measurements():
|
|
281
|
+
def test_incompatible_measurements() -> None:
|
|
265
282
|
qs = cirq.LineQubit.range(2)
|
|
266
283
|
c = cirq.Circuit(cirq.measure(qs, key='key'), cirq.measure(qs[0], key='key'))
|
|
284
|
+
sim: cirq.ClassicalStateSimulator
|
|
267
285
|
sim = cirq.ClassicalStateSimulator()
|
|
268
286
|
with pytest.raises(ValueError):
|
|
269
287
|
_ = sim.run(c)
|
|
270
288
|
|
|
271
289
|
|
|
272
|
-
def test_compatible_measurement():
|
|
290
|
+
def test_compatible_measurement() -> None:
|
|
273
291
|
qs = cirq.LineQubit.range(2)
|
|
274
292
|
c = cirq.Circuit(cirq.measure(qs, key='key'), cirq.X.on_each(qs), cirq.measure(qs, key='key'))
|
|
293
|
+
sim: cirq.ClassicalStateSimulator
|
|
275
294
|
sim = cirq.ClassicalStateSimulator()
|
|
276
295
|
res = sim.run(c, repetitions=3).records
|
|
277
296
|
np.testing.assert_equal(res['key'], np.array([[[0, 0], [1, 1]]] * 3, dtype=np.uint8))
|
|
278
297
|
|
|
279
298
|
|
|
280
|
-
def test_simulate_sweeps_param_resolver():
|
|
299
|
+
def test_simulate_sweeps_param_resolver() -> None:
|
|
281
300
|
q0, q1 = cirq.LineQubit.range(2)
|
|
301
|
+
simulator: cirq.ClassicalStateSimulator
|
|
282
302
|
simulator = cirq.ClassicalStateSimulator()
|
|
283
303
|
for b0 in [0, 1]:
|
|
284
304
|
for b1 in [0, 1]:
|
|
@@ -295,18 +315,22 @@ def test_simulate_sweeps_param_resolver():
|
|
|
295
315
|
assert results[1].params == params[1]
|
|
296
316
|
|
|
297
317
|
|
|
298
|
-
def test_create_partial_simulation_state_from_int_with_no_qubits():
|
|
318
|
+
def test_create_partial_simulation_state_from_int_with_no_qubits() -> None:
|
|
319
|
+
sim: cirq.ClassicalStateSimulator
|
|
299
320
|
sim = cirq.ClassicalStateSimulator()
|
|
300
321
|
initial_state = 5
|
|
301
322
|
qs = None
|
|
302
323
|
classical_data = cirq.value.ClassicalDataDictionaryStore()
|
|
303
324
|
with pytest.raises(ValueError):
|
|
304
325
|
sim._create_partial_simulation_state(
|
|
305
|
-
initial_state=initial_state,
|
|
326
|
+
initial_state=initial_state,
|
|
327
|
+
qubits=qs, # type: ignore[arg-type]
|
|
328
|
+
classical_data=classical_data,
|
|
306
329
|
)
|
|
307
330
|
|
|
308
331
|
|
|
309
|
-
def test_create_partial_simulation_state_from_invalid_state():
|
|
332
|
+
def test_create_partial_simulation_state_from_invalid_state() -> None:
|
|
333
|
+
sim: cirq.ClassicalStateSimulator
|
|
310
334
|
sim = cirq.ClassicalStateSimulator()
|
|
311
335
|
initial_state = None
|
|
312
336
|
qs = cirq.LineQubit.range(2)
|
|
@@ -317,7 +341,8 @@ def test_create_partial_simulation_state_from_invalid_state():
|
|
|
317
341
|
)
|
|
318
342
|
|
|
319
343
|
|
|
320
|
-
def test_create_partial_simulation_state_from_int():
|
|
344
|
+
def test_create_partial_simulation_state_from_int() -> None:
|
|
345
|
+
sim: cirq.ClassicalStateSimulator
|
|
321
346
|
sim = cirq.ClassicalStateSimulator()
|
|
322
347
|
initial_state = 15
|
|
323
348
|
qs = cirq.LineQubit.range(4)
|
|
@@ -329,7 +354,8 @@ def test_create_partial_simulation_state_from_int():
|
|
|
329
354
|
assert result == expected_result
|
|
330
355
|
|
|
331
356
|
|
|
332
|
-
def test_create_valid_partial_simulation_state_from_list():
|
|
357
|
+
def test_create_valid_partial_simulation_state_from_list() -> None:
|
|
358
|
+
sim: cirq.ClassicalStateSimulator
|
|
333
359
|
sim = cirq.ClassicalStateSimulator()
|
|
334
360
|
initial_state = [1, 1, 1, 1]
|
|
335
361
|
qs = cirq.LineQubit.range(4)
|
|
@@ -341,7 +367,8 @@ def test_create_valid_partial_simulation_state_from_list():
|
|
|
341
367
|
assert result == expected_result
|
|
342
368
|
|
|
343
369
|
|
|
344
|
-
def test_create_valid_partial_simulation_state_from_np():
|
|
370
|
+
def test_create_valid_partial_simulation_state_from_np() -> None:
|
|
371
|
+
sim: cirq.ClassicalStateSimulator
|
|
345
372
|
sim = cirq.ClassicalStateSimulator()
|
|
346
373
|
initial_state = np.array([1, 1])
|
|
347
374
|
qs = cirq.LineQubit.range(2)
|
|
@@ -355,10 +382,11 @@ def test_create_valid_partial_simulation_state_from_np():
|
|
|
355
382
|
np.testing.assert_equal(result, expected_result)
|
|
356
383
|
|
|
357
384
|
|
|
358
|
-
def test_create_invalid_partial_simulation_state_from_np():
|
|
385
|
+
def test_create_invalid_partial_simulation_state_from_np() -> None:
|
|
359
386
|
initial_state = np.array([[1, 1], [1, 1]])
|
|
360
387
|
qs = cirq.LineQubit.range(2)
|
|
361
388
|
classical_data = cirq.value.ClassicalDataDictionaryStore()
|
|
389
|
+
sim: cirq.ClassicalStateSimulator
|
|
362
390
|
sim = cirq.ClassicalStateSimulator()
|
|
363
391
|
|
|
364
392
|
with pytest.raises(ValueError):
|
|
@@ -367,7 +395,7 @@ def test_create_invalid_partial_simulation_state_from_np():
|
|
|
367
395
|
)
|
|
368
396
|
|
|
369
397
|
|
|
370
|
-
def test_noise_model():
|
|
398
|
+
def test_noise_model() -> None:
|
|
371
399
|
noise_model = cirq.NoiseModel.from_noise_model_like(cirq.depolarize(p=0.01))
|
|
372
400
|
with pytest.raises(ValueError):
|
|
373
401
|
cirq.ClassicalStateSimulator(noise=noise_model)
|
|
@@ -161,7 +161,7 @@ class CliffordSimulatorStepResult(
|
|
|
161
161
|
sim_state: The qubit:SimulationState lookup for this step.
|
|
162
162
|
"""
|
|
163
163
|
super().__init__(sim_state)
|
|
164
|
-
self._clifford_state = None
|
|
164
|
+
self._clifford_state: CliffordState | None = None
|
|
165
165
|
|
|
166
166
|
def __str__(self) -> str:
|
|
167
167
|
def bitstring(vals):
|
|
@@ -183,7 +183,7 @@ class CliffordSimulatorStepResult(
|
|
|
183
183
|
p.text("cirq.CliffordSimulatorStateResult(...)" if cycle else self.__str__())
|
|
184
184
|
|
|
185
185
|
@property
|
|
186
|
-
def state(self):
|
|
186
|
+
def state(self) -> CliffordState:
|
|
187
187
|
if self._clifford_state is None:
|
|
188
188
|
clifford_state = CliffordState(self._qubit_mapping)
|
|
189
189
|
clifford_state.ch_form = self._merged_sim_state.state.copy()
|
|
@@ -240,10 +240,10 @@ class CliffordState:
|
|
|
240
240
|
def to_numpy(self) -> np.ndarray:
|
|
241
241
|
return self.ch_form.to_state_vector()
|
|
242
242
|
|
|
243
|
-
def state_vector(self):
|
|
243
|
+
def state_vector(self) -> np.ndarray:
|
|
244
244
|
return self.ch_form.state_vector()
|
|
245
245
|
|
|
246
|
-
def apply_unitary(self, op: cirq.Operation):
|
|
246
|
+
def apply_unitary(self, op: cirq.Operation) -> None:
|
|
247
247
|
ch_form_args = clifford.StabilizerChFormSimulationState(
|
|
248
248
|
prng=np.random.RandomState(), qubits=self.qubit_map.keys(), initial_state=self.ch_form
|
|
249
249
|
)
|
|
@@ -259,7 +259,7 @@ class CliffordState:
|
|
|
259
259
|
measurements: dict[str, list[int]],
|
|
260
260
|
prng: np.random.RandomState,
|
|
261
261
|
collapse_state_vector=True,
|
|
262
|
-
):
|
|
262
|
+
) -> None:
|
|
263
263
|
if not isinstance(op.gate, cirq.MeasurementGate):
|
|
264
264
|
raise TypeError(
|
|
265
265
|
f'apply_measurement only supports cirq.MeasurementGate operations. '
|