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.
- qiskit/VERSION.txt +1 -1
- qiskit/__init__.py +19 -1
- qiskit/_accelerate.abi3.so +0 -0
- qiskit/circuit/__init__.py +13 -21
- qiskit/circuit/_add_control.py +57 -31
- qiskit/circuit/_classical_resource_map.py +4 -0
- qiskit/circuit/annotation.py +404 -0
- qiskit/circuit/classical/expr/__init__.py +1 -1
- qiskit/circuit/classical/expr/expr.py +104 -446
- qiskit/circuit/classical/expr/visitors.py +6 -0
- qiskit/circuit/classical/types/types.py +7 -130
- qiskit/circuit/controlflow/box.py +32 -7
- qiskit/circuit/delay.py +11 -9
- qiskit/circuit/library/arithmetic/adders/adder.py +5 -5
- qiskit/circuit/library/arithmetic/multipliers/multiplier.py +3 -3
- qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +7 -3
- qiskit/circuit/library/arithmetic/piecewise_linear_pauli_rotations.py +23 -15
- qiskit/circuit/library/arithmetic/piecewise_polynomial_pauli_rotations.py +22 -14
- qiskit/circuit/library/arithmetic/quadratic_form.py +6 -0
- qiskit/circuit/library/arithmetic/weighted_adder.py +43 -24
- qiskit/circuit/library/basis_change/qft.py +2 -2
- qiskit/circuit/library/blueprintcircuit.py +6 -0
- qiskit/circuit/library/boolean_logic/inner_product.py +2 -2
- qiskit/circuit/library/boolean_logic/quantum_and.py +2 -2
- qiskit/circuit/library/boolean_logic/quantum_or.py +3 -3
- qiskit/circuit/library/boolean_logic/quantum_xor.py +2 -2
- qiskit/circuit/library/data_preparation/_z_feature_map.py +2 -2
- qiskit/circuit/library/data_preparation/_zz_feature_map.py +2 -2
- qiskit/circuit/library/data_preparation/pauli_feature_map.py +2 -2
- qiskit/circuit/library/fourier_checking.py +2 -2
- qiskit/circuit/library/generalized_gates/diagonal.py +5 -1
- qiskit/circuit/library/generalized_gates/gms.py +5 -1
- qiskit/circuit/library/generalized_gates/linear_function.py +2 -2
- qiskit/circuit/library/generalized_gates/permutation.py +5 -1
- qiskit/circuit/library/generalized_gates/uc.py +1 -1
- qiskit/circuit/library/generalized_gates/unitary.py +21 -2
- qiskit/circuit/library/graph_state.py +2 -2
- qiskit/circuit/library/grover_operator.py +2 -2
- qiskit/circuit/library/hidden_linear_function.py +2 -2
- qiskit/circuit/library/iqp.py +2 -2
- qiskit/circuit/library/n_local/efficient_su2.py +2 -2
- qiskit/circuit/library/n_local/evolved_operator_ansatz.py +1 -1
- qiskit/circuit/library/n_local/excitation_preserving.py +7 -9
- qiskit/circuit/library/n_local/n_local.py +4 -3
- qiskit/circuit/library/n_local/pauli_two_design.py +2 -2
- qiskit/circuit/library/n_local/real_amplitudes.py +2 -2
- qiskit/circuit/library/n_local/two_local.py +2 -2
- qiskit/circuit/library/overlap.py +2 -2
- qiskit/circuit/library/pauli_evolution.py +3 -2
- qiskit/circuit/library/phase_estimation.py +2 -2
- qiskit/circuit/library/standard_gates/dcx.py +11 -12
- qiskit/circuit/library/standard_gates/ecr.py +21 -24
- qiskit/circuit/library/standard_gates/equivalence_library.py +232 -96
- qiskit/circuit/library/standard_gates/global_phase.py +5 -6
- qiskit/circuit/library/standard_gates/h.py +22 -45
- qiskit/circuit/library/standard_gates/i.py +1 -1
- qiskit/circuit/library/standard_gates/iswap.py +13 -31
- qiskit/circuit/library/standard_gates/p.py +19 -26
- qiskit/circuit/library/standard_gates/r.py +11 -17
- qiskit/circuit/library/standard_gates/rx.py +21 -45
- qiskit/circuit/library/standard_gates/rxx.py +7 -22
- qiskit/circuit/library/standard_gates/ry.py +21 -39
- qiskit/circuit/library/standard_gates/ryy.py +13 -28
- qiskit/circuit/library/standard_gates/rz.py +18 -35
- qiskit/circuit/library/standard_gates/rzx.py +7 -22
- qiskit/circuit/library/standard_gates/rzz.py +7 -19
- qiskit/circuit/library/standard_gates/s.py +44 -39
- qiskit/circuit/library/standard_gates/swap.py +25 -38
- qiskit/circuit/library/standard_gates/sx.py +34 -41
- qiskit/circuit/library/standard_gates/t.py +18 -27
- qiskit/circuit/library/standard_gates/u.py +8 -24
- qiskit/circuit/library/standard_gates/u1.py +28 -52
- qiskit/circuit/library/standard_gates/u2.py +9 -9
- qiskit/circuit/library/standard_gates/u3.py +24 -40
- qiskit/circuit/library/standard_gates/x.py +190 -336
- qiskit/circuit/library/standard_gates/xx_minus_yy.py +12 -50
- qiskit/circuit/library/standard_gates/xx_plus_yy.py +13 -52
- qiskit/circuit/library/standard_gates/y.py +19 -23
- qiskit/circuit/library/standard_gates/z.py +31 -38
- qiskit/circuit/parameter.py +14 -5
- qiskit/circuit/parameterexpression.py +109 -75
- qiskit/circuit/quantumcircuit.py +168 -98
- qiskit/circuit/quantumcircuitdata.py +1 -0
- qiskit/circuit/random/__init__.py +37 -2
- qiskit/circuit/random/utils.py +445 -56
- qiskit/circuit/tools/pi_check.py +5 -13
- qiskit/compiler/transpiler.py +1 -1
- qiskit/converters/circuit_to_instruction.py +2 -2
- qiskit/dagcircuit/dagnode.py +8 -3
- qiskit/primitives/__init__.py +2 -2
- qiskit/primitives/base/base_estimator.py +2 -2
- qiskit/primitives/containers/data_bin.py +0 -3
- qiskit/primitives/containers/observables_array.py +192 -108
- qiskit/primitives/primitive_job.py +29 -10
- qiskit/providers/fake_provider/generic_backend_v2.py +2 -0
- qiskit/qasm3/__init__.py +106 -12
- qiskit/qasm3/ast.py +15 -1
- qiskit/qasm3/exporter.py +59 -36
- qiskit/qasm3/printer.py +12 -0
- qiskit/qpy/__init__.py +183 -7
- qiskit/qpy/binary_io/circuits.py +256 -24
- qiskit/qpy/binary_io/parse_sympy_repr.py +5 -0
- qiskit/qpy/binary_io/schedules.py +12 -32
- qiskit/qpy/binary_io/value.py +36 -18
- qiskit/qpy/common.py +11 -3
- qiskit/qpy/formats.py +17 -1
- qiskit/qpy/interface.py +52 -12
- qiskit/qpy/type_keys.py +7 -1
- qiskit/quantum_info/__init__.py +10 -0
- qiskit/quantum_info/operators/__init__.py +1 -0
- qiskit/quantum_info/operators/symplectic/__init__.py +1 -0
- qiskit/quantum_info/operators/symplectic/clifford_circuits.py +26 -0
- qiskit/quantum_info/operators/symplectic/pauli.py +2 -2
- qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +1 -1
- qiskit/result/sampled_expval.py +3 -1
- qiskit/synthesis/__init__.py +10 -0
- qiskit/synthesis/arithmetic/__init__.py +1 -1
- qiskit/synthesis/arithmetic/adders/__init__.py +1 -0
- qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +6 -2
- qiskit/synthesis/arithmetic/adders/rv_ripple_carry_adder.py +156 -0
- qiskit/synthesis/discrete_basis/generate_basis_approximations.py +14 -126
- qiskit/synthesis/discrete_basis/solovay_kitaev.py +161 -121
- qiskit/synthesis/evolution/lie_trotter.py +10 -7
- qiskit/synthesis/evolution/product_formula.py +10 -7
- qiskit/synthesis/evolution/qdrift.py +10 -7
- qiskit/synthesis/evolution/suzuki_trotter.py +10 -7
- qiskit/synthesis/multi_controlled/__init__.py +4 -0
- qiskit/synthesis/multi_controlled/mcx_synthesis.py +402 -178
- qiskit/synthesis/multi_controlled/multi_control_rotation_gates.py +14 -15
- qiskit/synthesis/qft/qft_decompose_lnn.py +7 -25
- qiskit/synthesis/unitary/qsd.py +80 -9
- qiskit/transpiler/__init__.py +19 -8
- qiskit/transpiler/instruction_durations.py +2 -20
- qiskit/transpiler/passes/__init__.py +4 -2
- qiskit/transpiler/passes/layout/dense_layout.py +26 -6
- qiskit/transpiler/passes/layout/disjoint_utils.py +1 -166
- qiskit/transpiler/passes/layout/sabre_layout.py +22 -3
- qiskit/transpiler/passes/layout/sabre_pre_layout.py +1 -1
- qiskit/transpiler/passes/layout/vf2_layout.py +49 -13
- qiskit/transpiler/passes/layout/vf2_utils.py +13 -1
- qiskit/transpiler/passes/optimization/__init__.py +1 -1
- qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +2 -1
- qiskit/transpiler/passes/optimization/optimize_clifford_t.py +68 -0
- qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +3 -9
- qiskit/transpiler/passes/routing/sabre_swap.py +12 -2
- qiskit/transpiler/passes/routing/star_prerouting.py +106 -81
- qiskit/transpiler/passes/scheduling/__init__.py +1 -1
- qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -1
- qiskit/transpiler/passes/scheduling/padding/__init__.py +1 -0
- qiskit/transpiler/passes/scheduling/padding/context_aware_dynamical_decoupling.py +876 -0
- qiskit/transpiler/passes/synthesis/__init__.py +1 -0
- qiskit/transpiler/passes/synthesis/clifford_unitary_synth_plugin.py +123 -0
- qiskit/transpiler/passes/synthesis/hls_plugins.py +472 -92
- qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +27 -22
- qiskit/transpiler/passmanager_config.py +3 -0
- qiskit/transpiler/preset_passmanagers/builtin_plugins.py +149 -28
- qiskit/transpiler/preset_passmanagers/common.py +101 -0
- qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +6 -0
- qiskit/transpiler/preset_passmanagers/level3.py +2 -2
- qiskit/utils/optionals.py +6 -5
- qiskit/visualization/circuit/_utils.py +5 -3
- qiskit/visualization/circuit/latex.py +9 -2
- qiskit/visualization/circuit/matplotlib.py +26 -4
- qiskit/visualization/circuit/qcstyle.py +9 -157
- qiskit/visualization/dag/__init__.py +13 -0
- qiskit/visualization/dag/dagstyle.py +103 -0
- qiskit/visualization/dag/styles/__init__.py +13 -0
- qiskit/visualization/dag/styles/color.json +10 -0
- qiskit/visualization/dag/styles/plain.json +5 -0
- qiskit/visualization/dag_visualization.py +169 -98
- qiskit/visualization/style.py +223 -0
- {qiskit-2.0.2.dist-info → qiskit-2.1.0rc1.dist-info}/METADATA +14 -13
- {qiskit-2.0.2.dist-info → qiskit-2.1.0rc1.dist-info}/RECORD +177 -168
- {qiskit-2.0.2.dist-info → qiskit-2.1.0rc1.dist-info}/entry_points.txt +6 -0
- qiskit/synthesis/discrete_basis/commutator_decompose.py +0 -265
- qiskit/synthesis/discrete_basis/gate_sequence.py +0 -421
- {qiskit-2.0.2.dist-info → qiskit-2.1.0rc1.dist-info}/WHEEL +0 -0
- {qiskit-2.0.2.dist-info → qiskit-2.1.0rc1.dist-info}/licenses/LICENSE.txt +0 -0
- {qiskit-2.0.2.dist-info → qiskit-2.1.0rc1.dist-info}/top_level.txt +0 -0
@@ -64,9 +64,9 @@ class InnerProduct(QuantumCircuit):
|
|
64
64
|
"""
|
65
65
|
|
66
66
|
@deprecate_func(
|
67
|
-
since="1
|
67
|
+
since="2.1",
|
68
68
|
additional_msg="Use qiskit.circuit.library.InnerProductGate instead.",
|
69
|
-
|
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.
|
@@ -55,9 +55,9 @@ class OR(QuantumCircuit):
|
|
55
55
|
"""
|
56
56
|
|
57
57
|
@deprecate_func(
|
58
|
-
since="1
|
58
|
+
since="2.1",
|
59
59
|
additional_msg="Use qiskit.circuit.library.OrGate instead.",
|
60
|
-
|
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
|
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
|
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
|
-
|
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
|
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
|
-
|
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
|
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
|
-
|
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
|
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
|
-
|
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
|
57
|
+
since="2.1",
|
58
58
|
additional_msg="Use qiskit.circuit.library.fourier_checking instead.",
|
59
|
-
|
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(
|
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(
|
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
|
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(
|
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 = [
|
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
|
-
|
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=
|
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
|
63
|
+
since="2.1",
|
64
64
|
additional_msg="Use qiskit.circuit.library.GraphStateGate instead.",
|
65
|
-
|
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
|
431
|
+
since="2.1",
|
432
432
|
additional_msg="Use qiskit.circuit.library.grover_operator instead.",
|
433
|
-
|
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
|
73
|
+
since="2.1",
|
74
74
|
additional_msg="Use qiskit.circuit.library.hidden_linear_function instead.",
|
75
|
-
|
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.
|
qiskit/circuit/library/iqp.py
CHANGED
@@ -65,9 +65,9 @@ class IQP(QuantumCircuit):
|
|
65
65
|
"""
|
66
66
|
|
67
67
|
@deprecate_func(
|
68
|
-
since="1
|
68
|
+
since="2.1",
|
69
69
|
additional_msg="Use the qiskit.circuit.library.iqp function instead.",
|
70
|
-
|
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
|
197
|
+
since="2.1",
|
198
198
|
additional_msg="Use the function qiskit.circuit.library.efficient_su2 instead.",
|
199
|
-
|
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.
|
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
|
217
|
+
since="2.1",
|
219
218
|
additional_msg="Use the function qiskit.circuit.library.excitation_preserving instead.",
|
220
|
-
|
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.
|
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
|
313
|
-
additional_msg="Use the function
|
314
|
-
|
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
|
173
|
+
since="2.1",
|
174
174
|
additional_msg="Use the function qiskit.circuit.library.pauli_two_design instead.",
|
175
|
-
|
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
|
241
|
+
since="2.1",
|
242
242
|
additional_msg="Use the function qiskit.circuit.library.real_amplitudes instead.",
|
243
|
-
|
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
|
141
|
+
since="2.1",
|
142
142
|
additional_msg="Use the function qiskit.circuit.library.n_local instead.",
|
143
|
-
|
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
|
63
|
+
since="2.1",
|
64
64
|
additional_msg="Use qiskit.circuit.library.unitary_overlap instead.",
|
65
|
-
|
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
|
53
|
+
since="2.1",
|
54
54
|
additional_msg="Use qiskit.circuit.library.phase_estimation instead.",
|
55
|
-
|
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.
|
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
|
66
|
-
from .x import CXGate
|
63
|
+
from qiskit.circuit import QuantumCircuit
|
67
64
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
65
|
+
# ┌───┐
|
66
|
+
# q_0: ──■──┤ X ├
|
67
|
+
# ┌─┴─┐└─┬─┘
|
68
|
+
# q_1: ┤ X ├──■──
|
69
|
+
# └───┘
|
73
70
|
|
74
|
-
self.definition =
|
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
|
-
|
44
|
-
|
45
|
-
|
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.
|
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
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
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).
|