qiskit 2.0.2__cp39-abi3-macosx_11_0_arm64.whl → 2.1.0rc1__cp39-abi3-macosx_11_0_arm64.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.
Files changed (179) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +19 -1
  3. qiskit/_accelerate.abi3.so +0 -0
  4. qiskit/circuit/__init__.py +13 -21
  5. qiskit/circuit/_add_control.py +57 -31
  6. qiskit/circuit/_classical_resource_map.py +4 -0
  7. qiskit/circuit/annotation.py +404 -0
  8. qiskit/circuit/classical/expr/__init__.py +1 -1
  9. qiskit/circuit/classical/expr/expr.py +104 -446
  10. qiskit/circuit/classical/expr/visitors.py +6 -0
  11. qiskit/circuit/classical/types/types.py +7 -130
  12. qiskit/circuit/controlflow/box.py +32 -7
  13. qiskit/circuit/delay.py +11 -9
  14. qiskit/circuit/library/arithmetic/adders/adder.py +5 -5
  15. qiskit/circuit/library/arithmetic/multipliers/multiplier.py +3 -3
  16. qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +7 -3
  17. qiskit/circuit/library/arithmetic/piecewise_linear_pauli_rotations.py +23 -15
  18. qiskit/circuit/library/arithmetic/piecewise_polynomial_pauli_rotations.py +22 -14
  19. qiskit/circuit/library/arithmetic/quadratic_form.py +6 -0
  20. qiskit/circuit/library/arithmetic/weighted_adder.py +43 -24
  21. qiskit/circuit/library/basis_change/qft.py +2 -2
  22. qiskit/circuit/library/blueprintcircuit.py +6 -0
  23. qiskit/circuit/library/boolean_logic/inner_product.py +2 -2
  24. qiskit/circuit/library/boolean_logic/quantum_and.py +2 -2
  25. qiskit/circuit/library/boolean_logic/quantum_or.py +3 -3
  26. qiskit/circuit/library/boolean_logic/quantum_xor.py +2 -2
  27. qiskit/circuit/library/data_preparation/_z_feature_map.py +2 -2
  28. qiskit/circuit/library/data_preparation/_zz_feature_map.py +2 -2
  29. qiskit/circuit/library/data_preparation/pauli_feature_map.py +2 -2
  30. qiskit/circuit/library/fourier_checking.py +2 -2
  31. qiskit/circuit/library/generalized_gates/diagonal.py +5 -1
  32. qiskit/circuit/library/generalized_gates/gms.py +5 -1
  33. qiskit/circuit/library/generalized_gates/linear_function.py +2 -2
  34. qiskit/circuit/library/generalized_gates/permutation.py +5 -1
  35. qiskit/circuit/library/generalized_gates/uc.py +1 -1
  36. qiskit/circuit/library/generalized_gates/unitary.py +21 -2
  37. qiskit/circuit/library/graph_state.py +2 -2
  38. qiskit/circuit/library/grover_operator.py +2 -2
  39. qiskit/circuit/library/hidden_linear_function.py +2 -2
  40. qiskit/circuit/library/iqp.py +2 -2
  41. qiskit/circuit/library/n_local/efficient_su2.py +2 -2
  42. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +1 -1
  43. qiskit/circuit/library/n_local/excitation_preserving.py +7 -9
  44. qiskit/circuit/library/n_local/n_local.py +4 -3
  45. qiskit/circuit/library/n_local/pauli_two_design.py +2 -2
  46. qiskit/circuit/library/n_local/real_amplitudes.py +2 -2
  47. qiskit/circuit/library/n_local/two_local.py +2 -2
  48. qiskit/circuit/library/overlap.py +2 -2
  49. qiskit/circuit/library/pauli_evolution.py +3 -2
  50. qiskit/circuit/library/phase_estimation.py +2 -2
  51. qiskit/circuit/library/standard_gates/dcx.py +11 -12
  52. qiskit/circuit/library/standard_gates/ecr.py +21 -24
  53. qiskit/circuit/library/standard_gates/equivalence_library.py +232 -96
  54. qiskit/circuit/library/standard_gates/global_phase.py +5 -6
  55. qiskit/circuit/library/standard_gates/h.py +22 -45
  56. qiskit/circuit/library/standard_gates/i.py +1 -1
  57. qiskit/circuit/library/standard_gates/iswap.py +13 -31
  58. qiskit/circuit/library/standard_gates/p.py +19 -26
  59. qiskit/circuit/library/standard_gates/r.py +11 -17
  60. qiskit/circuit/library/standard_gates/rx.py +21 -45
  61. qiskit/circuit/library/standard_gates/rxx.py +7 -22
  62. qiskit/circuit/library/standard_gates/ry.py +21 -39
  63. qiskit/circuit/library/standard_gates/ryy.py +13 -28
  64. qiskit/circuit/library/standard_gates/rz.py +18 -35
  65. qiskit/circuit/library/standard_gates/rzx.py +7 -22
  66. qiskit/circuit/library/standard_gates/rzz.py +7 -19
  67. qiskit/circuit/library/standard_gates/s.py +44 -39
  68. qiskit/circuit/library/standard_gates/swap.py +25 -38
  69. qiskit/circuit/library/standard_gates/sx.py +34 -41
  70. qiskit/circuit/library/standard_gates/t.py +18 -27
  71. qiskit/circuit/library/standard_gates/u.py +8 -24
  72. qiskit/circuit/library/standard_gates/u1.py +28 -52
  73. qiskit/circuit/library/standard_gates/u2.py +9 -9
  74. qiskit/circuit/library/standard_gates/u3.py +24 -40
  75. qiskit/circuit/library/standard_gates/x.py +190 -336
  76. qiskit/circuit/library/standard_gates/xx_minus_yy.py +12 -50
  77. qiskit/circuit/library/standard_gates/xx_plus_yy.py +13 -52
  78. qiskit/circuit/library/standard_gates/y.py +19 -23
  79. qiskit/circuit/library/standard_gates/z.py +31 -38
  80. qiskit/circuit/parameter.py +14 -5
  81. qiskit/circuit/parameterexpression.py +109 -75
  82. qiskit/circuit/quantumcircuit.py +168 -98
  83. qiskit/circuit/quantumcircuitdata.py +1 -0
  84. qiskit/circuit/random/__init__.py +37 -2
  85. qiskit/circuit/random/utils.py +445 -56
  86. qiskit/circuit/tools/pi_check.py +5 -13
  87. qiskit/compiler/transpiler.py +1 -1
  88. qiskit/converters/circuit_to_instruction.py +2 -2
  89. qiskit/dagcircuit/dagnode.py +8 -3
  90. qiskit/primitives/__init__.py +2 -2
  91. qiskit/primitives/base/base_estimator.py +2 -2
  92. qiskit/primitives/containers/data_bin.py +0 -3
  93. qiskit/primitives/containers/observables_array.py +192 -108
  94. qiskit/primitives/primitive_job.py +29 -10
  95. qiskit/providers/fake_provider/generic_backend_v2.py +2 -0
  96. qiskit/qasm3/__init__.py +106 -12
  97. qiskit/qasm3/ast.py +15 -1
  98. qiskit/qasm3/exporter.py +59 -36
  99. qiskit/qasm3/printer.py +12 -0
  100. qiskit/qpy/__init__.py +183 -7
  101. qiskit/qpy/binary_io/circuits.py +256 -24
  102. qiskit/qpy/binary_io/parse_sympy_repr.py +5 -0
  103. qiskit/qpy/binary_io/schedules.py +12 -32
  104. qiskit/qpy/binary_io/value.py +36 -18
  105. qiskit/qpy/common.py +11 -3
  106. qiskit/qpy/formats.py +17 -1
  107. qiskit/qpy/interface.py +52 -12
  108. qiskit/qpy/type_keys.py +7 -1
  109. qiskit/quantum_info/__init__.py +10 -0
  110. qiskit/quantum_info/operators/__init__.py +1 -0
  111. qiskit/quantum_info/operators/symplectic/__init__.py +1 -0
  112. qiskit/quantum_info/operators/symplectic/clifford_circuits.py +26 -0
  113. qiskit/quantum_info/operators/symplectic/pauli.py +2 -2
  114. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +1 -1
  115. qiskit/result/sampled_expval.py +3 -1
  116. qiskit/synthesis/__init__.py +10 -0
  117. qiskit/synthesis/arithmetic/__init__.py +1 -1
  118. qiskit/synthesis/arithmetic/adders/__init__.py +1 -0
  119. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +6 -2
  120. qiskit/synthesis/arithmetic/adders/rv_ripple_carry_adder.py +156 -0
  121. qiskit/synthesis/discrete_basis/generate_basis_approximations.py +14 -126
  122. qiskit/synthesis/discrete_basis/solovay_kitaev.py +161 -121
  123. qiskit/synthesis/evolution/lie_trotter.py +10 -7
  124. qiskit/synthesis/evolution/product_formula.py +10 -7
  125. qiskit/synthesis/evolution/qdrift.py +10 -7
  126. qiskit/synthesis/evolution/suzuki_trotter.py +10 -7
  127. qiskit/synthesis/multi_controlled/__init__.py +4 -0
  128. qiskit/synthesis/multi_controlled/mcx_synthesis.py +402 -178
  129. qiskit/synthesis/multi_controlled/multi_control_rotation_gates.py +14 -15
  130. qiskit/synthesis/qft/qft_decompose_lnn.py +7 -25
  131. qiskit/synthesis/unitary/qsd.py +80 -9
  132. qiskit/transpiler/__init__.py +19 -8
  133. qiskit/transpiler/instruction_durations.py +2 -20
  134. qiskit/transpiler/passes/__init__.py +4 -2
  135. qiskit/transpiler/passes/layout/dense_layout.py +26 -6
  136. qiskit/transpiler/passes/layout/disjoint_utils.py +1 -166
  137. qiskit/transpiler/passes/layout/sabre_layout.py +22 -3
  138. qiskit/transpiler/passes/layout/sabre_pre_layout.py +1 -1
  139. qiskit/transpiler/passes/layout/vf2_layout.py +49 -13
  140. qiskit/transpiler/passes/layout/vf2_utils.py +13 -1
  141. qiskit/transpiler/passes/optimization/__init__.py +1 -1
  142. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +2 -1
  143. qiskit/transpiler/passes/optimization/optimize_clifford_t.py +68 -0
  144. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +3 -9
  145. qiskit/transpiler/passes/routing/sabre_swap.py +12 -2
  146. qiskit/transpiler/passes/routing/star_prerouting.py +106 -81
  147. qiskit/transpiler/passes/scheduling/__init__.py +1 -1
  148. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -1
  149. qiskit/transpiler/passes/scheduling/padding/__init__.py +1 -0
  150. qiskit/transpiler/passes/scheduling/padding/context_aware_dynamical_decoupling.py +876 -0
  151. qiskit/transpiler/passes/synthesis/__init__.py +1 -0
  152. qiskit/transpiler/passes/synthesis/clifford_unitary_synth_plugin.py +123 -0
  153. qiskit/transpiler/passes/synthesis/hls_plugins.py +472 -92
  154. qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +27 -22
  155. qiskit/transpiler/passmanager_config.py +3 -0
  156. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +149 -28
  157. qiskit/transpiler/preset_passmanagers/common.py +101 -0
  158. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +6 -0
  159. qiskit/transpiler/preset_passmanagers/level3.py +2 -2
  160. qiskit/utils/optionals.py +6 -5
  161. qiskit/visualization/circuit/_utils.py +5 -3
  162. qiskit/visualization/circuit/latex.py +9 -2
  163. qiskit/visualization/circuit/matplotlib.py +26 -4
  164. qiskit/visualization/circuit/qcstyle.py +9 -157
  165. qiskit/visualization/dag/__init__.py +13 -0
  166. qiskit/visualization/dag/dagstyle.py +103 -0
  167. qiskit/visualization/dag/styles/__init__.py +13 -0
  168. qiskit/visualization/dag/styles/color.json +10 -0
  169. qiskit/visualization/dag/styles/plain.json +5 -0
  170. qiskit/visualization/dag_visualization.py +169 -98
  171. qiskit/visualization/style.py +223 -0
  172. {qiskit-2.0.2.dist-info → qiskit-2.1.0rc1.dist-info}/METADATA +14 -13
  173. {qiskit-2.0.2.dist-info → qiskit-2.1.0rc1.dist-info}/RECORD +177 -168
  174. {qiskit-2.0.2.dist-info → qiskit-2.1.0rc1.dist-info}/entry_points.txt +6 -0
  175. qiskit/synthesis/discrete_basis/commutator_decompose.py +0 -265
  176. qiskit/synthesis/discrete_basis/gate_sequence.py +0 -421
  177. {qiskit-2.0.2.dist-info → qiskit-2.1.0rc1.dist-info}/WHEEL +0 -0
  178. {qiskit-2.0.2.dist-info → qiskit-2.1.0rc1.dist-info}/licenses/LICENSE.txt +0 -0
  179. {qiskit-2.0.2.dist-info → qiskit-2.1.0rc1.dist-info}/top_level.txt +0 -0
