cirq-core 1.4.0.dev20240529181723__py3-none-any.whl → 1.4.0.dev20240529191702__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 CHANGED
@@ -1 +1 @@
1
- __version__ = "1.4.0.dev20240529181723"
1
+ __version__ = "1.4.0.dev20240529191702"
cirq/ops/phased_x_gate.py CHANGED
@@ -28,7 +28,7 @@ from cirq.type_workarounds import NotImplementedType
28
28
 
29
29
  @value.value_equality(manual_cls=True, approximate=True)
30
30
  class PhasedXPowGate(raw_types.Gate):
31
- r"""A gate equivalent to $Z^{p} X^t Z^{-p}$.
31
+ r"""A gate equivalent to $Z^{-p} X^t Z^{p}$ (in time order).
32
32
 
33
33
  The unitary matrix of `cirq.PhasedXPowGate(exponent=t, phase_exponent=p)` is:
34
34
  $$
@@ -27,7 +27,7 @@ if TYPE_CHECKING:
27
27
 
28
28
  @value.value_equality(approximate=True)
29
29
  class PhasedXZGate(raw_types.Gate):
30
- r"""A single qubit gate equivalent to the circuit $Z^z Z^{a} X^x Z^{-a}$.
30
+ r"""A single qubit gate equivalent to the circuit $Z^{-a} X^x Z^{a} Z^z$ (in time order).
31
31
 
32
32
  The unitary matrix of `cirq.PhasedXZGate(x_exponent=x, z_exponent=z, axis_phase_exponent=a)` is:
33
33
  $$
@@ -67,6 +67,22 @@ class PhasedXZGate(raw_types.Gate):
67
67
  self._z_exponent = z_exponent
68
68
  self._axis_phase_exponent = axis_phase_exponent
69
69
 
70
+ @classmethod
71
+ def from_zyz_angles(cls, z0_rad: float, y_rad: float, z1_rad: float) -> 'cirq.PhasedXZGate':
72
+ """Create a PhasedXZGate from ZYZ angles.
73
+
74
+ The returned gate is equivalent to $Rz(z0_rad) Ry(y_rad) Rz(z1_rad)$ (in time order).
75
+ """
76
+ return cls.from_zyz_exponents(z0=z0_rad / np.pi, y=y_rad / np.pi, z1=z1_rad / np.pi)
77
+
78
+ @classmethod
79
+ def from_zyz_exponents(cls, z0: float, y: float, z1: float) -> 'cirq.PhasedXZGate':
80
+ """Create a PhasedXZGate from ZYZ exponents.
81
+
82
+ The returned gate is equivalent to $Z^z0 Y^y Z^z1$ (in time order).
83
+ """
84
+ return PhasedXZGate(axis_phase_exponent=-z0 + 0.5, x_exponent=y, z_exponent=z0 + z1)
85
+
70
86
  def _canonical(self) -> 'cirq.PhasedXZGate':
71
87
  x = self.x_exponent
72
88
  z = self.z_exponent
@@ -34,6 +34,30 @@ def test_eq():
34
34
  eq.add_equality_group(cirq.PhasedXZGate(x_exponent=1, z_exponent=0, axis_phase_exponent=0))
35
35
 
36
36
 
37
+ @pytest.mark.parametrize('z0_rad', [-np.pi / 5, 0, np.pi / 5, np.pi / 4, np.pi / 2, np.pi])
38
+ @pytest.mark.parametrize('y_rad', [0, np.pi / 5, np.pi / 4, np.pi / 2, np.pi])
39
+ @pytest.mark.parametrize('z1_rad', [-np.pi / 5, 0, np.pi / 5, np.pi / 4, np.pi / 2, np.pi])
40
+ def test_from_zyz_angles(z0_rad: float, y_rad: float, z1_rad: float) -> None:
41
+ q = cirq.q(0)
42
+ phxz = cirq.PhasedXZGate.from_zyz_angles(z0_rad, y_rad, z1_rad)
43
+ zyz = cirq.Circuit(cirq.rz(z0_rad).on(q), cirq.ry(y_rad).on(q), cirq.rz(z1_rad).on(q))
44
+ cirq.testing.assert_allclose_up_to_global_phase(
45
+ cirq.unitary(phxz), cirq.unitary(zyz), atol=1e-8
46
+ )
47
+
48
+
49
+ @pytest.mark.parametrize('z0', [-0.2, 0, 0.2, 0.25, 0.5, 1])
50
+ @pytest.mark.parametrize('y', [0, 0.2, 0.25, 0.5, 1])
51
+ @pytest.mark.parametrize('z1', [-0.2, 0, 0.2, 0.25, 0.5, 1])
52
+ def test_from_zyz_exponents(z0: float, y: float, z1: float) -> None:
53
+ q = cirq.q(0)
54
+ phxz = cirq.PhasedXZGate.from_zyz_exponents(z0, y, z1)
55
+ zyz = cirq.Circuit(cirq.Z(q) ** z0, cirq.Y(q) ** y, cirq.Z(q) ** z1)
56
+ cirq.testing.assert_allclose_up_to_global_phase(
57
+ cirq.unitary(phxz), cirq.unitary(zyz), atol=1e-8
58
+ )
59
+
60
+
37
61
  def test_canonicalization():
38
62
  def f(x, z, a):
