qiskit 2.0.3__cp39-abi3-macosx_11_0_arm64.whl → 2.1.0__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 (180) 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 +104 -20
  5. qiskit/circuit/_add_control.py +57 -31
  6. qiskit/circuit/_classical_resource_map.py +4 -0
  7. qiskit/circuit/annotation.py +504 -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 +4 -4
  15. qiskit/circuit/library/arithmetic/multipliers/multiplier.py +2 -2
  16. qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +8 -4
  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 +172 -99
  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 +182 -6
  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/result/sampled_expval.py +3 -1
  115. qiskit/synthesis/__init__.py +10 -0
  116. qiskit/synthesis/arithmetic/__init__.py +1 -1
  117. qiskit/synthesis/arithmetic/adders/__init__.py +1 -0
  118. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +6 -2
  119. qiskit/synthesis/arithmetic/adders/rv_ripple_carry_adder.py +156 -0
  120. qiskit/synthesis/discrete_basis/generate_basis_approximations.py +14 -126
  121. qiskit/synthesis/discrete_basis/solovay_kitaev.py +161 -121
  122. qiskit/synthesis/evolution/lie_trotter.py +10 -7
  123. qiskit/synthesis/evolution/product_formula.py +10 -7
  124. qiskit/synthesis/evolution/qdrift.py +10 -7
  125. qiskit/synthesis/evolution/suzuki_trotter.py +10 -7
  126. qiskit/synthesis/multi_controlled/__init__.py +4 -0
  127. qiskit/synthesis/multi_controlled/mcx_synthesis.py +402 -178
  128. qiskit/synthesis/multi_controlled/multi_control_rotation_gates.py +14 -15
  129. qiskit/synthesis/qft/qft_decompose_lnn.py +7 -25
  130. qiskit/synthesis/unitary/qsd.py +80 -9
  131. qiskit/transpiler/__init__.py +10 -3
  132. qiskit/transpiler/instruction_durations.py +2 -20
  133. qiskit/transpiler/passes/__init__.py +5 -2
  134. qiskit/transpiler/passes/layout/dense_layout.py +26 -6
  135. qiskit/transpiler/passes/layout/disjoint_utils.py +1 -166
  136. qiskit/transpiler/passes/layout/sabre_layout.py +22 -3
  137. qiskit/transpiler/passes/layout/sabre_pre_layout.py +1 -1
  138. qiskit/transpiler/passes/layout/vf2_layout.py +49 -13
  139. qiskit/transpiler/passes/layout/vf2_utils.py +10 -0
  140. qiskit/transpiler/passes/optimization/__init__.py +1 -1
  141. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +2 -1
  142. qiskit/transpiler/passes/optimization/optimize_clifford_t.py +68 -0
  143. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +3 -9
  144. qiskit/transpiler/passes/routing/sabre_swap.py +4 -2
  145. qiskit/transpiler/passes/routing/star_prerouting.py +106 -81
  146. qiskit/transpiler/passes/scheduling/__init__.py +1 -1
  147. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -1
  148. qiskit/transpiler/passes/scheduling/padding/__init__.py +1 -0
  149. qiskit/transpiler/passes/scheduling/padding/context_aware_dynamical_decoupling.py +876 -0
  150. qiskit/transpiler/passes/synthesis/__init__.py +1 -0
  151. qiskit/transpiler/passes/synthesis/clifford_unitary_synth_plugin.py +123 -0
  152. qiskit/transpiler/passes/synthesis/hls_plugins.py +494 -93
  153. qiskit/transpiler/passes/synthesis/plugin.py +4 -0
  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/transpiler/target.py +15 -2
  161. qiskit/utils/optionals.py +6 -5
  162. qiskit/visualization/circuit/_utils.py +5 -3
  163. qiskit/visualization/circuit/latex.py +9 -2
  164. qiskit/visualization/circuit/matplotlib.py +26 -4
  165. qiskit/visualization/circuit/qcstyle.py +9 -157
  166. qiskit/visualization/dag/__init__.py +13 -0
  167. qiskit/visualization/dag/dagstyle.py +103 -0
  168. qiskit/visualization/dag/styles/__init__.py +13 -0
  169. qiskit/visualization/dag/styles/color.json +10 -0
  170. qiskit/visualization/dag/styles/plain.json +5 -0
  171. qiskit/visualization/dag_visualization.py +169 -98
  172. qiskit/visualization/style.py +223 -0
  173. {qiskit-2.0.3.dist-info → qiskit-2.1.0.dist-info}/METADATA +7 -6
  174. {qiskit-2.0.3.dist-info → qiskit-2.1.0.dist-info}/RECORD +178 -169
  175. {qiskit-2.0.3.dist-info → qiskit-2.1.0.dist-info}/entry_points.txt +6 -0
  176. qiskit/synthesis/discrete_basis/commutator_decompose.py +0 -265
  177. qiskit/synthesis/discrete_basis/gate_sequence.py +0 -421
  178. {qiskit-2.0.3.dist-info → qiskit-2.1.0.dist-info}/WHEEL +0 -0
  179. {qiskit-2.0.3.dist-info → qiskit-2.1.0.dist-info}/licenses/LICENSE.txt +0 -0
  180. {qiskit-2.0.3.dist-info → qiskit-2.1.0.dist-info}/top_level.txt +0 -0