@@ -92,24 +92,24 @@ class U1Gate(Gate):
92
92
  `1612.00858 <https://arxiv.org/abs/1612.00858>`_
93
93
  """
94
94
 
95
- _standard_gate = StandardGate.U1Gate
95
+ _standard_gate = StandardGate.U1
96
96
 
97
97
  def __init__(self, theta: ParameterValueType, label: str | None = None):
98
98
  """Create new U1 gate."""
99
99
  super().__init__("u1", 1, [theta], label=label)
100
100
 
101
101
  def _define(self):
102
+ """Default definition"""
102
103
  # pylint: disable=cyclic-import
103
- from qiskit.circuit import QuantumCircuit, QuantumRegister
104
- from .u3 import U3Gate # pylint: disable=cyclic-import
104
+ from qiskit.circuit import QuantumCircuit
105
105
 
106
- q = QuantumRegister(1, "q")
107
- qc = QuantumCircuit(q, name=self.name)
108
- rules = [(U3Gate(0, 0, self.params[0]), [q[0]], [])]
109
- for instr, qargs, cargs in rules:
110
- qc._append(instr, qargs, cargs)
106
+ # ┌──────┐
107
+ # q: ┤ P(θ)
108
+ # └──────┘
111
109
 
112
- self.definition = qc
110
+ self.definition = QuantumCircuit._from_circuit_data(
111
+ StandardGate.U1._get_definition(self.params), add_regs=True, name=self.name
112
+ )
113
113
 
114
114
  def control(
115
115
  self,
@@ -224,7 +224,7 @@ class CU1Gate(ControlledGate):
224
224
  phase difference.
225
225
  """
