cirq-core 1.6.0.dev20250508231110__py3-none-any.whl → 1.6.0.dev20250512192405__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 +2 -2
- cirq/circuits/_block_diagram_drawer_test.py +6 -6
- cirq/circuits/_box_drawing_character_data_test.py +1 -1
- cirq/circuits/insert_strategy_test.py +2 -2
- cirq/circuits/optimization_pass_test.py +5 -5
- cirq/contrib/acquaintance/inspection_utils_test.py +2 -2
- cirq/contrib/acquaintance/mutation_utils_test.py +2 -2
- cirq/contrib/acquaintance/optimizers_test.py +1 -1
- cirq/contrib/acquaintance/shift_test.py +6 -6
- cirq/contrib/acquaintance/strategies/cubic_test.py +2 -2
- cirq/contrib/acquaintance/topological_sort_test.py +1 -1
- cirq/contrib/hacks/disable_validation_test.py +1 -1
- cirq/contrib/json_test.py +3 -3
- cirq/contrib/noise_models/noise_models_test.py +8 -8
- cirq/contrib/paulistring/clifford_optimize_test.py +5 -5
- cirq/contrib/paulistring/clifford_target_gateset_test.py +11 -11
- cirq/contrib/paulistring/optimize_test.py +3 -3
- cirq/contrib/paulistring/pauli_string_dag_test.py +1 -1
- cirq/contrib/paulistring/pauli_string_optimize_test.py +3 -3
- cirq/contrib/paulistring/recombine_test.py +1 -1
- cirq/contrib/paulistring/separate_test.py +1 -1
- cirq/contrib/qasm_import/_parser_test.py +67 -67
- cirq/contrib/qcircuit/qcircuit_pdf_test.py +1 -1
- cirq/contrib/qcircuit/qcircuit_test.py +6 -6
- cirq/contrib/routing/greedy_test.py +2 -2
- cirq/contrib/routing/initialization_test.py +3 -3
- cirq/contrib/svg/svg_test.py +5 -5
- cirq/devices/device_test.py +4 -4
- cirq/devices/insertion_noise_model_test.py +5 -5
- cirq/devices/named_topologies_test.py +10 -10
- cirq/devices/noise_properties_test.py +1 -1
- cirq/experiments/n_qubit_tomography_test.py +5 -5
- cirq/experiments/t1_decay_experiment_test.py +11 -11
- cirq/interop/quirk/cells/arithmetic_cells_test.py +14 -14
- cirq/interop/quirk/cells/control_cells_test.py +5 -5
- cirq/interop/quirk/cells/frequency_space_cells_test.py +1 -1
- cirq/interop/quirk/cells/ignored_cells_test.py +1 -1
- cirq/interop/quirk/cells/input_cells_test.py +5 -5
- cirq/interop/quirk/cells/input_rotation_cells_test.py +7 -7
- cirq/interop/quirk/cells/measurement_cells_test.py +1 -1
- cirq/interop/quirk/cells/qubit_permutation_cells_test.py +7 -7
- cirq/interop/quirk/cells/scalar_cells_test.py +1 -1
- cirq/interop/quirk/cells/single_qubit_rotation_cells_test.py +3 -3
- cirq/interop/quirk/cells/swap_cell_test.py +4 -4
- cirq/interop/quirk/cells/testing_test.py +6 -6
- cirq/interop/quirk/cells/unsupported_cells_test.py +2 -2
- cirq/linalg/combinators_test.py +7 -7
- cirq/linalg/diagonalize_test.py +10 -10
- cirq/linalg/operator_spaces_test.py +11 -11
- cirq/linalg/tolerance_test.py +4 -4
- cirq/neutral_atoms/convert_to_neutral_atom_gates_test.py +1 -1
- cirq/ops/arithmetic_operation_test.py +2 -2
- cirq/ops/common_channels_test.py +80 -80
- cirq/ops/fsim_gate_test.py +26 -26
- cirq/ops/gate_features_test.py +3 -3
- cirq/ops/greedy_qubit_manager_test.py +3 -3
- cirq/ops/mixed_unitary_channel_test.py +11 -11
- cirq/ops/parallel_gate_test.py +16 -16
- cirq/ops/parity_gates_test.py +34 -32
- cirq/ops/pauli_gates_test.py +20 -20
- cirq/ops/pauli_interaction_gate_test.py +8 -8
- cirq/ops/pauli_sum_exponential_test.py +10 -10
- cirq/ops/permutation_gate_test.py +8 -8
- cirq/ops/phased_iswap_gate_test.py +15 -15
- cirq/ops/qubit_manager_test.py +4 -4
- cirq/ops/random_gate_channel_test.py +11 -11
- cirq/ops/state_preparation_channel_test.py +8 -8
- cirq/ops/swap_gates_test.py +17 -17
- cirq/ops/tags_test.py +2 -2
- cirq/ops/three_qubit_gates_test.py +17 -17
- cirq/ops/two_qubit_diagonal_gate_test.py +8 -8
- cirq/ops/uniform_superposition_gate_test.py +3 -3
- cirq/protocols/act_on_protocol_test.py +6 -6
- cirq/protocols/circuit_diagram_info_protocol_test.py +13 -13
- cirq/protocols/control_key_protocol_test.py +1 -1
- cirq/protocols/decompose_protocol_test.py +12 -12
- cirq/protocols/equal_up_to_global_phase_protocol_test.py +6 -6
- cirq/protocols/has_stabilizer_effect_protocol_test.py +5 -5
- cirq/protocols/has_unitary_protocol_test.py +8 -8
- cirq/protocols/hash_from_pickle_test.py +1 -1
- cirq/protocols/inverse_protocol_test.py +2 -2
- cirq/protocols/kraus_protocol_test.py +9 -9
- cirq/protocols/measurement_key_protocol_test.py +10 -10
- cirq/protocols/pauli_expansion_protocol_test.py +2 -2
- cirq/protocols/phase_protocol_test.py +1 -1
- cirq/protocols/qasm_test.py +3 -3
- cirq/protocols/qid_shape_protocol_test.py +1 -1
- cirq/protocols/resolve_parameters_test.py +5 -5
- cirq/protocols/trace_distance_bound_test.py +1 -1
- cirq/qis/channels_test.py +16 -16
- cirq/qis/measures_test.py +16 -14
- cirq/qis/noise_utils_test.py +7 -7
- cirq/sim/clifford/clifford_tableau_simulation_state_test.py +3 -3
- cirq/sim/clifford/stabilizer_ch_form_simulation_state_test.py +6 -6
- cirq/sim/clifford/stabilizer_sampler_test.py +2 -2
- cirq/sim/clifford/stabilizer_simulation_state_test.py +4 -4
- cirq/sim/clifford/stabilizer_state_ch_form_test.py +2 -2
- cirq/sim/density_matrix_simulation_state_test.py +8 -8
- cirq/sim/density_matrix_utils_test.py +36 -36
- cirq/sim/simulation_product_state_test.py +22 -22
- cirq/sim/simulation_state_test.py +12 -12
- cirq/sim/simulation_utils_test.py +1 -1
- cirq/sim/state_vector_simulation_state_test.py +12 -12
- cirq/study/flatten_expressions_test.py +11 -11
- cirq/study/resolver_test.py +20 -20
- cirq/testing/consistent_act_on_test.py +1 -1
- cirq/testing/consistent_channels_test.py +8 -8
- cirq/testing/consistent_controlled_gate_op_test.py +2 -2
- cirq/testing/consistent_decomposition_test.py +2 -2
- cirq/testing/consistent_pauli_expansion_test.py +1 -1
- cirq/testing/consistent_phase_by_test.py +1 -1
- cirq/testing/consistent_qasm_test.py +1 -1
- cirq/testing/consistent_specified_has_unitary_test.py +4 -4
- cirq/testing/consistent_unitary_test.py +2 -2
- cirq/testing/deprecation_test.py +2 -2
- cirq/testing/devices_test.py +4 -4
- cirq/testing/equivalent_basis_map_test.py +2 -2
- cirq/testing/equivalent_repr_eval_test.py +3 -3
- cirq/testing/gate_features_test.py +5 -5
- cirq/testing/json_test.py +3 -3
- cirq/testing/lin_alg_utils_test.py +12 -12
- cirq/testing/logs_test.py +7 -7
- cirq/testing/no_identifier_qubit_test.py +3 -3
- cirq/testing/op_tree_test.py +1 -1
- cirq/testing/order_tester_test.py +6 -6
- cirq/testing/pytest_utils_test.py +2 -2
- cirq/testing/random_circuit_test.py +5 -5
- cirq/testing/repr_pretty_tester_test.py +3 -3
- cirq/testing/routing_devices_test.py +6 -6
- cirq/testing/sample_circuits_test.py +1 -1
- cirq/testing/sample_gates_test.py +2 -2
- cirq/transformers/analytical_decompositions/pauli_string_decomposition_test.py +3 -3
- cirq/transformers/analytical_decompositions/three_qubit_decomposition_test.py +7 -7
- cirq/transformers/analytical_decompositions/two_qubit_to_cz_test.py +6 -6
- cirq/transformers/analytical_decompositions/two_qubit_to_fsim_test.py +5 -5
- cirq/transformers/analytical_decompositions/two_qubit_to_ms_test.py +1 -1
- cirq/transformers/drop_empty_moments_test.py +2 -2
- cirq/transformers/eject_phased_paulis_test.py +9 -9
- cirq/transformers/heuristic_decompositions/two_qubit_gate_tabulation_test.py +7 -7
- cirq/transformers/insertion_sort_test.py +1 -1
- cirq/transformers/merge_k_qubit_gates_test.py +9 -9
- cirq/transformers/qubit_management_transformers_test.py +3 -3
- cirq/transformers/randomized_measurements_test.py +8 -4
- cirq/transformers/routing/line_initial_mapper_test.py +5 -5
- cirq/transformers/routing/route_circuit_cqc_test.py +13 -13
- cirq/transformers/routing/visualize_routed_circuit_test.py +2 -2
- cirq/transformers/synchronize_terminal_measurements_test.py +10 -10
- cirq/transformers/target_gatesets/compilation_target_gateset_test.py +8 -8
- cirq/transformers/target_gatesets/cz_gateset_test.py +17 -17
- cirq/transformers/target_gatesets/sqrt_iswap_gateset_test.py +23 -23
- cirq/value/angle_test.py +3 -3
- cirq/value/classical_data_test.py +8 -8
- cirq/value/periodic_value_test.py +9 -7
- cirq/value/probability_test.py +2 -2
- cirq/value/value_equality_attr_test.py +11 -11
- cirq/vis/histogram_test.py +2 -2
- cirq/vis/state_histogram_test.py +5 -5
- cirq/vis/vis_utils_test.py +1 -1
- cirq/work/observable_grouping_test.py +8 -8
- cirq/work/observable_readout_calibration_test.py +1 -1
- cirq/work/zeros_sampler_test.py +4 -4
- {cirq_core-1.6.0.dev20250508231110.dist-info → cirq_core-1.6.0.dev20250512192405.dist-info}/METADATA +1 -1
- {cirq_core-1.6.0.dev20250508231110.dist-info → cirq_core-1.6.0.dev20250512192405.dist-info}/RECORD +167 -167
- {cirq_core-1.6.0.dev20250508231110.dist-info → cirq_core-1.6.0.dev20250512192405.dist-info}/WHEEL +1 -1
- {cirq_core-1.6.0.dev20250508231110.dist-info → cirq_core-1.6.0.dev20250512192405.dist-info}/licenses/LICENSE +0 -0
- {cirq_core-1.6.0.dev20250508231110.dist-info → cirq_core-1.6.0.dev20250512192405.dist-info}/top_level.txt +0 -0
|
@@ -21,7 +21,7 @@ import cirq
|
|
|
21
21
|
import cirq.testing
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
def test_sample_density_matrix_big_endian():
|
|
24
|
+
def test_sample_density_matrix_big_endian() -> None:
|
|
25
25
|
results = []
|
|
26
26
|
for x in range(8):
|
|
27
27
|
matrix = cirq.to_valid_density_matrix(x, 3)
|
|
@@ -32,7 +32,7 @@ def test_sample_density_matrix_big_endian():
|
|
|
32
32
|
np.testing.assert_equal(result, expected)
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
def test_sample_density_matrix_partial_indices():
|
|
35
|
+
def test_sample_density_matrix_partial_indices() -> None:
|
|
36
36
|
for index in range(3):
|
|
37
37
|
for x in range(8):
|
|
38
38
|
matrix = cirq.to_valid_density_matrix(x, 3)
|
|
@@ -41,14 +41,14 @@ def test_sample_density_matrix_partial_indices():
|
|
|
41
41
|
)
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
def test_sample_density_matrix_partial_indices_oder():
|
|
44
|
+
def test_sample_density_matrix_partial_indices_oder() -> None:
|
|
45
45
|
for x in range(8):
|
|
46
46
|
matrix = cirq.to_valid_density_matrix(x, 3)
|
|
47
47
|
expected = [[bool(1 & (x >> 0)), bool(1 & (x >> 1))]]
|
|
48
48
|
np.testing.assert_equal(cirq.sample_density_matrix(matrix, [2, 1]), expected)
|
|
49
49
|
|
|
50
50
|
|
|
51
|
-
def test_sample_density_matrix_partial_indices_all_orders():
|
|
51
|
+
def test_sample_density_matrix_partial_indices_all_orders() -> None:
|
|
52
52
|
for perm in itertools.permutations([0, 1, 2]):
|
|
53
53
|
for x in range(8):
|
|
54
54
|
matrix = cirq.to_valid_density_matrix(x, 3)
|
|
@@ -56,7 +56,7 @@ def test_sample_density_matrix_partial_indices_all_orders():
|
|
|
56
56
|
np.testing.assert_equal(cirq.sample_density_matrix(matrix, perm), expected)
|
|
57
57
|
|
|
58
58
|
|
|
59
|
-
def test_sample_density_matrix():
|
|
59
|
+
def test_sample_density_matrix() -> None:
|
|
60
60
|
state = np.zeros(8, dtype=np.complex64)
|
|
61
61
|
state[0] = 1 / np.sqrt(2)
|
|
62
62
|
state[2] = 1 / np.sqrt(2)
|
|
@@ -72,7 +72,7 @@ def test_sample_density_matrix():
|
|
|
72
72
|
np.testing.assert_equal(cirq.sample_density_matrix(matrix, [0]), [[False]])
|
|
73
73
|
|
|
74
74
|
|
|
75
|
-
def test_sample_density_matrix_seed():
|
|
75
|
+
def test_sample_density_matrix_seed() -> None:
|
|
76
76
|
density_matrix = 0.5 * np.eye(2)
|
|
77
77
|
|
|
78
78
|
samples = cirq.sample_density_matrix(density_matrix, [0], repetitions=10, seed=1234)
|
|
@@ -90,12 +90,12 @@ def test_sample_density_matrix_seed():
|
|
|
90
90
|
)
|
|
91
91
|
|
|
92
92
|
|
|
93
|
-
def test_sample_empty_density_matrix():
|
|
93
|
+
def test_sample_empty_density_matrix() -> None:
|
|
94
94
|
matrix = np.zeros(shape=())
|
|
95
95
|
np.testing.assert_almost_equal(cirq.sample_density_matrix(matrix, []), [[]])
|
|
96
96
|
|
|
97
97
|
|
|
98
|
-
def test_sample_density_matrix_no_repetitions():
|
|
98
|
+
def test_sample_density_matrix_no_repetitions() -> None:
|
|
99
99
|
matrix = cirq.to_valid_density_matrix(0, 3)
|
|
100
100
|
np.testing.assert_almost_equal(
|
|
101
101
|
cirq.sample_density_matrix(matrix, [1], repetitions=0), np.zeros(shape=(0, 1))
|
|
@@ -105,7 +105,7 @@ def test_sample_density_matrix_no_repetitions():
|
|
|
105
105
|
)
|
|
106
106
|
|
|
107
107
|
|
|
108
|
-
def test_sample_density_matrix_repetitions():
|
|
108
|
+
def test_sample_density_matrix_repetitions() -> None:
|
|
109
109
|
for perm in itertools.permutations([0, 1, 2]):
|
|
110
110
|
for x in range(8):
|
|
111
111
|
matrix = cirq.to_valid_density_matrix(x, 3)
|
|
@@ -115,30 +115,30 @@ def test_sample_density_matrix_repetitions():
|
|
|
115
115
|
np.testing.assert_equal(result, expected)
|
|
116
116
|
|
|
117
117
|
|
|
118
|
-
def test_sample_density_matrix_negative_repetitions():
|
|
118
|
+
def test_sample_density_matrix_negative_repetitions() -> None:
|
|
119
119
|
matrix = cirq.to_valid_density_matrix(0, 3)
|
|
120
120
|
with pytest.raises(ValueError, match='-1'):
|
|
121
121
|
cirq.sample_density_matrix(matrix, [1], repetitions=-1)
|
|
122
122
|
|
|
123
123
|
|
|
124
|
-
def test_sample_density_matrix_not_square():
|
|
124
|
+
def test_sample_density_matrix_not_square() -> None:
|
|
125
125
|
with pytest.raises(ValueError, match='not square'):
|
|
126
126
|
cirq.sample_density_matrix(np.array([1, 0, 0]), [1])
|
|
127
127
|
|
|
128
128
|
|
|
129
|
-
def test_sample_density_matrix_not_power_of_two():
|
|
129
|
+
def test_sample_density_matrix_not_power_of_two() -> None:
|
|
130
130
|
with pytest.raises(ValueError, match='power of two'):
|
|
131
131
|
cirq.sample_density_matrix(np.ones((3, 3)) / 3, [1])
|
|
132
132
|
with pytest.raises(ValueError, match='power of two'):
|
|
133
133
|
cirq.sample_density_matrix(np.ones((2, 3, 2, 3)) / 6, [1])
|
|
134
134
|
|
|
135
135
|
|
|
136
|
-
def test_sample_density_matrix_higher_powers_of_two():
|
|
136
|
+
def test_sample_density_matrix_higher_powers_of_two() -> None:
|
|
137
137
|
with pytest.raises(ValueError, match='powers of two'):
|
|
138
138
|
cirq.sample_density_matrix(np.ones((2, 4, 2, 4)) / 8, [1])
|
|
139
139
|
|
|
140
140
|
|
|
141
|
-
def test_sample_density_matrix_out_of_range():
|
|
141
|
+
def test_sample_density_matrix_out_of_range() -> None:
|
|
142
142
|
matrix = cirq.to_valid_density_matrix(0, 3)
|
|
143
143
|
with pytest.raises(IndexError, match='-2'):
|
|
144
144
|
cirq.sample_density_matrix(matrix, [-2])
|
|
@@ -146,13 +146,13 @@ def test_sample_density_matrix_out_of_range():
|
|
|
146
146
|
cirq.sample_density_matrix(matrix, [3])
|
|
147
147
|
|
|
148
148
|
|
|
149
|
-
def test_sample_density_matrix_no_indices():
|
|
149
|
+
def test_sample_density_matrix_no_indices() -> None:
|
|
150
150
|
matrix = cirq.to_valid_density_matrix(0, 3)
|
|
151
151
|
bits = cirq.sample_density_matrix(matrix, [])
|
|
152
152
|
np.testing.assert_almost_equal(bits, np.zeros(shape=(1, 0)))
|
|
153
153
|
|
|
154
154
|
|
|
155
|
-
def test_sample_density_matrix_validate_qid_shape():
|
|
155
|
+
def test_sample_density_matrix_validate_qid_shape() -> None:
|
|
156
156
|
matrix = cirq.to_valid_density_matrix(0, 3)
|
|
157
157
|
cirq.sample_density_matrix(matrix, [], qid_shape=(2, 2, 2))
|
|
158
158
|
with pytest.raises(ValueError, match='Matrix size does not match qid shape'):
|
|
@@ -163,7 +163,7 @@ def test_sample_density_matrix_validate_qid_shape():
|
|
|
163
163
|
cirq.sample_density_matrix(matrix2, [], qid_shape=(2, 2, 2))
|
|
164
164
|
|
|
165
165
|
|
|
166
|
-
def test_measure_density_matrix_computational_basis():
|
|
166
|
+
def test_measure_density_matrix_computational_basis() -> None:
|
|
167
167
|
results = []
|
|
168
168
|
for x in range(8):
|
|
169
169
|
matrix = cirq.to_valid_density_matrix(x, 3)
|
|
@@ -174,7 +174,7 @@ def test_measure_density_matrix_computational_basis():
|
|
|
174
174
|
assert results == expected
|
|
175
175
|
|
|
176
176
|
|
|
177
|
-
def test_measure_density_matrix_computational_basis_reversed():
|
|
177
|
+
def test_measure_density_matrix_computational_basis_reversed() -> None:
|
|
178
178
|
results = []
|
|
179
179
|
for x in range(8):
|
|
180
180
|
matrix = cirq.to_valid_density_matrix(x, 3)
|
|
@@ -185,7 +185,7 @@ def test_measure_density_matrix_computational_basis_reversed():
|
|
|
185
185
|
assert results == expected
|
|
186
186
|
|
|
187
187
|
|
|
188
|
-
def test_measure_density_matrix_computational_basis_reshaped():
|
|
188
|
+
def test_measure_density_matrix_computational_basis_reshaped() -> None:
|
|
189
189
|
results = []
|
|
190
190
|
for x in range(8):
|
|
191
191
|
matrix = np.reshape(cirq.to_valid_density_matrix(x, 3), (2,) * 6)
|
|
@@ -196,7 +196,7 @@ def test_measure_density_matrix_computational_basis_reshaped():
|
|
|
196
196
|
assert results == expected
|
|
197
197
|
|
|
198
198
|
|
|
199
|
-
def test_measure_density_matrix_partial_indices():
|
|
199
|
+
def test_measure_density_matrix_partial_indices() -> None:
|
|
200
200
|
for index in range(3):
|
|
201
201
|
for x in range(8):
|
|
202
202
|
matrix = cirq.to_valid_density_matrix(x, 3)
|
|
@@ -205,7 +205,7 @@ def test_measure_density_matrix_partial_indices():
|
|
|
205
205
|
assert bits == [bool(1 & (x >> (2 - index)))]
|
|
206
206
|
|
|
207
207
|
|
|
208
|
-
def test_measure_density_matrix_partial_indices_all_orders():
|
|
208
|
+
def test_measure_density_matrix_partial_indices_all_orders() -> None:
|
|
209
209
|
for perm in itertools.permutations([0, 1, 2]):
|
|
210
210
|
for x in range(8):
|
|
211
211
|
matrix = cirq.to_valid_density_matrix(x, 3)
|
|
@@ -221,7 +221,7 @@ def matrix_000_plus_010():
|
|
|
221
221
|
return cirq.to_valid_density_matrix(state, num_qubits=3)
|
|
222
222
|
|
|
223
223
|
|
|
224
|
-
def test_measure_density_matrix_collapse():
|
|
224
|
+
def test_measure_density_matrix_collapse() -> None:
|
|
225
225
|
matrix = matrix_000_plus_010()
|
|
226
226
|
for _ in range(10):
|
|
227
227
|
bits, out_matrix = cirq.measure_density_matrix(matrix, [2, 1, 0])
|
|
@@ -246,7 +246,7 @@ def test_measure_density_matrix_collapse():
|
|
|
246
246
|
assert bits == [False]
|
|
247
247
|
|
|
248
248
|
|
|
249
|
-
def test_measure_density_matrix_seed():
|
|
249
|
+
def test_measure_density_matrix_seed() -> None:
|
|
250
250
|
n = 5
|
|
251
251
|
matrix = np.eye(2**n) / 2**n
|
|
252
252
|
|
|
@@ -261,7 +261,7 @@ def test_measure_density_matrix_seed():
|
|
|
261
261
|
np.testing.assert_allclose(out_matrix1, out_matrix2)
|
|
262
262
|
|
|
263
263
|
|
|
264
|
-
def test_measure_density_matrix_out_is_matrix():
|
|
264
|
+
def test_measure_density_matrix_out_is_matrix() -> None:
|
|
265
265
|
matrix = matrix_000_plus_010()
|
|
266
266
|
bits, out_matrix = cirq.measure_density_matrix(matrix, [2, 1, 0], out=matrix)
|
|
267
267
|
expected_state = np.zeros(8, dtype=np.complex64)
|
|
@@ -271,7 +271,7 @@ def test_measure_density_matrix_out_is_matrix():
|
|
|
271
271
|
assert out_matrix is matrix
|
|
272
272
|
|
|
273
273
|
|
|
274
|
-
def test_measure_state_out_is_not_matrix():
|
|
274
|
+
def test_measure_state_out_is_not_matrix() -> None:
|
|
275
275
|
matrix = matrix_000_plus_010()
|
|
276
276
|
out = np.zeros_like(matrix)
|
|
277
277
|
_, out_matrix = cirq.measure_density_matrix(matrix, [2, 1, 0], out=out)
|
|
@@ -279,7 +279,7 @@ def test_measure_state_out_is_not_matrix():
|
|
|
279
279
|
assert out is out_matrix
|
|
280
280
|
|
|
281
281
|
|
|
282
|
-
def test_measure_density_matrix_not_square():
|
|
282
|
+
def test_measure_density_matrix_not_square() -> None:
|
|
283
283
|
with pytest.raises(ValueError, match='not square'):
|
|
284
284
|
cirq.measure_density_matrix(np.array([1, 0, 0]), [1])
|
|
285
285
|
with pytest.raises(ValueError, match='not square'):
|
|
@@ -288,26 +288,26 @@ def test_measure_density_matrix_not_square():
|
|
|
288
288
|
)
|
|
289
289
|
|
|
290
290
|
|
|
291
|
-
def test_measure_density_matrix_not_power_of_two():
|
|
291
|
+
def test_measure_density_matrix_not_power_of_two() -> None:
|
|
292
292
|
with pytest.raises(ValueError, match='power of two'):
|
|
293
293
|
cirq.measure_density_matrix(np.ones((3, 3)) / 3, [1])
|
|
294
294
|
with pytest.raises(ValueError, match='power of two'):
|
|
295
295
|
cirq.measure_density_matrix(np.ones((2, 3, 2, 3)) / 6, [1])
|
|
296
296
|
|
|
297
297
|
|
|
298
|
-
def test_measure_density_matrix_higher_powers_of_two():
|
|
298
|
+
def test_measure_density_matrix_higher_powers_of_two() -> None:
|
|
299
299
|
with pytest.raises(ValueError, match='powers of two'):
|
|
300
300
|
cirq.measure_density_matrix(np.ones((2, 4, 2, 4)) / 8, [1])
|
|
301
301
|
|
|
302
302
|
|
|
303
|
-
def test_measure_density_matrix_tensor_different_left_right_shape():
|
|
303
|
+
def test_measure_density_matrix_tensor_different_left_right_shape() -> None:
|
|
304
304
|
with pytest.raises(ValueError, match='not equal'):
|
|
305
305
|
cirq.measure_density_matrix(
|
|
306
306
|
np.array([1, 0, 0, 0]).reshape((2, 2, 1, 1)), [1], qid_shape=(2, 1)
|
|
307
307
|
)
|
|
308
308
|
|
|
309
309
|
|
|
310
|
-
def test_measure_density_matrix_out_of_range():
|
|
310
|
+
def test_measure_density_matrix_out_of_range() -> None:
|
|
311
311
|
matrix = cirq.to_valid_density_matrix(0, 3)
|
|
312
312
|
with pytest.raises(IndexError, match='-2'):
|
|
313
313
|
cirq.measure_density_matrix(matrix, [-2])
|
|
@@ -315,14 +315,14 @@ def test_measure_density_matrix_out_of_range():
|
|
|
315
315
|
cirq.measure_density_matrix(matrix, [3])
|
|
316
316
|
|
|
317
317
|
|
|
318
|
-
def test_measure_state_no_indices():
|
|
318
|
+
def test_measure_state_no_indices() -> None:
|
|
319
319
|
matrix = cirq.to_valid_density_matrix(0, 3)
|
|
320
320
|
bits, out_matrix = cirq.measure_density_matrix(matrix, [])
|
|
321
321
|
assert [] == bits
|
|
322
322
|
np.testing.assert_almost_equal(out_matrix, matrix)
|
|
323
323
|
|
|
324
324
|
|
|
325
|
-
def test_measure_state_no_indices_out_is_matrix():
|
|
325
|
+
def test_measure_state_no_indices_out_is_matrix() -> None:
|
|
326
326
|
matrix = cirq.to_valid_density_matrix(0, 3)
|
|
327
327
|
bits, out_matrix = cirq.measure_density_matrix(matrix, [], out=matrix)
|
|
328
328
|
assert [] == bits
|
|
@@ -330,7 +330,7 @@ def test_measure_state_no_indices_out_is_matrix():
|
|
|
330
330
|
assert out_matrix is matrix
|
|
331
331
|
|
|
332
332
|
|
|
333
|
-
def test_measure_state_no_indices_out_is_not_matrix():
|
|
333
|
+
def test_measure_state_no_indices_out_is_not_matrix() -> None:
|
|
334
334
|
matrix = cirq.to_valid_density_matrix(0, 3)
|
|
335
335
|
out = np.zeros_like(matrix)
|
|
336
336
|
bits, out_matrix = cirq.measure_density_matrix(matrix, [], out=out)
|
|
@@ -340,7 +340,7 @@ def test_measure_state_no_indices_out_is_not_matrix():
|
|
|
340
340
|
assert out is not matrix
|
|
341
341
|
|
|
342
342
|
|
|
343
|
-
def test_measure_state_empty_density_matrix():
|
|
343
|
+
def test_measure_state_empty_density_matrix() -> None:
|
|
344
344
|
matrix = np.zeros(shape=())
|
|
345
345
|
bits, out_matrix = cirq.measure_density_matrix(matrix, [])
|
|
346
346
|
assert [] == bits
|
|
@@ -350,14 +350,14 @@ def test_measure_state_empty_density_matrix():
|
|
|
350
350
|
@pytest.mark.parametrize('seed', [17, 35, 48])
|
|
351
351
|
@pytest.mark.parametrize('dtype', [np.complex64, np.complex128])
|
|
352
352
|
@pytest.mark.parametrize('split', [False, True])
|
|
353
|
-
def test_to_valid_density_matrix_on_simulator_output(seed, dtype, split):
|
|
353
|
+
def test_to_valid_density_matrix_on_simulator_output(seed, dtype, split) -> None:
|
|
354
354
|
circuit = cirq.testing.random_circuit(qubits=5, n_moments=20, op_density=0.9, random_state=seed)
|
|
355
355
|
simulator = cirq.DensityMatrixSimulator(split_untangled_states=split, dtype=dtype)
|
|
356
356
|
result = simulator.simulate(circuit)
|
|
357
357
|
_ = cirq.to_valid_density_matrix(result.final_density_matrix, num_qubits=5, atol=1e-6)
|
|
358
358
|
|
|
359
359
|
|
|
360
|
-
def test_factor_validation():
|
|
360
|
+
def test_factor_validation() -> None:
|
|
361
361
|
args = cirq.DensityMatrixSimulator()._create_simulation_state(0, qubits=cirq.LineQubit.range(2))
|
|
362
362
|
args.apply_operation(cirq.H(cirq.LineQubit(0)))
|
|
363
363
|
t = args.create_merged_state().target_tensor
|
|
@@ -70,7 +70,7 @@ def create_container(
|
|
|
70
70
|
)
|
|
71
71
|
|
|
72
72
|
|
|
73
|
-
def test_entanglement_causes_join():
|
|
73
|
+
def test_entanglement_causes_join() -> None:
|
|
74
74
|
state = create_container(qs2)
|
|
75
75
|
assert len(set(state.values())) == 3
|
|
76
76
|
state.apply_operation(cirq.CNOT(q0, q1))
|
|
@@ -79,7 +79,7 @@ def test_entanglement_causes_join():
|
|
|
79
79
|
assert state[None] is not state[q0]
|
|
80
80
|
|
|
81
81
|
|
|
82
|
-
def test_subcircuit_entanglement_causes_join():
|
|
82
|
+
def test_subcircuit_entanglement_causes_join() -> None:
|
|
83
83
|
state = create_container(qs2)
|
|
84
84
|
assert len(set(state.values())) == 3
|
|
85
85
|
state.apply_operation(cirq.CircuitOperation(cirq.FrozenCircuit(cirq.CNOT(q0, q1))))
|
|
@@ -87,7 +87,7 @@ def test_subcircuit_entanglement_causes_join():
|
|
|
87
87
|
assert state[q0] is state[q1]
|
|
88
88
|
|
|
89
89
|
|
|
90
|
-
def test_subcircuit_entanglement_causes_join_in_subset():
|
|
90
|
+
def test_subcircuit_entanglement_causes_join_in_subset() -> None:
|
|
91
91
|
state = create_container(qs3)
|
|
92
92
|
assert len(set(state.values())) == 4
|
|
93
93
|
state.apply_operation(cirq.CircuitOperation(cirq.FrozenCircuit(cirq.CNOT(q0, q1))))
|
|
@@ -98,7 +98,7 @@ def test_subcircuit_entanglement_causes_join_in_subset():
|
|
|
98
98
|
assert state[q0] is state[q1] is state[q2]
|
|
99
99
|
|
|
100
100
|
|
|
101
|
-
def test_identity_does_not_join():
|
|
101
|
+
def test_identity_does_not_join() -> None:
|
|
102
102
|
state = create_container(qs2)
|
|
103
103
|
assert len(set(state.values())) == 3
|
|
104
104
|
state.apply_operation(cirq.IdentityGate(2)(q0, q1))
|
|
@@ -107,7 +107,7 @@ def test_identity_does_not_join():
|
|
|
107
107
|
assert state[q0] is not state[None]
|
|
108
108
|
|
|
109
109
|
|
|
110
|
-
def test_identity_fallback_does_not_join():
|
|
110
|
+
def test_identity_fallback_does_not_join() -> None:
|
|
111
111
|
state = create_container(qs2)
|
|
112
112
|
assert len(set(state.values())) == 3
|
|
113
113
|
state._act_on_fallback_(cirq.I, (q0, q1))
|
|
@@ -116,7 +116,7 @@ def test_identity_fallback_does_not_join():
|
|
|
116
116
|
assert state[q0] is not state[None]
|
|
117
117
|
|
|
118
118
|
|
|
119
|
-
def test_subcircuit_identity_does_not_join():
|
|
119
|
+
def test_subcircuit_identity_does_not_join() -> None:
|
|
120
120
|
state = create_container(qs2)
|
|
121
121
|
assert len(set(state.values())) == 3
|
|
122
122
|
state.apply_operation(cirq.CircuitOperation(cirq.FrozenCircuit(cirq.IdentityGate(2)(q0, q1))))
|
|
@@ -124,7 +124,7 @@ def test_subcircuit_identity_does_not_join():
|
|
|
124
124
|
assert state[q0] is not state[q1]
|
|
125
125
|
|
|
126
126
|
|
|
127
|
-
def test_measurement_causes_split():
|
|
127
|
+
def test_measurement_causes_split() -> None:
|
|
128
128
|
state = create_container(qs2)
|
|
129
129
|
state.apply_operation(cirq.CNOT(q0, q1))
|
|
130
130
|
assert len(set(state.values())) == 2
|
|
@@ -134,7 +134,7 @@ def test_measurement_causes_split():
|
|
|
134
134
|
assert state[q0] is not state[None]
|
|
135
135
|
|
|
136
136
|
|
|
137
|
-
def test_subcircuit_measurement_causes_split():
|
|
137
|
+
def test_subcircuit_measurement_causes_split() -> None:
|
|
138
138
|
state = create_container(qs2)
|
|
139
139
|
state.apply_operation(cirq.CNOT(q0, q1))
|
|
140
140
|
assert len(set(state.values())) == 2
|
|
@@ -143,7 +143,7 @@ def test_subcircuit_measurement_causes_split():
|
|
|
143
143
|
assert state[q0] is not state[q1]
|
|
144
144
|
|
|
145
145
|
|
|
146
|
-
def test_subcircuit_measurement_causes_split_in_subset():
|
|
146
|
+
def test_subcircuit_measurement_causes_split_in_subset() -> None:
|
|
147
147
|
state = create_container(qs3)
|
|
148
148
|
state.apply_operation(cirq.CNOT(q0, q1))
|
|
149
149
|
state.apply_operation(cirq.CNOT(q0, q2))
|
|
@@ -158,7 +158,7 @@ def test_subcircuit_measurement_causes_split_in_subset():
|
|
|
158
158
|
assert state[q1] is not state[q2]
|
|
159
159
|
|
|
160
160
|
|
|
161
|
-
def test_reset_causes_split():
|
|
161
|
+
def test_reset_causes_split() -> None:
|
|
162
162
|
state = create_container(qs2)
|
|
163
163
|
state.apply_operation(cirq.CNOT(q0, q1))
|
|
164
164
|
assert len(set(state.values())) == 2
|
|
@@ -168,7 +168,7 @@ def test_reset_causes_split():
|
|
|
168
168
|
assert state[q0] is not state[None]
|
|
169
169
|
|
|
170
170
|
|
|
171
|
-
def test_measurement_does_not_split_if_disabled():
|
|
171
|
+
def test_measurement_does_not_split_if_disabled() -> None:
|
|
172
172
|
state = create_container(qs2, False)
|
|
173
173
|
state.apply_operation(cirq.CNOT(q0, q1))
|
|
174
174
|
assert len(set(state.values())) == 1
|
|
@@ -178,7 +178,7 @@ def test_measurement_does_not_split_if_disabled():
|
|
|
178
178
|
assert state[None] is state[q0]
|
|
179
179
|
|
|
180
180
|
|
|
181
|
-
def test_reset_does_not_split_if_disabled():
|
|
181
|
+
def test_reset_does_not_split_if_disabled() -> None:
|
|
182
182
|
state = create_container(qs2, False)
|
|
183
183
|
state.apply_operation(cirq.CNOT(q0, q1))
|
|
184
184
|
assert len(set(state.values())) == 1
|
|
@@ -188,7 +188,7 @@ def test_reset_does_not_split_if_disabled():
|
|
|
188
188
|
assert state[None] is state[q0]
|
|
189
189
|
|
|
190
190
|
|
|
191
|
-
def test_measurement_of_all_qubits_causes_split():
|
|
191
|
+
def test_measurement_of_all_qubits_causes_split() -> None:
|
|
192
192
|
state = create_container(qs2)
|
|
193
193
|
state.apply_operation(cirq.CNOT(q0, q1))
|
|
194
194
|
assert len(set(state.values())) == 2
|
|
@@ -198,7 +198,7 @@ def test_measurement_of_all_qubits_causes_split():
|
|
|
198
198
|
assert state[q0] is not state[None]
|
|
199
199
|
|
|
200
200
|
|
|
201
|
-
def test_measurement_in_single_qubit_circuit_passes():
|
|
201
|
+
def test_measurement_in_single_qubit_circuit_passes() -> None:
|
|
202
202
|
state = create_container([q0])
|
|
203
203
|
assert len(set(state.values())) == 2
|
|
204
204
|
state.apply_operation(cirq.measure(q0))
|
|
@@ -206,25 +206,25 @@ def test_measurement_in_single_qubit_circuit_passes():
|
|
|
206
206
|
assert state[q0] is not state[None]
|
|
207
207
|
|
|
208
208
|
|
|
209
|
-
def test_reorder_succeeds():
|
|
209
|
+
def test_reorder_succeeds() -> None:
|
|
210
210
|
state = create_container(qs2, False)
|
|
211
211
|
reordered = state[q0].transpose_to_qubit_order([q1, q0])
|
|
212
212
|
assert reordered.qubits == (q1, q0)
|
|
213
213
|
|
|
214
214
|
|
|
215
|
-
def test_copy_succeeds():
|
|
215
|
+
def test_copy_succeeds() -> None:
|
|
216
216
|
state = create_container(qs2, False)
|
|
217
217
|
copied = state[q0].copy()
|
|
218
218
|
assert copied.qubits == (q0, q1)
|
|
219
219
|
|
|
220
220
|
|
|
221
|
-
def test_merge_succeeds():
|
|
221
|
+
def test_merge_succeeds() -> None:
|
|
222
222
|
state = create_container(qs2, False)
|
|
223
223
|
merged = state.create_merged_state()
|
|
224
224
|
assert merged.qubits == (q0, q1)
|
|
225
225
|
|
|
226
226
|
|
|
227
|
-
def test_swap_does_not_merge():
|
|
227
|
+
def test_swap_does_not_merge() -> None:
|
|
228
228
|
state = create_container(qs2)
|
|
229
229
|
old_q0 = state[q0]
|
|
230
230
|
old_q1 = state[q1]
|
|
@@ -238,14 +238,14 @@ def test_swap_does_not_merge():
|
|
|
238
238
|
assert state[q1].qubits == (q1,)
|
|
239
239
|
|
|
240
240
|
|
|
241
|
-
def test_half_swap_does_merge():
|
|
241
|
+
def test_half_swap_does_merge() -> None:
|
|
242
242
|
state = create_container(qs2)
|
|
243
243
|
state.apply_operation(cirq.SWAP(q0, q1) ** 0.5)
|
|
244
244
|
assert len(set(state.values())) == 2
|
|
245
245
|
assert state[q0] is state[q1]
|
|
246
246
|
|
|
247
247
|
|
|
248
|
-
def test_swap_after_entangle_reorders():
|
|
248
|
+
def test_swap_after_entangle_reorders() -> None:
|
|
249
249
|
state = create_container(qs2)
|
|
250
250
|
state.apply_operation(cirq.CX(q0, q1))
|
|
251
251
|
assert len(set(state.values())) == 2
|
|
@@ -256,7 +256,7 @@ def test_swap_after_entangle_reorders():
|
|
|
256
256
|
assert state[q0].qubits == (q1, q0)
|
|
257
257
|
|
|
258
258
|
|
|
259
|
-
def test_act_on_gate_does_not_join():
|
|
259
|
+
def test_act_on_gate_does_not_join() -> None:
|
|
260
260
|
state = create_container(qs2)
|
|
261
261
|
assert len(set(state.values())) == 3
|
|
262
262
|
cirq.act_on(cirq.X, state, [q0])
|
|
@@ -265,7 +265,7 @@ def test_act_on_gate_does_not_join():
|
|
|
265
265
|
assert state[q0] is not state[None]
|
|
266
266
|
|
|
267
267
|
|
|
268
|
-
def test_field_getters():
|
|
268
|
+
def test_field_getters() -> None:
|
|
269
269
|
state = create_container(qs2)
|
|
270
270
|
assert state.sim_states.keys() == set(qs2) | {None}
|
|
271
271
|
assert state.split_untangled_states
|
|
@@ -72,20 +72,20 @@ class Composite(cirq.Gate):
|
|
|
72
72
|
yield cirq.X(*qubits)
|
|
73
73
|
|
|
74
74
|
|
|
75
|
-
def test_measurements():
|
|
75
|
+
def test_measurements() -> None:
|
|
76
76
|
args = ExampleSimulationState()
|
|
77
77
|
args.measure([cirq.LineQubit(0)], "test", [False], {})
|
|
78
78
|
assert args.log_of_measurement_results["test"] == [5]
|
|
79
79
|
|
|
80
80
|
|
|
81
|
-
def test_decompose():
|
|
81
|
+
def test_decompose() -> None:
|
|
82
82
|
args = ExampleSimulationState()
|
|
83
83
|
assert simulation_state.strat_act_on_from_apply_decompose(
|
|
84
84
|
Composite(), args, [cirq.LineQubit(0)]
|
|
85
85
|
)
|
|
86
86
|
|
|
87
87
|
|
|
88
|
-
def test_decompose_for_gate_allocating_qubits_raises():
|
|
88
|
+
def test_decompose_for_gate_allocating_qubits_raises() -> None:
|
|
89
89
|
class Composite(cirq.testing.SingleQubitGate):
|
|
90
90
|
def _decompose_(self, qubits):
|
|
91
91
|
anc = cirq.NamedQubit("anc")
|
|
@@ -97,7 +97,7 @@ def test_decompose_for_gate_allocating_qubits_raises():
|
|
|
97
97
|
simulation_state.strat_act_on_from_apply_decompose(Composite(), args, [cirq.LineQubit(0)])
|
|
98
98
|
|
|
99
99
|
|
|
100
|
-
def test_mapping():
|
|
100
|
+
def test_mapping() -> None:
|
|
101
101
|
args = ExampleSimulationState()
|
|
102
102
|
assert list(iter(args)) == cirq.LineQubit.range(2)
|
|
103
103
|
r1 = args[cirq.LineQubit(0)]
|
|
@@ -106,7 +106,7 @@ def test_mapping():
|
|
|
106
106
|
_ = args[cirq.LineQubit(2)]
|
|
107
107
|
|
|
108
108
|
|
|
109
|
-
def test_swap_bad_dimensions():
|
|
109
|
+
def test_swap_bad_dimensions() -> None:
|
|
110
110
|
q0 = cirq.LineQubit(0)
|
|
111
111
|
q1 = cirq.LineQid(1, 3)
|
|
112
112
|
args = ExampleSimulationState()
|
|
@@ -114,7 +114,7 @@ def test_swap_bad_dimensions():
|
|
|
114
114
|
args.swap(q0, q1)
|
|
115
115
|
|
|
116
116
|
|
|
117
|
-
def test_rename_bad_dimensions():
|
|
117
|
+
def test_rename_bad_dimensions() -> None:
|
|
118
118
|
q0 = cirq.LineQubit(0)
|
|
119
119
|
q1 = cirq.LineQid(1, 3)
|
|
120
120
|
args = ExampleSimulationState()
|
|
@@ -122,7 +122,7 @@ def test_rename_bad_dimensions():
|
|
|
122
122
|
args.rename(q0, q1)
|
|
123
123
|
|
|
124
124
|
|
|
125
|
-
def test_transpose_qubits():
|
|
125
|
+
def test_transpose_qubits() -> None:
|
|
126
126
|
q0, q1, q2 = cirq.LineQubit.range(3)
|
|
127
127
|
args = ExampleSimulationState()
|
|
128
128
|
assert args.transpose_to_qubit_order((q1, q0)).qubits == (q1, q0)
|
|
@@ -132,14 +132,14 @@ def test_transpose_qubits():
|
|
|
132
132
|
args.transpose_to_qubit_order((q0, q1, q1))
|
|
133
133
|
|
|
134
134
|
|
|
135
|
-
def test_field_getters():
|
|
135
|
+
def test_field_getters() -> None:
|
|
136
136
|
args = ExampleSimulationState()
|
|
137
137
|
assert args.prng is np.random
|
|
138
138
|
assert args.qubit_map == {q: i for i, q in enumerate(cirq.LineQubit.range(2))}
|
|
139
139
|
|
|
140
140
|
|
|
141
141
|
@pytest.mark.parametrize('exp', np.linspace(0, 2 * np.pi, 10))
|
|
142
|
-
def test_delegating_gate_unitary(exp):
|
|
142
|
+
def test_delegating_gate_unitary(exp) -> None:
|
|
143
143
|
q = cirq.LineQubit(0)
|
|
144
144
|
|
|
145
145
|
test_circuit = cirq.Circuit()
|
|
@@ -154,7 +154,7 @@ def test_delegating_gate_unitary(exp):
|
|
|
154
154
|
|
|
155
155
|
|
|
156
156
|
@pytest.mark.parametrize('exp', np.linspace(0, 2 * np.pi, 10))
|
|
157
|
-
def test_delegating_gate_channel(exp):
|
|
157
|
+
def test_delegating_gate_channel(exp) -> None:
|
|
158
158
|
q = cirq.LineQubit(0)
|
|
159
159
|
|
|
160
160
|
test_circuit = cirq.Circuit()
|
|
@@ -169,7 +169,7 @@ def test_delegating_gate_channel(exp):
|
|
|
169
169
|
|
|
170
170
|
|
|
171
171
|
@pytest.mark.parametrize('num_ancilla', [1, 2, 3])
|
|
172
|
-
def test_phase_using_dirty_ancilla(num_ancilla: int):
|
|
172
|
+
def test_phase_using_dirty_ancilla(num_ancilla: int) -> None:
|
|
173
173
|
q = cirq.LineQubit(0)
|
|
174
174
|
anc = cirq.NamedQubit.range(num_ancilla, prefix='anc')
|
|
175
175
|
|
|
@@ -184,7 +184,7 @@ def test_phase_using_dirty_ancilla(num_ancilla: int):
|
|
|
184
184
|
|
|
185
185
|
@pytest.mark.parametrize('num_ancilla', [1, 2, 3])
|
|
186
186
|
@pytest.mark.parametrize('theta', np.linspace(0, 2 * np.pi, 10))
|
|
187
|
-
def test_phase_using_clean_ancilla(num_ancilla: int, theta: float):
|
|
187
|
+
def test_phase_using_clean_ancilla(num_ancilla: int, theta: float) -> None:
|
|
188
188
|
q = cirq.LineQubit(0)
|
|
189
189
|
u = cirq.MatrixGate(cirq.testing.random_unitary(2))
|
|
190
190
|
test_circuit = cirq.Circuit(
|
|
@@ -19,7 +19,7 @@ from cirq.sim import simulation_utils
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
@pytest.mark.parametrize('n,m', [(n, m) for n in range(1, 4) for m in range(1, n + 1)])
|
|
22
|
-
def test_state_probabilities_by_indices(n: int, m: int):
|
|
22
|
+
def test_state_probabilities_by_indices(n: int, m: int) -> None:
|
|
23
23
|
np.random.seed(0)
|
|
24
24
|
state = testing.random_superposition(1 << n)
|
|
25
25
|
d = (state.conj() * state).real
|