@@ -20,6 +20,7 @@ from qiskit._accelerate.circuit import CircuitData
20
20
  from qiskit.circuit import QuantumRegister, ClassicalRegister
21
21
  from qiskit.circuit.parametertable import ParameterView
22
22
  from qiskit.circuit.quantumcircuit import QuantumCircuit, _copy_metadata
23
+ from qiskit.utils.deprecation import deprecate_func
23
24
 
24
25
 
25
26
  class BlueprintCircuit(QuantumCircuit, ABC):
@@ -33,6 +34,11 @@ class BlueprintCircuit(QuantumCircuit, ABC):
33
34
  accessed, the ``_build`` method is called. There the configuration of the circuit is checked.
34
35
  """
35
36
 
37
+ @deprecate_func(
38
+ since="2.1",
39
+ additional_msg="There is no direct replacement other than the QuantumCircuit class.",
40
+ removal_timeline="in Qiskit 3.0",
41
+ )
36
42
  def __init__(self, *regs, name: str | None = None) -> None:
37
43
  """Create a new blueprint circuit."""
38
44
  self._is_initialized = False
@@ -64,9 +64,9 @@ class InnerProduct(QuantumCircuit):
64
64
  """
65
65
 
66
66
  @deprecate_func(
67
- since="1.3",
67
+ since="2.1",
68
68
  additional_msg="Use qiskit.circuit.library.InnerProductGate instead.",
69
- pending=True,
69
+ removal_timeline="in Qiskit 3.0",
70
70
  )
71
71
  def __init__(self, num_qubits: int) -> None:
72
72
  """Return a circuit to compute the inner product of 2 n-qubit registers.
@@ -54,9 +54,9 @@ class AND(QuantumCircuit):
54
54
  """
55
55
 
56
56
  @deprecate_func(
57
- since="1.3",
57
+ since="2.1",
58
58
  additional_msg="Use qiskit.circuit.library.AndGate instead.",
59
- pending=True,
59
+ removal_timeline="in Qiskit 3.0",
60
60
  )