39
63
  return cirq.PhasedXZGate(x_exponent=x, z_exponent=z, axis_phase_exponent=a)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cirq-core
3
- Version: 1.4.0.dev20240529181723
3
+ Version: 1.4.0.dev20240529191702
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
@@ -4,7 +4,7 @@ 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=YHEXHFUIxii23dgbUglnHy85I7a7vwl_jhKqz7ixN_Y,40
7
+ cirq/_version.py,sha256=13U7SRIwlG3p-58kL0H_W0me2UxiezFelivykQJDWFI,40
8
8
  cirq/_version_test.py,sha256=yYS6xm5-nuBRQJa9R3n41WdvFtVyY7Lb5Q8bea3VgBI,133
9
9
  cirq/conftest.py,sha256=X7yLFL8GLhg2CjPw0hp5e_dGASfvHx1-QT03aUbhKJw,1168
10
10
  cirq/json_resolver_cache.py,sha256=ytePZtNZgKjOF2NiVpUTuotB-JKZmQNOFIFdvXqsxHw,13271
@@ -343,10 +343,10 @@ cirq/ops/permutation_gate.py,sha256=5xTXmnjFF3h8kgWV4wDnHBe4foeeqwEm-69I38WmK3k,
343
343
  cirq/ops/permutation_gate_test.py,sha256=SwXRgsZNLn5jnGhfcKPJ0J0CIssNzElbFaqylV2TXD8,3281
344
344
  cirq/ops/phased_iswap_gate.py,sha256=8zRuD3uvMt4OFegD9zpEM-foJYbZEYBTIApShUk0BaI,8977
345
345
  cirq/ops/phased_iswap_gate_test.py,sha256=oH3RQ8tlSD0sU5Cf3M0uR92y3M1Xd7Yk3ayOoca9Neg,6708
346
- cirq/ops/phased_x_gate.py,sha256=Cq6Dw9TSj5aKZkDkc4NY6JsPwKFSMTSX4QIfiAvbTZQ,9964
346
+ cirq/ops/phased_x_gate.py,sha256=QCDhn4tDm_zhjorYWLpP5xOYNByXiaT35nOspJWt5vY,9980
347
347
  cirq/ops/phased_x_gate_test.py,sha256=IpY-Z-MsqtYbyIEdxWu1NqgAJF2B7nddxPc2Hxafr4s,10202
348
- cirq/ops/phased_x_z_gate.py,sha256=eHYMyPiDhlEyzphJDnaTeLdRn96Tns1VfiYv6FtPShU,10812
349
- cirq/ops/phased_x_z_gate_test.py,sha256=8PCwOgGGWL32QIR8m1kBd5JG3Mq9BMDeeVD0aPk1E90,9541
348
+ cirq/ops/phased_x_z_gate.py,sha256=5JhVE5TReg7AKy3hhS2mE1UdvIXFsScF56e8mD15mmw,11534
349
+ cirq/ops/phased_x_z_gate_test.py,sha256=KK5-FD5zoaqZkw7p6UKxFddzaFWoxnQnE8LpCiKtIk8,10690
350
350
  cirq/ops/projector.py,sha256=isDlNLR8YS5CxsVCihtRAgfKZXFFQxk7kuFXY14t8ys,5690
351
351
  cirq/ops/projector_test.py,sha256=Wq7ddj-PV30yUXJxJoT3XIw2sIUC1AilnZ9m9N5Ejr8,9063
352
352
  cirq/ops/qid_util.py,sha256=SxyoMy_s070lcqXV7ny6vE8pp082OrTjBtawZtHOhXs,2071
@@ -1175,8 +1175,8 @@ cirq/work/sampler.py,sha256=JEAeQQRF3bqlO9AkOf4XbrTATDI5f5JgyM_FAUCNxao,19751
1175
1175
  cirq/work/sampler_test.py,sha256=B2ZsuqGT854gQtBIAh8k0LiG9Vj5wSzcGvkxOUoTcW4,13217
1176
1176
  cirq/work/zeros_sampler.py,sha256=x1C7cup66a43n-3tm8QjhiqJa07qcJW10FxNp9jJ59Q,2356
1177
1177
  cirq/work/zeros_sampler_test.py,sha256=JIkpBBFPJe5Ba4142vzogyWyboG1Q1ZAm0UVGgOoZn8,3279
1178
- cirq_core-1.4.0.dev20240529181723.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1179
- cirq_core-1.4.0.dev20240529181723.dist-info/METADATA,sha256=niiB8hEEBsGaKlcidYTlJe34temcc20swuf37f_j3PA,1998
1180
- cirq_core-1.4.0.dev20240529181723.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
1181
- cirq_core-1.4.0.dev20240529181723.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
1182
- cirq_core-1.4.0.dev20240529181723.dist-info/RECORD,,
1178
+ cirq_core-1.4.0.dev20240529191702.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1179
+ cirq_core-1.4.0.dev20240529191702.dist-info/METADATA,sha256=RokQjVHLC7VTvI2QbyeXUfqY9i6HesAu9oLxXs2791s,1998
1180
+ cirq_core-1.4.0.dev20240529191702.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
1181
+ cirq_core-1.4.0.dev20240529191702.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
1182
+ cirq_core-1.4.0.dev20240529191702.dist-info/RECORD,,