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.
- qiskit/VERSION.txt +1 -1
- qiskit/__init__.py +19 -1
- qiskit/_accelerate.abi3.so +0 -0
- qiskit/circuit/__init__.py +104 -20
- qiskit/circuit/_add_control.py +57 -31
- qiskit/circuit/_classical_resource_map.py +4 -0
- qiskit/circuit/annotation.py +504 -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 +4 -4
- qiskit/circuit/library/arithmetic/multipliers/multiplier.py +2 -2
- qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +8 -4
- 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 +172 -99
- 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 +182 -6
- 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/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 +10 -3
- qiskit/transpiler/instruction_durations.py +2 -20
- qiskit/transpiler/passes/__init__.py +5 -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 +10 -0
- 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 +4 -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 +494 -93
- qiskit/transpiler/passes/synthesis/plugin.py +4 -0
- 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/transpiler/target.py +15 -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.3.dist-info → qiskit-2.1.0.dist-info}/METADATA +7 -6
- {qiskit-2.0.3.dist-info → qiskit-2.1.0.dist-info}/RECORD +178 -169
- {qiskit-2.0.3.dist-info → qiskit-2.1.0.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.3.dist-info → qiskit-2.1.0.dist-info}/WHEEL +0 -0
- {qiskit-2.0.3.dist-info → qiskit-2.1.0.dist-info}/licenses/LICENSE.txt +0 -0
- {qiskit-2.0.3.dist-info → qiskit-2.1.0.dist-info}/top_level.txt +0 -0
@@ -87,37 +87,25 @@ class RZZGate(Gate):
|
|
87
87
|
\end{pmatrix}
|
88
88
|
"""
|
89
89
|
|
90
|
-
_standard_gate = StandardGate.
|
90
|
+
_standard_gate = StandardGate.RZZ
|
91
91
|
|
92
92
|
def __init__(self, theta: ParameterValueType, label: Optional[str] = None):
|
93
93
|
"""Create new RZZ gate."""
|
94
94
|
super().__init__("rzz", 2, [theta], label=label)
|
95
95
|
|
96
96
|
def _define(self):
|
97
|
-
"""
|
98
|
-
gate rzz(theta) a, b { cx a, b; u1(theta) b; cx a, b; }
|
99
|
-
"""
|
97
|
+
"""Default definition"""
|
100
98
|
# pylint: disable=cyclic-import
|
101
|
-
from qiskit.circuit import QuantumCircuit
|
102
|
-
from .x import CXGate
|
103
|
-
from .rz import RZGate
|
99
|
+
from qiskit.circuit import QuantumCircuit
|
104
100
|
|
105
101
|
# q_0: ──■─────────────■──
|
106
102
|
# ┌─┴─┐┌───────┐┌─┴─┐
|
107
103
|
# q_1: ┤ X ├┤ Rz(0) ├┤ X ├
|
108
104
|
# └───┘└───────┘└───┘
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
(CXGate(), [q[0], q[1]], []),
|
114
|
-
(RZGate(theta), [q[1]], []),
|
115
|
-
(CXGate(), [q[0], q[1]], []),
|
116
|
-
]
|
117
|
-
for instr, qargs, cargs in rules:
|
118
|
-
qc._append(instr, qargs, cargs)
|
119
|
-
|
120
|
-
self.definition = qc
|
105
|
+
|
106
|
+
self.definition = QuantumCircuit._from_circuit_data(
|
107
|
+
StandardGate.RZZ._get_definition(self.params), add_regs=True, name=self.name
|
108
|
+
)
|
121
109
|
|
122
110
|
def control(
|
123
111
|
self,
|
@@ -14,7 +14,6 @@
|
|
14
14
|
|
15
15
|
from __future__ import annotations
|
16
16
|
|
17
|
-
from math import pi
|
18
17
|
from typing import Optional, Union
|
19
18
|
|
20
19
|
import numpy
|
@@ -59,7 +58,7 @@ class SGate(SingletonGate):
|
|
59
58
|
Equivalent to a :math:`\pi/2` radian rotation about the Z axis.
|
60
59
|
"""
|
61
60
|
|
62
|
-
_standard_gate = StandardGate.
|
61
|
+
_standard_gate = StandardGate.S
|
63
62
|
|
64
63
|
def __init__(self, label: Optional[str] = None):
|
65
64
|
"""Create new S gate."""
|
@@ -68,21 +67,17 @@ class SGate(SingletonGate):
|
|
68
67
|
_singleton_lookup_key = stdlib_singleton_key()
|
69
68
|
|
70
69
|
def _define(self):
|
71
|
-
"""
|
72
|
-
gate s a { u1(pi/2) a; }
|
73
|
-
"""
|
70
|
+
"""Default definition"""
|
74
71
|
# pylint: disable=cyclic-import
|
75
|
-
from qiskit.circuit import QuantumCircuit
|
76
|
-
|
77
|
-
from .u1 import U1Gate
|
72
|
+
from qiskit.circuit import QuantumCircuit
|
78
73
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
for instr, qargs, cargs in rules:
|
83
|
-
qc._append(instr, qargs, cargs)
|
74
|
+
# ┌────────┐
|
75
|
+
# q: ┤ P(π/2) ├
|
76
|
+
# └────────┘
|
84
77
|
|
85
|
-
self.definition =
|
78
|
+
self.definition = QuantumCircuit._from_circuit_data(
|
79
|
+
StandardGate.S._get_definition(self.params), add_regs=True, name=self.name
|
80
|
+
)
|
86
81
|
|
87
82
|
def control(
|
88
83
|
self,
|
@@ -171,7 +166,7 @@ class SdgGate(SingletonGate):
|
|
171
166
|
Equivalent to a :math:`-\pi/2` radian rotation about the Z axis.
|
172
167
|
"""
|
173
168
|
|
174
|
-
_standard_gate = StandardGate.
|
169
|
+
_standard_gate = StandardGate.Sdg
|
175
170
|
|
176
171
|
def __init__(self, label: Optional[str] = None):
|
177
172
|
"""Create new Sdg gate."""
|
@@ -180,21 +175,17 @@ class SdgGate(SingletonGate):
|
|
180
175
|
_singleton_lookup_key = stdlib_singleton_key()
|
181
176
|
|
182
177
|
def _define(self):
|
183
|
-
"""
|
184
|
-
gate sdg a { u1(-pi/2) a; }
|
185
|
-
"""
|
178
|
+
"""Default definition"""
|
186
179
|
# pylint: disable=cyclic-import
|
187
|
-
from qiskit.circuit import QuantumCircuit
|
188
|
-
|
189
|
-
from .u1 import U1Gate
|
180
|
+
from qiskit.circuit import QuantumCircuit
|
190
181
|
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
for instr, qargs, cargs in rules:
|
195
|
-
qc._append(instr, qargs, cargs)
|
182
|
+
# ┌─────────┐
|
183
|
+
# q: ┤ P(-π/2) ├
|
184
|
+
# └─────────┘
|
196
185
|
|
197
|
-
self.definition =
|
186
|
+
self.definition = QuantumCircuit._from_circuit_data(
|
187
|
+
StandardGate.Sdg._get_definition(self.params), add_regs=True, name=self.name
|
188
|
+
)
|
198
189
|
|
199
190
|
def control(
|
200
191
|
self,
|
@@ -282,7 +273,7 @@ class CSGate(SingletonControlledGate):
|
|
282
273
|
\end{pmatrix}
|
283
274
|
"""
|
284
275
|
|
285
|
-
_standard_gate = StandardGate.
|
276
|
+
_standard_gate = StandardGate.CS
|
286
277
|
|
287
278
|
def __init__(
|
288
279
|
self,
|
@@ -306,12 +297,19 @@ class CSGate(SingletonControlledGate):
|
|
306
297
|
_singleton_lookup_key = stdlib_singleton_key(num_ctrl_qubits=1)
|
307
298
|
|
308
299
|
def _define(self):
|
309
|
-
"""
|
310
|
-
|
311
|
-
|
312
|
-
from .p import CPhaseGate
|
300
|
+
"""Default definition"""
|
301
|
+
# pylint: disable=cyclic-import
|
302
|
+
from qiskit.circuit import QuantumCircuit
|
313
303
|
|
314
|
-
|
304
|
+
# ┌───┐
|
305
|
+
# q_0: ┤ T ├──■───────────■───────
|
306
|
+
# └───┘┌─┴─┐┌─────┐┌─┴─┐┌───┐
|
307
|
+
# q_1: ─────┤ X ├┤ Tdg ├┤ X ├┤ T ├
|
308
|
+
# └───┘└─────┘└───┘└───┘
|
309
|
+
|
310
|
+
self.definition = QuantumCircuit._from_circuit_data(
|
311
|
+
StandardGate.CS._get_definition(self.params), add_regs=True, name=self.name
|
312
|
+
)
|
315
313
|
|
316
314
|
def inverse(self, annotated: bool = False):
|
317
315
|
"""Return inverse of CSGate (CSdgGate).
|
@@ -366,7 +364,7 @@ class CSdgGate(SingletonControlledGate):
|
|
366
364
|
\end{pmatrix}
|
367
365
|
"""
|
368
366
|
|
369
|
-
_standard_gate = StandardGate.
|
367
|
+
_standard_gate = StandardGate.CSdg
|
370
368
|
|
371
369
|
def __init__(
|
372
370
|
self,
|
@@ -389,12 +387,19 @@ class CSdgGate(SingletonControlledGate):
|
|
389
387
|
_singleton_lookup_key = stdlib_singleton_key(num_ctrl_qubits=1)
|
390
388
|
|
391
389
|
def _define(self):
|
392
|
-
"""
|
393
|
-
|
394
|
-
|
395
|
-
from .p import CPhaseGate
|
390
|
+
"""Default definition"""
|
391
|
+
# pylint: disable=cyclic-import
|
392
|
+
from qiskit.circuit import QuantumCircuit
|
396
393
|
|
397
|
-
|
394
|
+
# ┌─────┐
|
395
|
+
# q_0: ┤ Tdg ├──■─────────■─────────
|
396
|
+
# └─────┘┌─┴─┐┌───┐┌─┴─┐┌─────┐
|
397
|
+
# q_1: ───────┤ X ├┤ T ├┤ X ├┤ Tdg ├
|
398
|
+
# └───┘└───┘└───┘└─────┘
|
399
|
+
|
400
|
+
self.definition = QuantumCircuit._from_circuit_data(
|
401
|
+
StandardGate.CSdg._get_definition(self.params), add_regs=True, name=self.name
|
402
|
+
)
|
398
403
|
|
399
404
|
def inverse(self, annotated: bool = False):
|
400
405
|
"""Return inverse of CSdgGate (CSGate).
|
@@ -60,7 +60,7 @@ class SwapGate(SingletonGate):
|
|
60
60
|
|a, b\rangle \rightarrow |b, a\rangle
|
61
61
|
"""
|
62
62
|
|
63
|
-
_standard_gate = StandardGate.
|
63
|
+
_standard_gate = StandardGate.Swap
|
64
64
|
|
65
65
|
def __init__(self, label: Optional[str] = None):
|
66
66
|
"""Create new SWAP gate."""
|
@@ -69,24 +69,19 @@ class SwapGate(SingletonGate):
|
|
69
69
|
_singleton_lookup_key = stdlib_singleton_key()
|
70
70
|
|
71
71
|
def _define(self):
|
72
|
-
"""
|
73
|
-
gate swap a,b { cx a,b; cx b,a; cx a,b; }
|
74
|
-
"""
|
72
|
+
"""Default definition"""
|
75
73
|
# pylint: disable=cyclic-import
|
76
|
-
from qiskit.circuit import QuantumCircuit
|
77
|
-
from .x import CXGate
|
74
|
+
from qiskit.circuit import QuantumCircuit
|
78
75
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
(CXGate(), [q[0], q[1]], []),
|
85
|
-
]
|
86
|
-
for instr, qargs, cargs in rules:
|
87
|
-
qc._append(instr, qargs, cargs)
|
76
|
+
# ┌───┐
|
77
|
+
# q_0: ──■──┤ X ├──■──
|
78
|
+
# ┌─┴─┐└─┬─┘┌─┴─┐
|
79
|
+
# q_1: ┤ X ├──■──┤ X ├
|
80
|
+
# └───┘ └───┘
|
88
81
|
|
89
|
-
self.definition =
|
82
|
+
self.definition = QuantumCircuit._from_circuit_data(
|
83
|
+
StandardGate.Swap._get_definition(self.params), add_regs=True, name=self.name
|
84
|
+
)
|
90
85
|
|
91
86
|
def control(
|
92
87
|
self,
|
@@ -217,7 +212,7 @@ class CSwapGate(SingletonControlledGate):
|
|
217
212
|
|1, b, c\rangle \rightarrow |1, c, b\rangle
|
218
213
|
"""
|
219
214
|
|
220
|
-
_standard_gate = StandardGate.
|
215
|
+
_standard_gate = StandardGate.CSwap
|
221
216
|
|
222
217
|
def __init__(
|
223
218
|
self,
|
@@ -240,28 +235,20 @@ class CSwapGate(SingletonControlledGate):
|
|
240
235
|
_singleton_lookup_key = stdlib_singleton_key(num_ctrl_qubits=1)
|
241
236
|
|
242
237
|
def _define(self):
|
243
|
-
"""
|
244
|
-
gate cswap a,b,c
|
245
|
-
{ cx c,b;
|
246
|
-
ccx a,b,c;
|
247
|
-
cx c,b;
|
248
|
-
}
|
249
|
-
"""
|
238
|
+
"""Default definition"""
|
250
239
|
# pylint: disable=cyclic-import
|
251
|
-
from qiskit.circuit import QuantumCircuit
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
self.definition = qc
|
240
|
+
from qiskit.circuit import QuantumCircuit
|
241
|
+
|
242
|
+
# q_0: ───────■───────
|
243
|
+
# ┌───┐ │ ┌───┐
|
244
|
+
# q_1: ┤ X ├──■──┤ X ├
|
245
|
+
# └─┬─┘┌─┴─┐└─┬─┘
|
246
|
+
# q_2: ──■──┤ X ├──■──
|
247
|
+
# └───┘
|
248
|
+
|
249
|
+
self.definition = QuantumCircuit._from_circuit_data(
|
250
|
+
StandardGate.CSwap._get_definition(self.params), add_regs=True, name=self.name
|
251
|
+
)
|
265
252
|
|
266
253
|
def inverse(self, annotated: bool = False):
|
267
254
|
"""Return inverse CSwap gate (itself).
|
@@ -14,7 +14,6 @@
|
|
14
14
|
|
15
15
|
from __future__ import annotations
|
16
16
|
|
17
|
-
from math import pi
|
18
17
|
from typing import Optional, Union
|
19
18
|
from qiskit.circuit.singleton import SingletonGate, SingletonControlledGate, stdlib_singleton_key
|
20
19
|
from qiskit.circuit._utils import with_gate_array, with_controlled_gate_array
|
@@ -64,7 +63,7 @@ class SXGate(SingletonGate):
|
|
64
63
|
|
65
64
|
"""
|
66
65
|
|
67
|
-
_standard_gate = StandardGate.
|
66
|
+
_standard_gate = StandardGate.SX
|
68
67
|
|
69
68
|
def __init__(self, label: Optional[str] = None):
|
70
69
|
"""Create new SX gate."""
|
@@ -73,20 +72,18 @@ class SXGate(SingletonGate):
|
|
73
72
|
_singleton_lookup_key = stdlib_singleton_key()
|
74
73
|
|
75
74
|
def _define(self):
|
76
|
-
"""
|
77
|
-
gate sx a { rz(-pi/2) a; h a; rz(-pi/2); }
|
78
|
-
"""
|
75
|
+
"""Default definition"""
|
79
76
|
# pylint: disable=cyclic-import
|
80
|
-
from qiskit.circuit import QuantumCircuit
|
81
|
-
from .s import SdgGate
|
82
|
-
from .h import HGate
|
77
|
+
from qiskit.circuit import QuantumCircuit
|
83
78
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
self.definition =
|
79
|
+
# global phase: π/4
|
80
|
+
# ┌─────┐┌───┐┌─────┐
|
81
|
+
# q: ┤ Sdg ├┤ H ├┤ Sdg ├
|
82
|
+
# └─────┘└───┘└─────┘
|
83
|
+
|
84
|
+
self.definition = QuantumCircuit._from_circuit_data(
|
85
|
+
StandardGate.SX._get_definition(self.params), add_regs=True, name=self.name
|
86
|
+
)
|
90
87
|
|
91
88
|
def inverse(self, annotated: bool = False):
|
92
89
|
"""Return inverse SX gate (i.e. SXdg).
|
@@ -168,7 +165,7 @@ class SXdgGate(SingletonGate):
|
|
168
165
|
= e^{-i \pi/4} \sqrt{X}^{\dagger}
|
169
166
|
"""
|
170
167
|
|
171
|
-
_standard_gate = StandardGate.
|
168
|
+
_standard_gate = StandardGate.SXdg
|
172
169
|
|
173
170
|
def __init__(self, label: Optional[str] = None):
|
174
171
|
"""Create new SXdg gate."""
|
@@ -177,20 +174,18 @@ class SXdgGate(SingletonGate):
|
|
177
174
|
_singleton_lookup_key = stdlib_singleton_key()
|
178
175
|
|
179
176
|
def _define(self):
|
180
|
-
"""
|
181
|
-
gate sxdg a { rz(pi/2) a; h a; rz(pi/2); }
|
182
|
-
"""
|
177
|
+
"""Default definition"""
|
183
178
|
# pylint: disable=cyclic-import
|
184
|
-
from qiskit.circuit import QuantumCircuit
|
185
|
-
from .s import SGate
|
186
|
-
from .h import HGate
|
179
|
+
from qiskit.circuit import QuantumCircuit
|
187
180
|
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
self.definition =
|
181
|
+
# global phase: 7π/4
|
182
|
+
# ┌───┐┌───┐┌───┐
|
183
|
+
# q: ┤ S ├┤ H ├┤ S ├
|
184
|
+
# └───┘└───┘└───┘
|
185
|
+
|
186
|
+
self.definition = QuantumCircuit._from_circuit_data(
|
187
|
+
StandardGate.SXdg._get_definition(self.params), add_regs=True, name=self.name
|
188
|
+
)
|
194
189
|
|
195
190
|
def inverse(self, annotated: bool = False):
|
196
191
|
"""Return inverse SXdg gate (i.e. SX).
|
@@ -268,7 +263,7 @@ class CSXGate(SingletonControlledGate):
|
|
268
263
|
|
269
264
|
"""
|
270
265
|
|
271
|
-
_standard_gate = StandardGate.
|
266
|
+
_standard_gate = StandardGate.CSX
|
272
267
|
|
273
268
|
def __init__(
|
274
269
|
self,
|
@@ -291,20 +286,18 @@ class CSXGate(SingletonControlledGate):
|
|
291
286
|
_singleton_lookup_key = stdlib_singleton_key(num_ctrl_qubits=1)
|
292
287
|
|
293
288
|
def _define(self):
|
294
|
-
"""
|
295
|
-
gate csx a,b { h b; cu1(pi/2) a,b; h b; }
|
296
|
-
"""
|
289
|
+
"""Default definition"""
|
297
290
|
# pylint: disable=cyclic-import
|
298
|
-
from qiskit.circuit import QuantumCircuit
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
291
|
+
from qiskit.circuit import QuantumCircuit
|
292
|
+
|
293
|
+
# q_0: ───────■───────
|
294
|
+
# ┌───┐┌─┴─┐┌───┐
|
295
|
+
# q_1: ┤ H ├┤ S ├┤ H ├
|
296
|
+
# └───┘└───┘└───┘
|
297
|
+
|
298
|
+
self.definition = QuantumCircuit._from_circuit_data(
|
299
|
+
StandardGate.CSX._get_definition(self.params), add_regs=True, name=self.name
|
300
|
+
)
|
308
301
|
|
309
302
|
def __eq__(self, other):
|
310
303
|
return isinstance(other, CSXGate) and self.ctrl_state == other.ctrl_state
|
@@ -12,7 +12,6 @@
|
|
12
12
|
|
13
13
|
"""T and Tdg gate."""
|
14
14
|
import math
|
15
|
-
from math import pi
|
16
15
|
from typing import Optional
|
17
16
|
|
18
17
|
import numpy
|
@@ -55,7 +54,7 @@ class TGate(SingletonGate):
|
|
55
54
|
Equivalent to a :math:`\pi/4` radian rotation about the Z axis.
|
56
55
|
"""
|
57
56
|
|
58
|
-
_standard_gate = StandardGate.
|
57
|
+
_standard_gate = StandardGate.T
|
59
58
|
|
60
59
|
def __init__(self, label: Optional[str] = None):
|
61
60
|
"""Create new T gate."""
|
@@ -64,21 +63,17 @@ class TGate(SingletonGate):
|
|
64
63
|
_singleton_lookup_key = stdlib_singleton_key()
|
65
64
|
|
66
65
|
def _define(self):
|
67
|
-
"""
|
68
|
-
gate t a { u1(pi/4) a; }
|
69
|
-
"""
|
66
|
+
"""Default definition"""
|
70
67
|
# pylint: disable=cyclic-import
|
71
|
-
from qiskit.circuit import QuantumCircuit
|
72
|
-
|
73
|
-
from .u1 import U1Gate
|
68
|
+
from qiskit.circuit import QuantumCircuit
|
74
69
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
for instr, qargs, cargs in rules:
|
79
|
-
qc._append(instr, qargs, cargs)
|
70
|
+
# ┌────────┐
|
71
|
+
# q: ┤ P(π/4) ├
|
72
|
+
# └────────┘
|
80
73
|
|
81
|
-
self.definition =
|
74
|
+
self.definition = QuantumCircuit._from_circuit_data(
|
75
|
+
StandardGate.T._get_definition(self.params), add_regs=True, name=self.name
|
76
|
+
)
|
82
77
|
|
83
78
|
def inverse(self, annotated: bool = False):
|
84
79
|
"""Return inverse T gate (i.e. Tdg).
|
@@ -132,7 +127,7 @@ class TdgGate(SingletonGate):
|
|
132
127
|
Equivalent to a :math:`-\pi/4` radian rotation about the Z axis.
|
133
128
|
"""
|
134
129
|
|
135
|
-
_standard_gate = StandardGate.
|
130
|
+
_standard_gate = StandardGate.Tdg
|
136
131
|
|
137
132
|
def __init__(self, label: Optional[str] = None):
|
138
133
|
"""Create new Tdg gate."""
|
@@ -141,21 +136,17 @@ class TdgGate(SingletonGate):
|
|
141
136
|
_singleton_lookup_key = stdlib_singleton_key()
|
142
137
|
|
143
138
|
def _define(self):
|
144
|
-
"""
|
145
|
-
gate tdg a { u1(pi/4) a; }
|
146
|
-
"""
|
139
|
+
"""Default definition"""
|
147
140
|
# pylint: disable=cyclic-import
|
148
|
-
from qiskit.circuit import QuantumCircuit
|
149
|
-
|
150
|
-
from .u1 import U1Gate
|
141
|
+
from qiskit.circuit import QuantumCircuit
|
151
142
|
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
for instr, qargs, cargs in rules:
|
156
|
-
qc._append(instr, qargs, cargs)
|
143
|
+
# ┌─────────┐
|
144
|
+
# q: ┤ P(-π/4) ├
|
145
|
+
# └─────────┘
|
157
146
|
|
158
|
-
self.definition =
|
147
|
+
self.definition = QuantumCircuit._from_circuit_data(
|
148
|
+
StandardGate.Tdg._get_definition(self.params), add_regs=True, name=self.name
|
149
|
+
)
|
159
150
|
|
160
151
|
def inverse(self, annotated: bool = False):
|
161
152
|
"""Return inverse Tdg gate (i.e. T).
|
@@ -71,7 +71,7 @@ class UGate(Gate):
|
|
71
71
|
U(\theta, 0, 0) = RY(\theta)
|
72
72
|
"""
|
73
73
|
|
74
|
-
_standard_gate = StandardGate.
|
74
|
+
_standard_gate = StandardGate.U
|
75
75
|
|
76
76
|
def __init__(
|
77
77
|
self,
|
@@ -269,7 +269,7 @@ class CUGate(ControlledGate):
|
|
269
269
|
\end{pmatrix}
|
270
270
|
"""
|
271
271
|
|
272
|
-
_standard_gate = StandardGate.
|
272
|
+
_standard_gate = StandardGate.CU
|
273
273
|
|
274
274
|
def __init__(
|
275
275
|
self,
|
@@ -294,35 +294,19 @@ class CUGate(ControlledGate):
|
|
294
294
|
)
|
295
295
|
|
296
296
|
def _define(self):
|
297
|
-
"""
|
298
|
-
gate cu(theta,phi,lambda,gamma) c, t
|
299
|
-
{ phase(gamma) c;
|
300
|
-
phase((lambda+phi)/2) c;
|
301
|
-
phase((lambda-phi)/2) t;
|
302
|
-
cx c,t;
|
303
|
-
u(-theta/2,0,-(phi+lambda)/2) t;
|
304
|
-
cx c,t;
|
305
|
-
u(theta/2,phi,0) t;
|
306
|
-
}
|
307
|
-
"""
|
297
|
+
"""Default definition"""
|
308
298
|
# pylint: disable=cyclic-import
|
309
|
-
from qiskit.circuit import QuantumCircuit
|
299
|
+
from qiskit.circuit import QuantumCircuit
|
310
300
|
|
311
301
|
# ┌──────┐ ┌──────────────┐
|
312
302
|
# q_0: ────┤ P(γ) ├────┤ P(λ/2 + φ/2) ├──■────────────────────────────■────────────────
|
313
303
|
# ┌───┴──────┴───┐└──────────────┘┌─┴─┐┌──────────────────────┐┌─┴─┐┌────────────┐
|
314
304
|
# q_1: ┤ P(λ/2 - φ/2) ├────────────────┤ X ├┤ U(-0/2,0,-λ/2 - φ/2) ├┤ X ├┤ U(0/2,φ,0) ├
|
315
305
|
# └──────────────┘ └───┘└──────────────────────┘└───┘└────────────┘
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
qc.p((self.params[2] - self.params[1]) / 2, 1)
|
321
|
-
qc.cx(0, 1)
|
322
|
-
qc.u(-self.params[0] / 2, 0, -(self.params[1] + self.params[2]) / 2, 1)
|
323
|
-
qc.cx(0, 1)
|
324
|
-
qc.u(self.params[0] / 2, self.params[1], 0, 1)
|
325
|
-
self.definition = qc
|
306
|
+
|
307
|
+
self.definition = QuantumCircuit._from_circuit_data(
|
308
|
+
StandardGate.CU._get_definition(self.params), add_regs=True, name=self.name
|
309
|
+
)
|
326
310
|
|
327
311
|
def inverse(self, annotated: bool = False):
|
328
312
|
r"""Return inverted CU gate.
|