226
226
 
227
- _standard_gate = StandardGate.CU1Gate
227
+ _standard_gate = StandardGate.CU1
228
228
 
229
229
  def __init__(
230
230
  self,
@@ -246,35 +246,19 @@ class CU1Gate(ControlledGate):
246
246
  )
247
247
 
248
248
  def _define(self):
249
- """
250
- gate cu1(lambda) a,b
251
- { u1(lambda/2) a; cx a,b;
252
- u1(-lambda/2) b; cx a,b;
253
- u1(lambda/2) b;
254
- }
255
- """
249
+ """Default definition"""
256
250
  # pylint: disable=cyclic-import
257
- from qiskit.circuit import QuantumCircuit, QuantumRegister
258
- from .x import CXGate # pylint: disable=cyclic-import
259
-
260
- # ┌─────────┐
261
- # q_0: ┤ U1(λ/2) ├──■────────────────■─────────────
262
- # └─────────┘┌─┴─┐┌──────────┐┌─┴─┐┌─────────┐
263
- # q_1: ───────────┤ X ├┤ U1(-λ/2) ├┤ X ├┤ U1(λ/2) ├
264
- # └───┘└──────────┘└───┘└─────────┘
265
- q = QuantumRegister(2, "q")
266
- qc = QuantumCircuit(q, name=self.name)
267
- rules = [
268
- (U1Gate(self.params[0] / 2), [q[0]], []),
269
- (CXGate(), [q[0], q[1]], []),
270
- (U1Gate(-self.params[0] / 2), [q[1]], []),
271
- (CXGate(), [q[0], q[1]], []),
272
- (U1Gate(self.params[0] / 2), [q[1]], []),
273
- ]
274
- for instr, qargs, cargs in rules:
275
- qc._append(instr, qargs, cargs)
276
-
277
- self.definition = qc
251
+ from qiskit.circuit import QuantumCircuit
252
+
253
+ # ┌────────┐
254
+ # q_0: ┤ P(θ/2) ├──■───────────────■────────────
255
+ # └────────┘┌─┴─┐┌─────────┐┌─┴─┐┌────────┐
256
+ # q_1: ──────────┤ X ├┤ P(-θ/2) ├┤ X ├┤ P(θ/2) ├
257
+ # └───┘└─────────┘└───┘└────────┘
258
+
259
+ self.definition = QuantumCircuit._from_circuit_data(
260
+ StandardGate.CU1._get_definition(self.params), add_regs=True, name=self.name
261
+ )
278
262
 
