cirq-core 1.5.0.dev20241010222629__py3-none-any.whl → 1.5.0.dev20241011172351__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/transformers/analytical_decompositions/quantum_shannon_decomposition.py +94 -17
- cirq/transformers/analytical_decompositions/quantum_shannon_decomposition_test.py +98 -9
- {cirq_core-1.5.0.dev20241010222629.dist-info → cirq_core-1.5.0.dev20241011172351.dist-info}/METADATA +1 -1
- {cirq_core-1.5.0.dev20241010222629.dist-info → cirq_core-1.5.0.dev20241011172351.dist-info}/RECORD +9 -9
- {cirq_core-1.5.0.dev20241010222629.dist-info → cirq_core-1.5.0.dev20241011172351.dist-info}/LICENSE +0 -0
- {cirq_core-1.5.0.dev20241010222629.dist-info → cirq_core-1.5.0.dev20241011172351.dist-info}/WHEEL +0 -0
- {cirq_core-1.5.0.dev20241010222629.dist-info → cirq_core-1.5.0.dev20241011172351.dist-info}/top_level.txt +0 -0
cirq/_version.py
CHANGED
cirq/_version_test.py
CHANGED
|
@@ -27,22 +27,40 @@ import numpy as np
|
|
|
27
27
|
|
|
28
28
|
from cirq import ops
|
|
29
29
|
from cirq.linalg import decompositions, predicates
|
|
30
|
+
from cirq.transformers.analytical_decompositions.two_qubit_to_cz import (
|
|
31
|
+
two_qubit_matrix_to_cz_operations,
|
|
32
|
+
)
|
|
33
|
+
from cirq.transformers.analytical_decompositions.three_qubit_decomposition import (
|
|
34
|
+
three_qubit_matrix_to_operations,
|
|
35
|
+
)
|
|
36
|
+
from cirq.protocols import unitary_protocol
|
|
37
|
+
from cirq.circuits.frozen_circuit import FrozenCircuit
|
|
30
38
|
|
|
31
39
|
if TYPE_CHECKING:
|
|
32
40
|
import cirq
|
|
33
41
|
from cirq.ops import op_tree
|
|
34
42
|
|
|
35
43
|
|
|
36
|
-
def quantum_shannon_decomposition(
|
|
37
|
-
|
|
44
|
+
def quantum_shannon_decomposition(
|
|
45
|
+
qubits: 'List[cirq.Qid]', u: np.ndarray, atol: float = 1e-8
|
|
46
|
+
) -> 'op_tree.OpTree':
|
|
47
|
+
"""Decomposes n-qubit unitary 1-q, 2-q and GlobalPhase gates, preserving global phase.
|
|
48
|
+
|
|
49
|
+
The gates used are CX/YPow/ZPow/CNOT/GlobalPhase/CZ/PhasedXZGate/PhasedXPowGate.
|
|
38
50
|
|
|
39
51
|
The algorithm is described in Shende et al.:
|
|
40
52
|
Synthesis of Quantum Logic Circuits. Tech. rep. 2006,
|
|
41
53
|
https://arxiv.org/abs/quant-ph/0406176
|
|
42
54
|
|
|
55
|
+
Note: Shannon decomposition is sensitive to the numerical accuracy of doing eigendecomposition.
|
|
56
|
+
Eigendecomposition is obtained using `np.linalg.eig` and the resulting difference between
|
|
57
|
+
the input and output unitary is heavily affected by the accuracy of `np.linalg.eig`.
|
|
58
|
+
|
|
59
|
+
|
|
43
60
|
Args:
|
|
44
61
|
qubits: List of qubits in order of significance
|
|
45
62
|
u: Numpy array for unitary matrix representing gate to be decomposed
|
|
63
|
+
atol: Absolute tolerance of floating point checks.
|
|
46
64
|
|
|
47
65
|
Calls:
|
|
48
66
|
(Base Case)
|
|
@@ -62,7 +80,7 @@ def quantum_shannon_decomposition(qubits: 'List[cirq.Qid]', u: np.ndarray) -> 'o
|
|
|
62
80
|
ValueError: If the u matrix is non-unitary
|
|
63
81
|
ValueError: If the u matrix is not of shape (2^n,2^n)
|
|
64
82
|
"""
|
|
65
|
-
if not predicates.is_unitary(u): # Check that u is unitary
|
|
83
|
+
if not predicates.is_unitary(u, atol=atol): # Check that u is unitary
|
|
66
84
|
raise ValueError(
|
|
67
85
|
"Expected input matrix u to be unitary, \
|
|
68
86
|
but it fails cirq.is_unitary check"
|
|
@@ -80,6 +98,32 @@ def quantum_shannon_decomposition(qubits: 'List[cirq.Qid]', u: np.ndarray) -> 'o
|
|
|
80
98
|
yield from _single_qubit_decomposition(qubits[0], u)
|
|
81
99
|
return
|
|
82
100
|
|
|
101
|
+
if n == 4:
|
|
102
|
+
operations = tuple(
|
|
103
|
+
two_qubit_matrix_to_cz_operations(
|
|
104
|
+
qubits[0], qubits[1], u, allow_partial_czs=True, clean_operations=True, atol=atol
|
|
105
|
+
)
|
|
106
|
+
)
|
|
107
|
+
yield from operations
|
|
108
|
+
i, j = np.unravel_index(np.argmax(np.abs(u)), u.shape)
|
|
109
|
+
new_unitary = unitary_protocol.unitary(FrozenCircuit.from_moments(*operations))
|
|
110
|
+
global_phase = np.angle(u[i, j]) - np.angle(new_unitary[i, j])
|
|
111
|
+
if np.abs(global_phase) > 1e-9:
|
|
112
|
+
yield ops.global_phase_operation(np.exp(1j * global_phase))
|
|
113
|
+
return
|
|
114
|
+
|
|
115
|
+
if n == 8:
|
|
116
|
+
operations = tuple(
|
|
117
|
+
three_qubit_matrix_to_operations(qubits[0], qubits[1], qubits[2], u, atol=atol)
|
|
118
|
+
)
|
|
119
|
+
yield from operations
|
|
120
|
+
i, j = np.unravel_index(np.argmax(np.abs(u)), u.shape)
|
|
121
|
+
new_unitary = unitary_protocol.unitary(FrozenCircuit.from_moments(*operations))
|
|
122
|
+
global_phase = np.angle(u[i, j]) - np.angle(new_unitary[i, j])
|
|
123
|
+
if np.abs(global_phase) > 1e-9:
|
|
124
|
+
yield ops.global_phase_operation(np.exp(1j * global_phase))
|
|
125
|
+
return
|
|
126
|
+
|
|
83
127
|
# Perform a cosine-sine (linalg) decomposition on u
|
|
84
128
|
# X = [ u1 , 0 ] [ cos(theta) , -sin(theta) ] [ v1 , 0 ]
|
|
85
129
|
# [ 0 , u2 ] [ sin(theta) , cos(theta) ] [ 0 , v2 ]
|
|
@@ -108,17 +152,36 @@ def _single_qubit_decomposition(qubit: 'cirq.Qid', u: np.ndarray) -> 'op_tree.Op
|
|
|
108
152
|
A single operation from OP TREE of 3 operations (rz,ry,ZPowGate)
|
|
109
153
|
"""
|
|
110
154
|
# Perform native ZYZ decomposition
|
|
111
|
-
phi_0, phi_1, phi_2 =
|
|
155
|
+
phi_0, phi_1, phi_2 = np.array(
|
|
156
|
+
decompositions.deconstruct_single_qubit_matrix_into_angles(u)
|
|
157
|
+
) % (2 * np.pi)
|
|
112
158
|
|
|
113
159
|
# Determine global phase picked up
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
160
|
+
global_phase = np.angle(u[0, 0]) + phi_0 / 2 + phi_2 / 2
|
|
161
|
+
if np.abs(u[0, 0]) < 1e-9:
|
|
162
|
+
global_phase = np.angle(u[1, 0]) + phi_0 / 2 - phi_2 / 2
|
|
163
|
+
|
|
164
|
+
if np.abs(phi_2) > 1e-18:
|
|
165
|
+
# Append first two operations operations
|
|
166
|
+
yield ops.rz(phi_0).on(qubit)
|
|
167
|
+
yield ops.ry(phi_1).on(qubit)
|
|
168
|
+
|
|
169
|
+
# Append third operation with global phase added
|
|
170
|
+
yield ops.ZPowGate(exponent=phi_2 / np.pi, global_shift=global_phase / phi_2 - 0.5)(qubit)
|
|
171
|
+
elif np.abs(phi_1) > 1e-18:
|
|
172
|
+
# Just a Z -> Y rotation so we attach the global phase to the Y rotation.
|
|
173
|
+
if np.abs(phi_0) > 1e-18:
|
|
174
|
+
yield ops.rz(phi_0)(qubit)
|
|
175
|
+
yield ops.YPowGate(exponent=phi_1 / np.pi, global_shift=global_phase / phi_1 - 0.5)(qubit)
|
|
176
|
+
elif np.abs(phi_0) > 1e-18:
|
|
177
|
+
# Just an Rz with a potential global phase.
|
|
178
|
+
yield ops.ZPowGate(exponent=phi_0 / np.pi, global_shift=global_phase / phi_0 - 0.5)(qubit)
|
|
179
|
+
elif np.abs(global_phase) > 1e-18:
|
|
180
|
+
# Global Phase.
|
|
181
|
+
yield ops.global_phase_operation(np.exp(1j * global_phase))
|
|
182
|
+
else:
|
|
183
|
+
# Identity.
|
|
184
|
+
return
|
|
122
185
|
|
|
123
186
|
|
|
124
187
|
def _msb_demuxer(
|
|
@@ -146,8 +209,21 @@ def _msb_demuxer(
|
|
|
146
209
|
Yields: Single operation from OP TREE of 2-qubit and 1-qubit operations
|
|
147
210
|
"""
|
|
148
211
|
# Perform a diagonalization to find values
|
|
212
|
+
u1 = u1.astype(np.complex128)
|
|
213
|
+
u2 = u2.astype(np.complex128)
|
|
149
214
|
u = u1 @ u2.T.conjugate()
|
|
150
|
-
|
|
215
|
+
if predicates.is_hermitian(u):
|
|
216
|
+
# If `u` is hermitian, use the more accurate `eigh` method.
|
|
217
|
+
dsquared, V = np.linalg.eigh(u)
|
|
218
|
+
else:
|
|
219
|
+
dsquared, V = np.linalg.eig(u)
|
|
220
|
+
# Use Gram–Schmidt to obtain orthonormal eigenvectors for each of the subspaces.
|
|
221
|
+
for i in range(V.shape[0]):
|
|
222
|
+
for j in range(i):
|
|
223
|
+
if np.abs(dsquared[i] - dsquared[j]) < 1e-9:
|
|
224
|
+
V[:, i] -= np.dot(V[:, j].conj(), V[:, i]) * V[:, j]
|
|
225
|
+
V[:, i] /= np.linalg.norm(V[:, i]) # normalize.
|
|
226
|
+
dsquared = dsquared.astype(np.complex128)
|
|
151
227
|
d = np.sqrt(dsquared)
|
|
152
228
|
D = np.diag(d)
|
|
153
229
|
W = D @ V.T.conjugate() @ u2
|
|
@@ -155,7 +231,7 @@ def _msb_demuxer(
|
|
|
155
231
|
# Last term is given by ( I ⊗ W ), demultiplexed
|
|
156
232
|
# Remove most-significant (demuxed) control-qubit
|
|
157
233
|
# Yield operations for QSD on W
|
|
158
|
-
yield from quantum_shannon_decomposition(demux_qubits[1:], W)
|
|
234
|
+
yield from quantum_shannon_decomposition(demux_qubits[1:], W, atol=1e-6)
|
|
159
235
|
|
|
160
236
|
# Use complex phase of d_i to give theta_i (so d_i* gives -theta_i)
|
|
161
237
|
# Observe that middle part looks like Σ_i( Rz(theta_i)⊗|i><i| )
|
|
@@ -163,7 +239,7 @@ def _msb_demuxer(
|
|
|
163
239
|
yield from _multiplexed_cossin(demux_qubits, -np.angle(d), ops.rz)
|
|
164
240
|
|
|
165
241
|
# Yield operations for QSD on V
|
|
166
|
-
yield from quantum_shannon_decomposition(demux_qubits[1:], V)
|
|
242
|
+
yield from quantum_shannon_decomposition(demux_qubits[1:], V, atol=1e-6)
|
|
167
243
|
|
|
168
244
|
|
|
169
245
|
def _nth_gray(n: int) -> int:
|
|
@@ -223,8 +299,9 @@ def _multiplexed_cossin(
|
|
|
223
299
|
# so introduce max function
|
|
224
300
|
select_qubit = max(-select_qubit - 1, -len(control_qubits))
|
|
225
301
|
|
|
226
|
-
|
|
227
|
-
|
|
302
|
+
if np.abs(rotation) > 1e-9:
|
|
303
|
+
# Add a rotation on the main qubit
|
|
304
|
+
yield rot_func(rotation).on(main_qubit)
|
|
228
305
|
|
|
229
306
|
# Add a CNOT from the select qubit to the main qubit
|
|
230
307
|
yield ops.CNOT(control_qubits[select_qubit], main_qubit)
|
|
@@ -34,9 +34,8 @@ def test_random_qsd_n_qubit(n_qubits):
|
|
|
34
34
|
circuit = cirq.Circuit(quantum_shannon_decomposition(qubits, U))
|
|
35
35
|
# Test return is equal to inital unitary
|
|
36
36
|
assert cirq.approx_eq(U, circuit.unitary(), atol=1e-9)
|
|
37
|
-
# Test all operations
|
|
38
|
-
|
|
39
|
-
assert all(isinstance(op.gate, gates) for op in circuit.all_operations())
|
|
37
|
+
# Test all operations have at most 2 qubits.
|
|
38
|
+
assert all(cirq.num_qubits(op) <= 2 for op in circuit.all_operations())
|
|
40
39
|
|
|
41
40
|
|
|
42
41
|
def test_qsd_n_qubit_errors():
|
|
@@ -53,9 +52,8 @@ def test_random_single_qubit_decomposition():
|
|
|
53
52
|
circuit = cirq.Circuit(_single_qubit_decomposition(qubit, U))
|
|
54
53
|
# Test return is equal to inital unitary
|
|
55
54
|
assert cirq.approx_eq(U, circuit.unitary(), atol=1e-9)
|
|
56
|
-
# Test all operations
|
|
57
|
-
|
|
58
|
-
assert all(isinstance(op.gate, gates) for op in circuit.all_operations())
|
|
55
|
+
# Test all operations have at most 2 qubits.
|
|
56
|
+
assert all(cirq.num_qubits(op) <= 2 for op in circuit.all_operations())
|
|
59
57
|
|
|
60
58
|
|
|
61
59
|
def test_msb_demuxer():
|
|
@@ -66,9 +64,8 @@ def test_msb_demuxer():
|
|
|
66
64
|
circuit = cirq.Circuit(_msb_demuxer(qubits, U1, U2))
|
|
67
65
|
# Test return is equal to inital unitary
|
|
68
66
|
assert cirq.approx_eq(U_full, circuit.unitary(), atol=1e-9)
|
|
69
|
-
# Test all operations
|
|
70
|
-
|
|
71
|
-
assert all(isinstance(op.gate, gates) for op in circuit.all_operations())
|
|
67
|
+
# Test all operations have at most 2 qubits.
|
|
68
|
+
assert all(cirq.num_qubits(op) <= 2 for op in circuit.all_operations())
|
|
72
69
|
|
|
73
70
|
|
|
74
71
|
def test_multiplexed_cossin():
|
|
@@ -110,3 +107,95 @@ def test_multiplexed_cossin():
|
|
|
110
107
|
)
|
|
111
108
|
def test_nth_gray(n, gray):
|
|
112
109
|
assert _nth_gray(n) == gray
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def test_ghz_circuit_decomposes():
|
|
113
|
+
# Test case from #6725
|
|
114
|
+
ghz_circuit = cirq.Circuit(cirq.H(cirq.q(0)), cirq.CNOT(cirq.q(0), cirq.q(1)))
|
|
115
|
+
ghz_unitary = cirq.unitary(ghz_circuit)
|
|
116
|
+
decomposed_circuit = cirq.Circuit(
|
|
117
|
+
quantum_shannon_decomposition(cirq.LineQubit.range(2), ghz_unitary)
|
|
118
|
+
)
|
|
119
|
+
new_unitary = cirq.unitary(decomposed_circuit)
|
|
120
|
+
np.testing.assert_allclose(new_unitary, ghz_unitary, atol=1e-6)
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def test_qft_decomposes():
|
|
124
|
+
# Test case from #6666
|
|
125
|
+
qs = cirq.LineQubit.range(4)
|
|
126
|
+
qft_circuit = cirq.Circuit(cirq.qft(*qs))
|
|
127
|
+
qft_unitary = cirq.unitary(qft_circuit)
|
|
128
|
+
decomposed_circuit = cirq.Circuit(quantum_shannon_decomposition(qs, qft_unitary))
|
|
129
|
+
new_unitary = cirq.unitary(decomposed_circuit)
|
|
130
|
+
np.testing.assert_allclose(new_unitary, qft_unitary, atol=1e-6)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
# Cliffords test the different corner cases of the ZYZ decomposition.
|
|
134
|
+
@pytest.mark.parametrize(
|
|
135
|
+
['gate', 'num_ops'],
|
|
136
|
+
[
|
|
137
|
+
(cirq.I, 0),
|
|
138
|
+
(cirq.X, 2), # rz & ry
|
|
139
|
+
(cirq.Y, 1), # ry
|
|
140
|
+
(cirq.Z, 1), # rz
|
|
141
|
+
(cirq.H, 2), # rz & ry
|
|
142
|
+
(cirq.S, 1), # rz & ry
|
|
143
|
+
],
|
|
144
|
+
)
|
|
145
|
+
def test_cliffords(gate, num_ops):
|
|
146
|
+
desired_unitary = cirq.unitary(gate)
|
|
147
|
+
shannon_circuit = cirq.Circuit(quantum_shannon_decomposition((cirq.q(0),), desired_unitary))
|
|
148
|
+
new_unitary = cirq.unitary(shannon_circuit)
|
|
149
|
+
assert len([*shannon_circuit.all_operations()]) == num_ops
|
|
150
|
+
if num_ops:
|
|
151
|
+
np.testing.assert_allclose(new_unitary, desired_unitary)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
@pytest.mark.parametrize('gate', [cirq.X, cirq.Y, cirq.Z, cirq.H, cirq.S])
|
|
155
|
+
def test_cliffords_with_global_phase(gate):
|
|
156
|
+
global_phase = np.exp(1j * np.random.choice(np.linspace(0.1, 2 * np.pi, 10)))
|
|
157
|
+
desired_unitary = cirq.unitary(gate) * global_phase
|
|
158
|
+
shannon_circuit = cirq.Circuit(quantum_shannon_decomposition((cirq.q(0),), desired_unitary))
|
|
159
|
+
new_unitary = cirq.unitary(shannon_circuit)
|
|
160
|
+
np.testing.assert_allclose(new_unitary, desired_unitary)
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def test_global_phase():
|
|
164
|
+
global_phase = np.exp(1j * np.random.choice(np.linspace(0, 2 * np.pi, 10)))
|
|
165
|
+
shannon_circuit = cirq.Circuit(
|
|
166
|
+
quantum_shannon_decomposition((cirq.q(0),), np.eye(2) * global_phase)
|
|
167
|
+
)
|
|
168
|
+
new_unitary = cirq.unitary(shannon_circuit)
|
|
169
|
+
np.testing.assert_allclose(np.diag(new_unitary), global_phase)
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
@pytest.mark.parametrize('gate', [cirq.CZ, cirq.CNOT, cirq.XX, cirq.YY, cirq.ZZ])
|
|
173
|
+
def test_two_qubit_gate(gate):
|
|
174
|
+
global_phase = np.exp(1j * np.random.choice(np.linspace(0, 2 * np.pi, 10)))
|
|
175
|
+
desired_unitary = cirq.unitary(gate) * global_phase
|
|
176
|
+
shannon_circuit = cirq.Circuit(
|
|
177
|
+
quantum_shannon_decomposition(cirq.LineQubit.range(2), desired_unitary)
|
|
178
|
+
)
|
|
179
|
+
new_unitary = cirq.unitary(shannon_circuit)
|
|
180
|
+
np.testing.assert_allclose(new_unitary, desired_unitary, atol=1e-6)
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
@pytest.mark.parametrize('gate', [cirq.CCNOT, cirq.qft(*cirq.LineQubit.range(3))])
|
|
184
|
+
def test_three_qubit_gate(gate):
|
|
185
|
+
global_phase = np.exp(1j * np.random.choice(np.linspace(0, 2 * np.pi, 10)))
|
|
186
|
+
desired_unitary = cirq.unitary(gate) * global_phase
|
|
187
|
+
shannon_circuit = cirq.Circuit(
|
|
188
|
+
quantum_shannon_decomposition(cirq.LineQubit.range(3), desired_unitary)
|
|
189
|
+
)
|
|
190
|
+
new_unitary = cirq.unitary(shannon_circuit)
|
|
191
|
+
np.testing.assert_allclose(new_unitary, desired_unitary, atol=1e-6)
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
def test_qft5():
|
|
195
|
+
global_phase = np.exp(1j * np.random.choice(np.linspace(0, 2 * np.pi, 10)))
|
|
196
|
+
desired_unitary = cirq.unitary(cirq.qft(*cirq.LineQubit.range(5))) * global_phase
|
|
197
|
+
shannon_circuit = cirq.Circuit(
|
|
198
|
+
quantum_shannon_decomposition(cirq.LineQubit.range(5), desired_unitary)
|
|
199
|
+
)
|
|
200
|
+
new_unitary = cirq.unitary(shannon_circuit)
|
|
201
|
+
np.testing.assert_allclose(new_unitary, desired_unitary, atol=1e-6)
|
{cirq_core-1.5.0.dev20241010222629.dist-info → cirq_core-1.5.0.dev20241011172351.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cirq-core
|
|
3
|
-
Version: 1.5.0.
|
|
3
|
+
Version: 1.5.0.dev20241011172351
|
|
4
4
|
Summary: A framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits.
|
|
5
5
|
Home-page: http://github.com/quantumlib/cirq
|
|
6
6
|
Author: The Cirq Developers
|
{cirq_core-1.5.0.dev20241010222629.dist-info → cirq_core-1.5.0.dev20241011172351.dist-info}/RECORD
RENAMED
|
@@ -4,8 +4,8 @@ cirq/_compat_test.py,sha256=Qq3ZcfgD-Nb81cEppQdJqhAyrVqXKtfXZYGXT0p-Wh0,34718
|
|
|
4
4
|
cirq/_doc.py,sha256=yDyWUD_2JDS0gShfGRb-rdqRt9-WeL7DhkqX7np0Nko,2879
|
|
5
5
|
cirq/_import.py,sha256=p9gMHJscbtDDkfHOaulvd3Aer0pwUF5AXpL89XR8dNw,8402
|
|
6
6
|
cirq/_import_test.py,sha256=6K_v0riZJXOXUphHNkGA8MY-JcmGlezFaGmvrNhm3OQ,1015
|
|
7
|
-
cirq/_version.py,sha256=
|
|
8
|
-
cirq/_version_test.py,sha256=
|
|
7
|
+
cirq/_version.py,sha256=ID41za_JKLstIAkLxa1kmt77-PtVSih00rPtYZWuRgY,1206
|
|
8
|
+
cirq/_version_test.py,sha256=fgriaaJ9t3qrw87ke8RMPzsWeLYlVRmhAmw2AoyHfcY,147
|
|
9
9
|
cirq/conftest.py,sha256=X7yLFL8GLhg2CjPw0hp5e_dGASfvHx1-QT03aUbhKJw,1168
|
|
10
10
|
cirq/json_resolver_cache.py,sha256=ytePZtNZgKjOF2NiVpUTuotB-JKZmQNOFIFdvXqsxHw,13271
|
|
11
11
|
cirq/py.typed,sha256=VFSlmh_lNwnaXzwY-ZuW-C2Ws5PkuDoVgBdNCs0jXJE,63
|
|
@@ -1068,8 +1068,8 @@ cirq/transformers/analytical_decompositions/cphase_to_fsim.py,sha256=RDg0wzYa_YX
|
|
|
1068
1068
|
cirq/transformers/analytical_decompositions/cphase_to_fsim_test.py,sha256=bwZa0BDclAd1sX3bD-GdNF2MO5DtH7mw2YLppEK0LG0,5568
|
|
1069
1069
|
cirq/transformers/analytical_decompositions/pauli_string_decomposition.py,sha256=bU9IoY0igVZTmF_wsTdTxAfqPKWyqZ14Gt2AJoK5D_4,4524
|
|
1070
1070
|
cirq/transformers/analytical_decompositions/pauli_string_decomposition_test.py,sha256=qpFODpCJrE9piYLWR1FzweTn3v80EvLCV-PP2fbHcoE,2112
|
|
1071
|
-
cirq/transformers/analytical_decompositions/quantum_shannon_decomposition.py,sha256
|
|
1072
|
-
cirq/transformers/analytical_decompositions/quantum_shannon_decomposition_test.py,sha256=
|
|
1071
|
+
cirq/transformers/analytical_decompositions/quantum_shannon_decomposition.py,sha256=beW4G_yE2lGNQEGbItwEa_w7lx0ECmGFZ7bCvMfk3bg,11768
|
|
1072
|
+
cirq/transformers/analytical_decompositions/quantum_shannon_decomposition_test.py,sha256=rsjVegctVdjWu7BVcbLl0KVxOVCDVwTRSe1Rf7Os08Q,7615
|
|
1073
1073
|
cirq/transformers/analytical_decompositions/single_qubit_decompositions.py,sha256=iAPdMwHKM1B3mJtQWH-iNjR-VkzhkUDFC23f8kjXY6M,8436
|
|
1074
1074
|
cirq/transformers/analytical_decompositions/single_qubit_decompositions_test.py,sha256=4GfU6wctBoG-OVFqFOE08xymd5dXzY-doE8ZNpsKohI,12308
|
|
1075
1075
|
cirq/transformers/analytical_decompositions/single_to_two_qubit_isometry.py,sha256=0N6NbY6yc0VGuTheR37mhUIKFu5TYmToxJO2mbLp9xM,2439
|
|
@@ -1184,8 +1184,8 @@ cirq/work/sampler.py,sha256=JEAeQQRF3bqlO9AkOf4XbrTATDI5f5JgyM_FAUCNxao,19751
|
|
|
1184
1184
|
cirq/work/sampler_test.py,sha256=B2ZsuqGT854gQtBIAh8k0LiG9Vj5wSzcGvkxOUoTcW4,13217
|
|
1185
1185
|
cirq/work/zeros_sampler.py,sha256=x1C7cup66a43n-3tm8QjhiqJa07qcJW10FxNp9jJ59Q,2356
|
|
1186
1186
|
cirq/work/zeros_sampler_test.py,sha256=JIkpBBFPJe5Ba4142vzogyWyboG1Q1ZAm0UVGgOoZn8,3279
|
|
1187
|
-
cirq_core-1.5.0.
|
|
1188
|
-
cirq_core-1.5.0.
|
|
1189
|
-
cirq_core-1.5.0.
|
|
1190
|
-
cirq_core-1.5.0.
|
|
1191
|
-
cirq_core-1.5.0.
|
|
1187
|
+
cirq_core-1.5.0.dev20241011172351.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
1188
|
+
cirq_core-1.5.0.dev20241011172351.dist-info/METADATA,sha256=GQOZlVM96-WYtfMaLllwLXeuBNcAaWkcgpSddgI_KY0,1992
|
|
1189
|
+
cirq_core-1.5.0.dev20241011172351.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
|
1190
|
+
cirq_core-1.5.0.dev20241011172351.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
|
|
1191
|
+
cirq_core-1.5.0.dev20241011172351.dist-info/RECORD,,
|
{cirq_core-1.5.0.dev20241010222629.dist-info → cirq_core-1.5.0.dev20241011172351.dist-info}/LICENSE
RENAMED
|
File without changes
|
{cirq_core-1.5.0.dev20241010222629.dist-info → cirq_core-1.5.0.dev20241011172351.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|