61
61
  def __init__(
62
62
  self,
@@ -55,9 +55,9 @@ class OR(QuantumCircuit):
55
55
  """
56
56
 
57
57
  @deprecate_func(
58
- since="1.3",
58
+ since="2.1",
59
59
  additional_msg="Use qiskit.circuit.library.OrGate instead.",
60
- pending=True,
60
+ removal_timeline="in Qiskit 3.0",
61
61
  )
62
62
  def __init__(
63
63
  self,
@@ -135,7 +135,7 @@ class OrGate(Gate):
135
135
  .. plot::
136
136
  :alt: Diagram illustrating the previously described circuit.
137
137
 
138
- from qiskit.circuit import QuantumCircuit
138
+ from qiskit import QuantumCircuit
139
139
  from qiskit.circuit.library import OrGate
140
140
  from qiskit.visualization.library import _generate_circuit_library_visualization
141
141
  circuit = QuantumCircuit(6)
@@ -30,10 +30,10 @@ class XOR(QuantumCircuit):
30
30
  """
31
31
 
32
32
  @deprecate_func(
33
- since="1.3",
33
+ since="2.1",
34
34
  additional_msg="Instead, for xor-ing with a specified amount, use BitwiseXorGate,"
35
35
  "and for xor-ing with a random amount, use random_bitwise_xor.",
36
- pending=True,
36
+ removal_timeline="in Qiskit 3.0",
37
37
  )
38
38
  def __init__(
39
39
  self,
@@ -76,12 +76,12 @@ class ZFeatureMap(PauliFeatureMap):
76
76
  """
77
77
 
78
78
  @deprecate_func(
79
- since="1.3",
79
+ since="2.1",
80
80
  additional_msg=(
81
81
  "Use the z_feature_map function as a replacement. Note that this will no longer "
82
82
  "return a BlueprintCircuit, but just a plain QuantumCircuit."
83
83
  ),
84
- pending=True,
84
+ removal_timeline="in Qiskit 3.0",
85
85
  )
86
86
  def __init__(
87
87
  self,
@@ -96,12 +96,12 @@ class ZZFeatureMap(PauliFeatureMap):
96
96
  """
97
97
 
98
98
  @deprecate_func(
99
- since="1.3",
99
+ since="2.1",
100
100
  additional_msg=(
101
101
  "Use the z_feature_map function as a replacement. Note that this will no longer "
102
102
  "return a BlueprintCircuit, but just a plain QuantumCircuit."
103
103
  ),
104
- pending=True,
104
+ removal_timeline="in Qiskit 3.0",
105
105
  )
106
106
  def __init__(
107
107
  self,
@@ -408,12 +408,12 @@ class PauliFeatureMap(NLocal):
408
408
  """
409
409
 
410
410
  @deprecate_func(
411
- since="1.3",
411
+ since="2.1",
412
412
  additional_msg=(
413
413
  "Use the pauli_feature_map function as a replacement. Note that this will no longer "
414
414
  "return a BlueprintCircuit, but just a plain QuantumCircuit."
415
415
  ),
416
- pending=True,
416
+ removal_timeline="in Qiskit 3.0",
417
417
  )
418
418
  def __init__(
419
419
  self,
@@ -54,9 +54,9 @@ class FourierChecking(QuantumCircuit):
54
54
  """
55
55
 
56
56
  @deprecate_func(
57
- since="1.3",
57
+ since="2.1",
58
58
  additional_msg="Use qiskit.circuit.library.fourier_checking instead.",
59
- pending=True,
59
+ removal_timeline="in Qiskit 3.0",
60
60
  )
61
61
  def __init__(self, f: Sequence[int], g: Sequence[int]) -> None:
62
62
  """Create Fourier checking circuit.
@@ -34,7 +34,11 @@ _EPS = 1e-10
34
34
  class Diagonal(QuantumCircuit):
35
35
  """Circuit implementing a diagonal transformation."""
36
36
 
37
- @deprecate_func(since="1.3", additional_msg="Use DiagonalGate instead.", pending=True)
37
+ @deprecate_func(
38
+ since="2.1",
39
+ additional_msg="Use DiagonalGate instead.",
40
+ removal_timeline="in Qiskit 3.0",
41
+ )
38
42
  def __init__(self, diag: Sequence[complex]) -> None:
39
43
  r"""
40
44
  Args:
@@ -78,7 +78,11 @@ class GMS(QuantumCircuit):
78
78
  `arXiv:1707.06356 <https://arxiv.org/abs/1707.06356>`_
79
79
  """
80
80
 
81
- @deprecate_func(since="1.3", additional_msg="Use the MSGate instead.", pending=True)
81
+ @deprecate_func(
82
+ since="2.1",
83
+ additional_msg="Use the MSGate instead.",
84
+ removal_timeline="in Qiskit 3.0",
85
+ )
82
86
  def __init__(self, num_qubits: int, theta: list[list[float]] | np.ndarray) -> None:
83
87
  """Create a new Global Mølmer–Sørensen (GMS) gate.
84
88
 
@@ -227,9 +227,9 @@ class LinearFunction(Gate):
227
227
  self.definition = synth_cnot_count_full_pmh(self.linear)
228
228
 
229
229
  @deprecate_func(
230
- since="1.3",
231
- pending=True,
230
+ since="2.1",
232
231
  additional_msg="Call LinearFunction.definition instead, or compile the circuit.",
232
+ removal_timeline="in Qiskit 3.0",
233
233
  )
234
234
  def synthesize(self):
235
235
  """Synthesizes the linear function into a quantum circuit.
@@ -28,7 +28,11 @@ from qiskit.utils.deprecation import deprecate_func
28
28
  class Permutation(QuantumCircuit):
29
29
  """An n_qubit circuit that permutes qubits."""
30
30
 
31
- @deprecate_func(since="1.3", pending=True, additional_msg="Use PermutationGate instead.")
31
+ @deprecate_func(
32
+ since="2.1",
33
+ additional_msg="Use PermutationGate instead.",
34
+ removal_timeline="in Qiskit 3.0",
35
+ )
32
36
  def __init__(
33
37
  self,
34
38
  num_qubits: int,
@@ -286,7 +286,7 @@ class UCGate(Gate):
286
286
  This method finds the single qubit gate arising in the decomposition of UCGates given in
287
287
  https://arxiv.org/pdf/quant-ph/0410066.pdf.
288
288
  """
289
- single_qubit_gates = [gate.astype(complex) for gate in self.params]
289
+ single_qubit_gates = [np.asarray(gate, dtype=complex, order="f") for gate in self.params]
290
290
  if self.simp_contr[0]:
291
291
  return uc_gate.dec_ucg_help(single_qubit_gates, len(self.simp_contr[1]) + 1)
292
292
  return uc_gate.dec_ucg_help(single_qubit_gates, self.num_qubits)
@@ -161,6 +161,15 @@ class UnitaryGate(Gate):
161
161
  )
162
162
 
163
163
  self.definition = qs_decomposition(self.to_matrix())
164
+ # Since iterative cosine-sine decomposition may provide imprecise matrices,
165
+ # we use the Isometry decomposition in this case
166
+ # pylint: disable=cyclic-import
167
+ from qiskit.quantum_info.operators import Operator
168
+
169
+ if not (
170
+ matrix_equal(Operator(self.definition).to_matrix(), self.to_matrix(), atol=1e-7)
171
+ ):
172
+ self.definition = Isometry(self.matrix, 0, 0).definition
164
173
 
165
174
  def control(
166
175
  self,
@@ -185,14 +194,24 @@ class UnitaryGate(Gate):
185
194
  if not annotated:
186
195
  mat = self.to_matrix()
187
196
  cmat = _compute_control_matrix(mat, num_ctrl_qubits, ctrl_state=None)
188
- iso = Isometry(cmat, 0, 0)
197
+ from qiskit.synthesis.unitary.qsd import qs_decomposition
198
+
199
+ cmat_def = qs_decomposition(cmat, opt_a1=True, opt_a2=False)
200
+ # Since iterative cosine-sine decomposition may provide imprecise matrices,
201
+ # we use the Isometry decomposition in this case
202
+ # pylint: disable=cyclic-import
203
+ from qiskit.quantum_info.operators import Operator
204
+
205
+ if not matrix_equal(Operator(cmat_def).to_matrix(), cmat, atol=1e-7):
206
+ self.definition = Isometry(cmat, 0, 0).definition
207
+
189
208
  gate = ControlledGate(
190
209
  "c-unitary",
191
210
  num_qubits=self.num_qubits + num_ctrl_qubits,
192
211
  params=[mat],
193
212
  label=label,
194
213
  num_ctrl_qubits=num_ctrl_qubits,
195
- definition=iso.definition,
214
+ definition=cmat_def,
196
215
  ctrl_state=ctrl_state,
197
216
  base_gate=self.copy(),
198
217
  )
@@ -60,9 +60,9 @@ class GraphState(QuantumCircuit):
60
60
  """
61
61
 
62
62
  @deprecate_func(
63
- since="1.3",
63
+ since="2.1",
64
64
  additional_msg="Use qiskit.circuit.library.GraphStateGate instead.",
65
- pending=True,
65
+ removal_timeline="in Qiskit 3.0",
66
66
  )
67
67
  def __init__(self, adjacency_matrix: list | np.ndarray) -> None:
68
68
  """Create graph state preparation circuit.
@@ -428,9 +428,9 @@ class GroverOperator(QuantumCircuit):
428
428
  """
429
429
 
430
430
  @deprecate_func(
431
- since="1.3",
431
+ since="2.1",
432
432
  additional_msg="Use qiskit.circuit.library.grover_operator instead.",
433
- pending=True,
433
+ removal_timeline="in Qiskit 3.0",
434
434
  )
435
435
  def __init__(
436
436
  self,
@@ -70,9 +70,9 @@ class HiddenLinearFunction(QuantumCircuit):
70
70
  """
71
71
 
72
72
  @deprecate_func(
73
- since="1.3",
73
+ since="2.1",
74
74
  additional_msg="Use qiskit.circuit.library.hidden_linear_function instead.",
75
- pending=True,
75
+ removal_timeline="in Qiskit 3.0",
76
76
  )
77
77
  def __init__(self, adjacency_matrix: list | np.ndarray) -> None:
78
78
  """Create new HLF circuit.
@@ -65,9 +65,9 @@ class IQP(QuantumCircuit):
65
65
  """
66
66
 
67
67
  @deprecate_func(
68
- since="1.3",
68
+ since="2.1",
69
69
  additional_msg="Use the qiskit.circuit.library.iqp function instead.",
70
- pending=True,
70
+ removal_timeline="in Qiskit 3.0",
71
71
  )
72
72
  def __init__(self, interactions: list | np.ndarray) -> None:
73
73
  """Create IQP circuit.
@@ -194,9 +194,9 @@ class EfficientSU2(TwoLocal):
194
194
  """
195
195
 
196
196
  @deprecate_func(
197
- since="1.3",
197
+ since="2.1",
198
198
  additional_msg="Use the function qiskit.circuit.library.efficient_su2 instead.",
199
- pending=True,
199
+ removal_timeline="in Qiskit 3.0",
200
200
  )
201
201
  def __init__(
202
202
  self,
@@ -263,7 +263,7 @@ def hamiltonian_variational_ansatz(
263
263
 
264
264
  """
265
265
  # If a single operator is given, check if it is a sum of operators (a SparsePauliOp),
266
- # and split it into commuting terms. Otherwise treat it as single operator.
266
+ # and split it into commuting terms. Otherwise, treat it as single operator.
267
267
  if isinstance(hamiltonian, SparsePauliOp):
268
268
  hamiltonian = hamiltonian.group_commuting()
269
269
 
@@ -17,7 +17,7 @@ from collections.abc import Callable, Iterable
17
17
  from numpy import pi
18
18
 
19
19
  from qiskit.circuit import QuantumCircuit, Parameter
20
- from qiskit.circuit.library.standard_gates import RZGate
20
+ from qiskit.circuit.library.standard_gates import RZGate, XXPlusYYGate
21
21
  from qiskit.utils.deprecation import deprecate_func
22
22
  from .n_local import n_local, BlockEntanglement
23
23
  from .two_local import TwoLocal
@@ -79,7 +79,7 @@ def excitation_preserving(
79
79
  ansatz = excitation_preserving(3, reps=1, insert_barriers=True, entanglement="linear")
80
80
  ansatz.draw("mpl")
81
81
 
82
- The entanglement structure can be explicitly specified with the ``entanglement``
82
+ The entanglement structure can be explicitly specified with the ``entanglement``
83
83
  argument. The ``"fsim"`` mode includes an additional parameterized :class:`.CPhaseGate`
84
84
  in each block:
85
85
 
@@ -116,8 +116,7 @@ def excitation_preserving(
116
116
  theta = Parameter("θ")
117
117
  if num_qubits > 1:
118
118
  swap = QuantumCircuit(2, name="Interaction")
119
- swap.rxx(theta, 0, 1)
120
- swap.ryy(theta, 0, 1)
119
+ swap.append(XXPlusYYGate(2 * theta), [0, 1])
121
120
  if mode == "fsim":
122
121
  phi = Parameter("φ")
123
122
  swap.cp(phi, 0, 1)
@@ -209,15 +208,15 @@ class ExcitationPreserving(TwoLocal):
209
208
 
210
209
  .. seealso::
211
210
 
212
- The :func:`.excitation_preserving` function constructs a functionally equivalent circuit,
211
+ The :func:`.excitation_preserving` function constructs a functionally equivalent circuit,
213
212
  but faster.
214
213
 
215
214
  """
216
215
 
217
216
  @deprecate_func(
218
- since="1.3",
217
+ since="2.1",
219
218
  additional_msg="Use the function qiskit.circuit.library.excitation_preserving instead.",
220
- pending=True,
219
+ removal_timeline="in Qiskit 3.0",
221
220
  )
222
221
  def __init__(
223
222
  self,
@@ -272,8 +271,7 @@ class ExcitationPreserving(TwoLocal):
272
271
 
273
272
  theta = Parameter("θ")
274
273
  swap = QuantumCircuit(2, name="Interaction")
275
- swap.rxx(theta, 0, 1)
276
- swap.ryy(theta, 0, 1)
274
+ swap.append(XXPlusYYGate(2 * theta), [0, 1])
277
275
  if mode == "fsim":
278
276
  phi = Parameter("φ")
279
277
  swap.cp(phi, 0, 1)
@@ -309,9 +309,10 @@ class NLocal(BlueprintCircuit):
309
309
  """
310
310
 
311
311
  @deprecate_func(
312
- since="1.3",
313
- additional_msg="Use the function qiskit.circuit.library.n_local instead.",
314
- pending=True,
312
+ since="2.1",
313
+ additional_msg="This applies to NLocal subclasses too. Use the corresponding function "
314
+ "from the module qiskit.circuit.library.n_local instead.",
315
+ removal_timeline="in Qiskit 3.0",
315
316
  )
316
317
  def __init__(
317
318
  self,
@@ -170,9 +170,9 @@ class PauliTwoDesign(TwoLocal):
170
170
  """
171
171
 
172
172
  @deprecate_func(
173
- since="1.3",
173
+ since="2.1",
174
174
  additional_msg="Use the function qiskit.circuit.library.pauli_two_design instead.",
175
- pending=True,
175
+ removal_timeline="in Qiskit 3.0",
176
176
  )
177
177
  def __init__(
178
178
  self,
@@ -238,9 +238,9 @@ class RealAmplitudes(TwoLocal):
238
238
  """
239
239
 
240
240
  @deprecate_func(
241
- since="1.3",
241
+ since="2.1",
242
242
  additional_msg="Use the function qiskit.circuit.library.real_amplitudes instead.",
243
- pending=True,
243
+ removal_timeline="in Qiskit 3.0",
244
244
  )
245
245
  def __init__(
246
246
  self,
@@ -138,9 +138,9 @@ class TwoLocal(NLocal):
138
138
  """
139
139
 
140
140
  @deprecate_func(
141
- since="1.3",
141
+ since="2.1",
142
142
  additional_msg="Use the function qiskit.circuit.library.n_local instead.",
143
- pending=True,
143
+ removal_timeline="in Qiskit 3.0",
144
144
  )
145
145
  def __init__(
146
146
  self,
@@ -60,9 +60,9 @@ class UnitaryOverlap(QuantumCircuit):
60
60
  """
61
61
 
62
62
  @deprecate_func(
63
- since="1.3",
63
+ since="2.1",
64
64
  additional_msg="Use qiskit.circuit.library.unitary_overlap instead.",
65
- pending=True,
65
+ removal_timeline="in Qiskit 3.0",
66
66
  )
67
67
  def __init__(
68
68
  self,
@@ -21,6 +21,7 @@ from qiskit.circuit.gate import Gate
21
21
  from qiskit.circuit.quantumcircuit import ParameterValueType
22
22
  from qiskit.circuit.parameterexpression import ParameterExpression
23
23
  from qiskit.quantum_info import Pauli, SparsePauliOp, SparseObservable
24
+ import qiskit.quantum_info
24
25
 
25
26
  if TYPE_CHECKING:
26
27
  from qiskit.synthesis.evolution import EvolutionSynthesis
@@ -91,10 +92,10 @@ class PauliEvolutionGate(Gate):
91
92
  def __init__(
92
93
  self,
93
94
  operator: (
94
- Pauli
95
+ qiskit.quantum_info.Pauli
95
96
  | SparsePauliOp
96
97
  | SparseObservable
97
- | list[Pauli | SparsePauliOp | SparseObservable]
98
+ | list[qiskit.quantum_info.Pauli | SparsePauliOp | SparseObservable]
98
99
  ),
99
100
  time: ParameterValueType = 1.0,
100
101
  label: str | None = None,
@@ -50,9 +50,9 @@ class PhaseEstimation(QuantumCircuit):
50
50
  """
51
51
 
52
52
  @deprecate_func(
53
- since="1.3",
53
+ since="2.1",
54
54
  additional_msg="Use qiskit.circuit.library.phase_estimation instead.",
55
- pending=True,
55
+ removal_timeline="in Qiskit 3.0",
56
56
  )
57
57
  def __init__(
58
58
  self,
@@ -49,7 +49,7 @@ class DCXGate(SingletonGate):
49
49
  \end{pmatrix}
50
50
  """
51
51
 
52
- _standard_gate = StandardGate.DCXGate
52
+ _standard_gate = StandardGate.DCX
53
53
 
54
54
  def __init__(self, label=None):
55
55
  """Create new DCX gate."""
@@ -58,20 +58,19 @@ class DCXGate(SingletonGate):
58
58
  _singleton_lookup_key = stdlib_singleton_key()
59
59
 
60
60
  def _define(self):
61
- """
62
- gate dcx a, b { cx a, b; cx b, a; }
63
- """
61
+ """Default definition"""
64
62
  # pylint: disable=cyclic-import
65
- from qiskit.circuit import QuantumCircuit, QuantumRegister
66
- from .x import CXGate
63
+ from qiskit.circuit import QuantumCircuit
67
64
 
68
- q = QuantumRegister(2, "q")
69
- qc = QuantumCircuit(q, name=self.name)
70
- rules = [(CXGate(), [q[0], q[1]], []), (CXGate(), [q[1], q[0]], [])]
71
- for instr, qargs, cargs in rules:
72
- qc._append(instr, qargs, cargs)
65
+ # ┌───┐
66
+ # q_0: ──■──┤ X ├
67
+ # ┌─┴─┐└─┬─┘
68
+ # q_1: X ├──■──
69
+ # └───┘
73
70
 
74
- self.definition = qc
71
+ self.definition = QuantumCircuit._from_circuit_data(
72
+ StandardGate.DCX._get_definition(self.params), add_regs=True, name=self.name
73
+ )
75
74
 
76
75
  def __eq__(self, other):
77
76
  return isinstance(other, DCXGate)
@@ -17,8 +17,6 @@ import numpy as np
17
17
  from qiskit.circuit._utils import with_gate_array
18
18
  from qiskit.circuit.singleton import SingletonGate, stdlib_singleton_key
19
19
  from qiskit._accelerate.circuit import StandardGate
20
- from .rzx import RZXGate
21
- from .x import XGate
22
20
 
23
21
 
24
22
  @with_gate_array(
@@ -39,11 +37,13 @@ class ECRGate(SingletonGate):
39
37
 
40
38
  .. code-block:: text
41
39
 
42
- ┌─────────┐ ┌────────────┐┌────────┐┌─────────────┐
43
- q_0: ┤0 ├ q_0: ┤0 ├┤ RX(pi) ├┤0
44
- │ ECR │ = │ RZX(pi/4) │└────────┘│ RZX(-pi/4)
45
- q_1: ┤1 ├ q_1: ┤1 ├──────────┤1 ├
46
- └─────────┘ └────────────┘ └─────────────┘
40
+ global phase: 7π/4
41
+ ┌─────────┐ ┌───┐ ┌───┐
42
+ q_0: ┤0 ├ q_0: ┤ S ├───■──┤ X ├
43
+ │ ECR │ = ├───┴┐┌─┴─┐└───┘
44
+ q_1: ┤1 ├ q_1: ┤ √X ├┤ X ├─────
45
+ └─────────┘ └────┘└───┘
46
+
47
47
 
48
48
  **Matrix Representation:**
49
49
 
@@ -84,7 +84,7 @@ class ECRGate(SingletonGate):
84
84
  \end{pmatrix}
85
85
  """
86
86
 
87
- _standard_gate = StandardGate.ECRGate
87
+ _standard_gate = StandardGate.ECR
88
88
 
89
89
  def __init__(self, label=None):
90
90
  """Create new ECR gate."""
@@ -93,23 +93,20 @@ class ECRGate(SingletonGate):
93
93
  _singleton_lookup_key = stdlib_singleton_key()
94
94
 
95
95
  def _define(self):
96
- """
97
- gate ecr a, b { rzx(pi/4) a, b; x a; rzx(-pi/4) a, b;}
98
- """
96
+ """Default definition (in terms of simpler Clifford gates)"""
99
97
  # pylint: disable=cyclic-import
100
- from qiskit.circuit import QuantumCircuit, QuantumRegister
101
-
102
- q = QuantumRegister(2, "q")
103
- qc = QuantumCircuit(q, name=self.name)
104
- rules = [
105
- (RZXGate(np.pi / 4), [q[0], q[1]], []),
106
- (XGate(), [q[0]], []),
107
- (RZXGate(-np.pi / 4), [q[0], q[1]], []),
108
- ]
109
- for instr, qargs, cargs in rules:
110
- qc._append(instr, qargs, cargs)
111
-
112
- self.definition = qc
98
+ from qiskit.circuit import QuantumCircuit
99
+
100
+ # global phase: 7π/4
101
+ # ┌───┐ ┌───┐
102
+ # q_0: ┤ S ├───■──┤ X ├
103
+ # ├───┴┐┌─┴─┐└───┘
104
+ # q_1: ┤ √X ├┤ X ├─────
105
+ # └────┘└───┘
106
+
107
+ self.definition = QuantumCircuit._from_circuit_data(
108
+ StandardGate.ECR._get_definition(self.params), add_regs=True, name=self.name
109
+ )
113
110
 
114
111
  def inverse(self, annotated: bool = False):
115
112
  """Return inverse ECR gate (itself).