279
263
  def control(
280
264
  self,
@@ -408,24 +392,16 @@ class MCU1Gate(ControlledGate):
408
392
 
409
393
  def _define(self):
410
394
  # pylint: disable=cyclic-import
411
- from qiskit.circuit import QuantumCircuit, QuantumRegister
412
-
413
- q = QuantumRegister(self.num_qubits, "q")
414
- qc = QuantumCircuit(q, name=self.name)
415
-
416
395
  if self.num_ctrl_qubits == 0:
417
396
  definition = U1Gate(self.params[0]).definition
418
- if self.num_ctrl_qubits == 1:
397
+ elif self.num_ctrl_qubits == 1:
419
398
  definition = CU1Gate(self.params[0]).definition
420
399
  else:
421
- from .u3 import _gray_code_chain
422
-
423
- scaled_lam = self.params[0] / (2 ** (self.num_ctrl_qubits - 1))
424
- bottom_gate = CU1Gate(scaled_lam)
425
- definition = _gray_code_chain(q, self.num_ctrl_qubits, bottom_gate)
426
- for instr, qargs, cargs in definition:
427
- qc._append(instr, qargs, cargs)
428
- self.definition = qc
400
+ from .p import MCPhaseGate
401
+
402
+ definition = MCPhaseGate(self.params[0], self.num_ctrl_qubits).definition
403
+
404
+ self.definition = definition
429
405
 
430
406
  def control(
431
407
  self,
@@ -86,7 +86,7 @@ class U2Gate(Gate):
86
86
  using two X90 pulses.
87
87
  """
88
88
 
89
- _standard_gate = StandardGate.U2Gate
89
+ _standard_gate = StandardGate.U2
90
90
 
91
91
  def __init__(
92
92
  self,
@@ -98,17 +98,17 @@ class U2Gate(Gate):
98
98
  super().__init__("u2", 1, [phi, lam], label=label)
99
99
 
100
100
  def _define(self):
101
+ """Default definition"""
101
102
  # pylint: disable=cyclic-import
102
- from qiskit.circuit import QuantumCircuit, QuantumRegister
103
- from .u3 import U3Gate
103
+ from qiskit.circuit import QuantumCircuit
104
104
 
105
- q = QuantumRegister(1, "q")
106
- qc = QuantumCircuit(q, name=self.name)
107
- rules = [(U3Gate(pi / 2, self.params[0], self.params[1]), [q[0]], [])]
108
- for instr, qargs, cargs in rules:
109
- qc._append(instr, qargs, cargs)
105
+ # ┌────────────┐
106
+ # q: ┤ U(π/2,φ,λ)
107
+ # └────────────┘
110
108
 
111
- self.definition = qc
109
+ self.definition = QuantumCircuit._from_circuit_data(
110
+ StandardGate.U2._get_definition(self.params), add_regs=True, name=self.name
111
+ )
112
112
 
113
113
  def inverse(self, annotated: bool = False):
114
114
  r"""Return inverted U2 gate.
@@ -83,7 +83,7 @@ class U3Gate(Gate):
83
83
  U3(\theta, 0, 0) = RY(\theta)
84
84
  """
85
85
 
86
- _standard_gate = StandardGate.U3Gate
86
+ _standard_gate = StandardGate.U3
87
87
 
88
88
  def __init__(
89
89
  self,
@@ -151,12 +151,17 @@ class U3Gate(Gate):
151
151
  return gate
152
152
 
153
153
  def _define(self):
154
- from qiskit.circuit import QuantumCircuit, QuantumRegister
154
+ """Default definition"""
155
+ # pylint: disable=cyclic-import
156
+ from qiskit.circuit import QuantumCircuit
157
+
158
+ # ┌──────────┐
159
+ # q: ┤ U(θ,φ,λ) ├
160
+ # └──────────┘
155
161
 
156
- q = QuantumRegister(1, "q")
157
- qc = QuantumCircuit(q, name=self.name)
158
- qc.u(self.params[0], self.params[1], self.params[2], 0)
159
- self.definition = qc
162
+ self.definition = QuantumCircuit._from_circuit_data(
163
+ StandardGate.U3._get_definition(self.params), add_regs=True, name=self.name
164
+ )
160
165
 
161
166
  def __array__(self, dtype=None, copy=None):
162
167
  """Return a Numpy.array for the U3 gate."""
@@ -257,7 +262,7 @@ class CU3Gate(ControlledGate):
257
262
  \end{pmatrix}
258
263
  """
259
264
 
260
- _standard_gate = StandardGate.CU3Gate
265
+ _standard_gate = StandardGate.CU3
261
266
 
262
267
  def __init__(
263
268
  self,
@@ -281,40 +286,19 @@ class CU3Gate(ControlledGate):
281
286
  )
282
287
 
283
288
  def _define(self):
284
- """
285
- gate cu3(theta,phi,lambda) c, t
286
- { u1((lambda+phi)/2) c;
287
- u1((lambda-phi)/2) t;
288
- cx c,t;
289
- u3(-theta/2,0,-(phi+lambda)/2) t;
290
- cx c,t;
291
- u3(theta/2,phi,0) t;
292
- }
293
- """
289
+ """Default definition"""
294
290
  # pylint: disable=cyclic-import
295
- from qiskit.circuit import QuantumCircuit, QuantumRegister
296
- from .u1 import U1Gate
297
- from .x import CXGate # pylint: disable=cyclic-import
298
-
299
- # ┌───────────────┐
300
- # q_0: ┤ U1(λ/2 + φ/2) ├──■─────────────────────────────■─────────────────
301
- # ├───────────────┤┌─┴─┐┌───────────────────────┐┌─┴─┐┌─────────────┐
302
- # q_1: ┤ U1(λ/2 - φ/2) ├┤ X ├┤ U3(-0/2,0,-λ/2 - φ/2) ├┤ X ├┤ U3(0/2,φ,0) ├
303
- # └───────────────┘└───┘└───────────────────────┘└───┘└─────────────┘
304
- q = QuantumRegister(2, "q")
305
- qc = QuantumCircuit(q, name=self.name)
306
- rules = [
307
- (U1Gate((self.params[2] + self.params[1]) / 2), [q[0]], []),
308
- (U1Gate((self.params[2] - self.params[1]) / 2), [q[1]], []),
309
- (CXGate(), [q[0], q[1]], []),
310
- (U3Gate(-self.params[0] / 2, 0, -(self.params[1] + self.params[2]) / 2), [q[1]], []),
311
- (CXGate(), [q[0], q[1]], []),
312
- (U3Gate(self.params[0] / 2, self.params[1], 0), [q[1]], []),
313
- ]
314
- for instr, qargs, cargs in rules:
315
- qc._append(instr, qargs, cargs)
316
-
317
- self.definition = qc
291
+ from qiskit.circuit import QuantumCircuit
292
+
293
+ # ┌──────────────┐
294
+ # q_0: ┤ P(λ/2 + φ/2) ├──■────────────────────────────■────────────────
295
+ # ├──────────────┤┌─┴─┐┌──────────────────────┐┌─┴─┐┌────────────┐
296
+ # q_1: ┤ P(λ/2 - φ/2) ├┤ X ├┤ U(-θ/2,0,-λ/2 - φ/2) ├┤ X ├┤ U(θ/2,φ,0) ├
297
+ # └──────────────┘└───┘└──────────────────────┘└───┘└────────────┘
298
+
299
+ self.definition = QuantumCircuit._from_circuit_data(
300
+ StandardGate.CU3._get_definition(self.params), add_regs=True, name=self.name
301
+ )
318
302
 
319
303
  def inverse(self, annotated: bool = False):
320
304
  r"""Return inverted CU3 gate.