qiskit 1.3.1__cp39-abi3-win32.whl → 1.3.2__cp39-abi3-win32.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/_accelerate.pyd +0 -0
- qiskit/circuit/__init__.py +2 -0
- qiskit/circuit/controlledgate.py +2 -0
- qiskit/circuit/library/__init__.py +1 -0
- qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +1 -0
- qiskit/circuit/library/basis_change/qft.py +3 -0
- qiskit/circuit/library/boolean_logic/inner_product.py +2 -0
- qiskit/circuit/library/boolean_logic/quantum_and.py +4 -0
- qiskit/circuit/library/boolean_logic/quantum_or.py +4 -0
- qiskit/circuit/library/boolean_logic/quantum_xor.py +2 -0
- qiskit/circuit/library/fourier_checking.py +2 -0
- qiskit/circuit/library/generalized_gates/gms.py +1 -0
- qiskit/circuit/library/generalized_gates/gr.py +4 -0
- qiskit/circuit/library/generalized_gates/mcmt.py +1 -0
- qiskit/circuit/library/generalized_gates/permutation.py +5 -1
- qiskit/circuit/library/generalized_gates/unitary.py +1 -1
- qiskit/circuit/library/graph_state.py +2 -0
- qiskit/circuit/library/grover_operator.py +7 -3
- qiskit/circuit/library/hidden_linear_function.py +2 -0
- qiskit/circuit/library/iqp.py +5 -0
- qiskit/circuit/library/n_local/efficient_su2.py +7 -2
- qiskit/circuit/library/n_local/evolved_operator_ansatz.py +3 -0
- qiskit/circuit/library/n_local/excitation_preserving.py +14 -8
- qiskit/circuit/library/n_local/n_local.py +10 -5
- qiskit/circuit/library/n_local/pauli_two_design.py +5 -2
- qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -0
- qiskit/circuit/library/n_local/real_amplitudes.py +10 -4
- qiskit/circuit/library/overlap.py +1 -0
- qiskit/circuit/library/phase_estimation.py +2 -0
- qiskit/circuit/library/quantum_volume.py +3 -0
- qiskit/circuit/operation.py +1 -0
- qiskit/circuit/parameter.py +1 -0
- qiskit/circuit/parameterexpression.py +1 -1
- qiskit/circuit/quantumcircuit.py +13 -19
- qiskit/circuit/random/utils.py +2 -0
- qiskit/converters/dag_to_circuit.py +1 -0
- qiskit/primitives/statevector_estimator.py +1 -0
- qiskit/providers/fake_provider/__init__.py +1 -0
- qiskit/pulse/builder.py +8 -0
- qiskit/pulse/library/symbolic_pulses.py +1 -0
- qiskit/qasm2/export.py +2 -2
- qiskit/qasm3/__init__.py +1 -0
- qiskit/qasm3/exporter.py +6 -3
- qiskit/quantum_info/operators/symplectic/pauli_list.py +8 -8
- qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +10 -1
- qiskit/quantum_info/states/statevector.py +1 -0
- qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -0
- qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +1 -0
- qiskit/synthesis/evolution/product_formula.py +0 -6
- qiskit/synthesis/evolution/suzuki_trotter.py +22 -5
- qiskit/transpiler/__init__.py +22 -1
- qiskit/transpiler/layout.py +3 -0
- qiskit/transpiler/passes/routing/star_prerouting.py +1 -0
- qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +1 -0
- qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +1 -0
- qiskit/transpiler/passes/synthesis/hls_plugins.py +48 -9
- qiskit/transpiler/passes/utils/filter_op_nodes.py +2 -1
- qiskit/transpiler/passes/utils/remove_barriers.py +1 -0
- qiskit/transpiler/preset_passmanagers/__init__.py +5 -5
- qiskit/transpiler/preset_passmanagers/builtin_plugins.py +19 -22
- qiskit/transpiler/target.py +1 -1
- qiskit/visualization/__init__.py +6 -0
- qiskit/visualization/circuit/circuit_visualization.py +1 -0
- qiskit/visualization/counts_visualization.py +2 -0
- qiskit/visualization/dag_visualization.py +1 -0
- qiskit/visualization/gate_map.py +7 -3
- qiskit/visualization/pulse_v2/interface.py +4 -1
- qiskit/visualization/state_visualization.py +13 -2
- qiskit/visualization/timeline/interface.py +6 -3
- {qiskit-1.3.1.dist-info → qiskit-1.3.2.dist-info}/METADATA +17 -17
- {qiskit-1.3.1.dist-info → qiskit-1.3.2.dist-info}/RECORD +76 -76
- {qiskit-1.3.1.dist-info → qiskit-1.3.2.dist-info}/WHEEL +1 -1
- {qiskit-1.3.1.dist-info → qiskit-1.3.2.dist-info}/LICENSE.txt +0 -0
- {qiskit-1.3.1.dist-info → qiskit-1.3.2.dist-info}/entry_points.txt +0 -0
- {qiskit-1.3.1.dist-info → qiskit-1.3.2.dist-info}/top_level.txt +0 -0
qiskit/VERSION.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.
|
1
|
+
1.3.2
|
qiskit/_accelerate.pyd
CHANGED
Binary file
|
qiskit/circuit/__init__.py
CHANGED
@@ -64,6 +64,7 @@ defined as:
|
|
64
64
|
|
65
65
|
|
66
66
|
.. plot::
|
67
|
+
:alt: Circuit diagram output by the previous code.
|
67
68
|
:include-source:
|
68
69
|
|
69
70
|
from qiskit import QuantumCircuit
|
@@ -1140,6 +1141,7 @@ If we draw this circuit, we will see that Qiskit places the zeroth qubit on the
|
|
1140
1141
|
drawing:
|
1141
1142
|
|
1142
1143
|
.. plot::
|
1144
|
+
:alt: Circuit diagram output by the previous code.
|
1143
1145
|
:include-source:
|
1144
1146
|
:context:
|
1145
1147
|
:show-source-link: False
|
qiskit/circuit/controlledgate.py
CHANGED
@@ -70,6 +70,7 @@ class ControlledGate(Gate):
|
|
70
70
|
Create a controlled standard gate and apply it to a circuit.
|
71
71
|
|
72
72
|
.. plot::
|
73
|
+
:alt: Circuit diagram output by the previous code.
|
73
74
|
:include-source:
|
74
75
|
|
75
76
|
from qiskit import QuantumCircuit, QuantumRegister
|
@@ -84,6 +85,7 @@ class ControlledGate(Gate):
|
|
84
85
|
Create a controlled custom gate and apply it to a circuit.
|
85
86
|
|
86
87
|
.. plot::
|
88
|
+
:alt: Circuit diagram output by the previous code.
|
87
89
|
:include-source:
|
88
90
|
|
89
91
|
from qiskit import QuantumCircuit, QuantumRegister
|
@@ -26,6 +26,7 @@ method and so the circuit library allows users to program at higher levels of ab
|
|
26
26
|
For example, to append a multi-controlled CNOT:
|
27
27
|
|
28
28
|
.. plot::
|
29
|
+
:alt: Circuit diagram output by the previous code.
|
29
30
|
:include-source:
|
30
31
|
|
31
32
|
from qiskit.circuit.library import MCXGate
|
@@ -38,6 +38,7 @@ class QFT(BlueprintCircuit):
|
|
38
38
|
For 4 qubits, the circuit that implements this transformation is:
|
39
39
|
|
40
40
|
.. plot::
|
41
|
+
:alt: Diagram illustrating the previously described circuit.
|
41
42
|
|
42
43
|
from qiskit.circuit.library import QFT
|
43
44
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -48,6 +49,7 @@ class QFT(BlueprintCircuit):
|
|
48
49
|
The respective circuit diagram is:
|
49
50
|
|
50
51
|
.. plot::
|
52
|
+
:alt: Diagram illustrating the previously described circuit.
|
51
53
|
|
52
54
|
from qiskit.circuit.library import QFT
|
53
55
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -64,6 +66,7 @@ class QFT(BlueprintCircuit):
|
|
64
66
|
on 5 qubits with approximation degree 2 yields (the barriers are dropped in this example):
|
65
67
|
|
66
68
|
.. plot::
|
69
|
+
:alt: Diagram illustrating the previously described circuit.
|
67
70
|
|
68
71
|
from qiskit.circuit.library import QFT
|
69
72
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -55,6 +55,7 @@ class InnerProduct(QuantumCircuit):
|
|
55
55
|
|
56
56
|
Reference Circuit:
|
57
57
|
.. plot::
|
58
|
+
:alt: Diagram illustrating the previously described circuit.
|
58
59
|
|
59
60
|
from qiskit.circuit.library import InnerProduct
|
60
61
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -121,6 +122,7 @@ class InnerProductGate(Gate):
|
|
121
122
|
|
122
123
|
Reference Circuit:
|
123
124
|
.. plot::
|
125
|
+
:alt: Diagram illustrating the previously described circuit.
|
124
126
|
|
125
127
|
from qiskit.circuit import QuantumCircuit
|
126
128
|
from qiskit.circuit.library import InnerProductGate
|
@@ -32,6 +32,7 @@ class AND(QuantumCircuit):
|
|
32
32
|
The AND gate without special flags equals the multi-controlled-X gate:
|
33
33
|
|
34
34
|
.. plot::
|
35
|
+
:alt: Diagram illustrating the previously described circuit.
|
35
36
|
|
36
37
|
from qiskit.circuit.library import AND
|
37
38
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -43,6 +44,7 @@ class AND(QuantumCircuit):
|
|
43
44
|
``[-1, 0, 0, 1, 1]``.
|
44
45
|
|
45
46
|
.. plot::
|
47
|
+
:alt: Diagram illustrating the previously described circuit.
|
46
48
|
|
47
49
|
from qiskit.circuit.library import AND
|
48
50
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -116,6 +118,7 @@ class AndGate(Gate):
|
|
116
118
|
The AndGate gate without special flags equals the multi-controlled-X gate:
|
117
119
|
|
118
120
|
.. plot::
|
121
|
+
:alt: Diagram illustrating the previously described circuit.
|
119
122
|
|
120
123
|
from qiskit.circuit import QuantumCircuit
|
121
124
|
from qiskit.circuit.library import AndGate
|
@@ -129,6 +132,7 @@ class AndGate(Gate):
|
|
129
132
|
``[-1, 0, 0, 1, 1]``.
|
130
133
|
|
131
134
|
.. plot::
|
135
|
+
:alt: Diagram illustrating the previously described circuit.
|
132
136
|
|
133
137
|
from qiskit.circuit import QuantumCircuit
|
134
138
|
from qiskit.circuit.library import AndGate
|
@@ -33,6 +33,7 @@ class OR(QuantumCircuit):
|
|
33
33
|
The OR gate without special flags:
|
34
34
|
|
35
35
|
.. plot::
|
36
|
+
:alt: Diagram illustrating the previously described circuit.
|
36
37
|
|
37
38
|
from qiskit.circuit.library import OR
|
38
39
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -44,6 +45,7 @@ class OR(QuantumCircuit):
|
|
44
45
|
flags ``[-1, 0, 0, 1, 1]``.
|
45
46
|
|
46
47
|
.. plot::
|
48
|
+
:alt: Diagram illustrating the previously described circuit.
|
47
49
|
|
48
50
|
from qiskit.circuit.library import OR
|
49
51
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -117,6 +119,7 @@ class OrGate(Gate):
|
|
117
119
|
The OrGate gate without special flags:
|
118
120
|
|
119
121
|
.. plot::
|
122
|
+
:alt: Diagram illustrating the previously described circuit.
|
120
123
|
|
121
124
|
from qiskit.circuit import QuantumCircuit
|
122
125
|
from qiskit.circuit.library import OrGate
|
@@ -130,6 +133,7 @@ class OrGate(Gate):
|
|
130
133
|
flags ``[-1, 0, 0, 1, 1]``.
|
131
134
|
|
132
135
|
.. plot::
|
136
|
+
:alt: Diagram illustrating the previously described circuit.
|
133
137
|
|
134
138
|
from qiskit.circuit import QuantumCircuit
|
135
139
|
from qiskit.circuit.library import OrGate
|
@@ -53,6 +53,7 @@ class XOR(QuantumCircuit):
|
|
53
53
|
|
54
54
|
Reference Circuit:
|
55
55
|
.. plot::
|
56
|
+
:alt: Diagram illustrating the previously described circuit.
|
56
57
|
|
57
58
|
from qiskit.circuit.library import XOR
|
58
59
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -88,6 +89,7 @@ class BitwiseXorGate(Gate):
|
|
88
89
|
Reference Circuit:
|
89
90
|
|
90
91
|
.. plot::
|
92
|
+
:alt: Diagram illustrating the previously described circuit.
|
91
93
|
|
92
94
|
from qiskit.circuit import QuantumCircuit
|
93
95
|
from qiskit.circuit.library import BitwiseXorGate
|
@@ -70,6 +70,7 @@ class FourierChecking(QuantumCircuit):
|
|
70
70
|
|
71
71
|
Reference Circuit:
|
72
72
|
.. plot::
|
73
|
+
:alt: Diagram illustrating the previously described circuit.
|
73
74
|
|
74
75
|
from qiskit.circuit.library import FourierChecking
|
75
76
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -124,6 +125,7 @@ def fourier_checking(f: Sequence[int], g: Sequence[int]) -> QuantumCircuit:
|
|
124
125
|
**Reference Circuit:**
|
125
126
|
|
126
127
|
.. plot::
|
128
|
+
:alt: Circuit diagram output by the previous code.
|
127
129
|
:include-source:
|
128
130
|
|
129
131
|
from qiskit.circuit.library import fourier_checking
|
@@ -45,6 +45,7 @@ class GR(QuantumCircuit):
|
|
45
45
|
**Expanded Circuit:**
|
46
46
|
|
47
47
|
.. plot::
|
48
|
+
:alt: Diagram illustrating the previously described circuit.
|
48
49
|
|
49
50
|
from qiskit.circuit.library import GR
|
50
51
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -99,6 +100,7 @@ class GRX(GR):
|
|
99
100
|
**Expanded Circuit:**
|
100
101
|
|
101
102
|
.. plot::
|
103
|
+
:alt: Diagram illustrating the previously described circuit.
|
102
104
|
|
103
105
|
from qiskit.circuit.library import GRX
|
104
106
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -147,6 +149,7 @@ class GRY(GR):
|
|
147
149
|
**Expanded Circuit:**
|
148
150
|
|
149
151
|
.. plot::
|
152
|
+
:alt: Diagram illustrating the previously described circuit.
|
150
153
|
|
151
154
|
from qiskit.circuit.library import GRY
|
152
155
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -195,6 +198,7 @@ class GRZ(QuantumCircuit):
|
|
195
198
|
**Expanded Circuit:**
|
196
199
|
|
197
200
|
.. plot::
|
201
|
+
:alt: Diagram illustrating the previously described circuit.
|
198
202
|
|
199
203
|
from qiskit.circuit.library import GRZ
|
200
204
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -129,6 +129,7 @@ class MCMTVChain(MCMT):
|
|
129
129
|
**Expanded Circuit:**
|
130
130
|
|
131
131
|
.. plot::
|
132
|
+
:alt: Diagram illustrating the previously described circuit.
|
132
133
|
|
133
134
|
from qiskit.circuit.library import MCMTVChain, ZGate
|
134
135
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -54,6 +54,7 @@ class Permutation(QuantumCircuit):
|
|
54
54
|
|
55
55
|
Reference Circuit:
|
56
56
|
.. plot::
|
57
|
+
:alt: Diagram illustrating the previously described circuit.
|
57
58
|
|
58
59
|
from qiskit.circuit.library import Permutation
|
59
60
|
A = [2,4,3,0,1]
|
@@ -62,6 +63,7 @@ class Permutation(QuantumCircuit):
|
|
62
63
|
|
63
64
|
Expanded Circuit:
|
64
65
|
.. plot::
|
66
|
+
:alt: Diagram illustrating the previously described circuit.
|
65
67
|
|
66
68
|
from qiskit.circuit.library import Permutation
|
67
69
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -116,6 +118,7 @@ class PermutationGate(Gate):
|
|
116
118
|
|
117
119
|
Reference Circuit:
|
118
120
|
.. plot::
|
121
|
+
:alt: Diagram illustrating the previously described circuit.
|
119
122
|
|
120
123
|
from qiskit.circuit.quantumcircuit import QuantumCircuit
|
121
124
|
from qiskit.circuit.library import PermutationGate
|
@@ -127,6 +130,7 @@ class PermutationGate(Gate):
|
|
127
130
|
|
128
131
|
Expanded Circuit:
|
129
132
|
.. plot::
|
133
|
+
:alt: Diagram illustrating the previously described circuit.
|
130
134
|
|
131
135
|
from qiskit.circuit.quantumcircuit import QuantumCircuit
|
132
136
|
from qiskit.circuit.library import PermutationGate
|
@@ -182,7 +186,7 @@ class PermutationGate(Gate):
|
|
182
186
|
|
183
187
|
return PermutationGate(pattern=_inverse_pattern(self.pattern))
|
184
188
|
|
185
|
-
def
|
189
|
+
def _qasm_decomposition(self):
|
186
190
|
# pylint: disable=cyclic-import
|
187
191
|
from qiskit.synthesis.permutation import synth_permutation_basic
|
188
192
|
|
@@ -200,7 +200,7 @@ class UnitaryGate(Gate):
|
|
200
200
|
)
|
201
201
|
return gate
|
202
202
|
|
203
|
-
def
|
203
|
+
def _qasm_decomposition(self):
|
204
204
|
"""Return an unparameterized version of ourselves, so the OQ2 exporter doesn't choke on the
|
205
205
|
non-standard things in our `params` field."""
|
206
206
|
out = self.definition.to_gate()
|
@@ -41,6 +41,7 @@ class GraphState(QuantumCircuit):
|
|
41
41
|
**Reference Circuit:**
|
42
42
|
|
43
43
|
.. plot::
|
44
|
+
:alt: Diagram illustrating the previously described circuit.
|
44
45
|
|
45
46
|
from qiskit.circuit.library import GraphState
|
46
47
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -105,6 +106,7 @@ class GraphStateGate(Gate):
|
|
105
106
|
**Reference Circuit:**
|
106
107
|
|
107
108
|
.. plot::
|
109
|
+
:alt: Circuit diagram output by the previous code.
|
108
110
|
:include-source:
|
109
111
|
|
110
112
|
from qiskit.circuit import QuantumCircuit
|
@@ -103,6 +103,7 @@ def grover_operator(
|
|
103
103
|
We can construct a Grover operator just from the phase oracle:
|
104
104
|
|
105
105
|
.. plot::
|
106
|
+
:alt: Circuit diagram output by the previous code.
|
106
107
|
:include-source:
|
107
108
|
:context:
|
108
109
|
|
@@ -117,8 +118,9 @@ def grover_operator(
|
|
117
118
|
We can also modify the state preparation:
|
118
119
|
|
119
120
|
.. plot::
|
121
|
+
:alt: Circuit diagram output by the previous code.
|
120
122
|
:include-source:
|
121
|
-
:context:
|
123
|
+
:context: close-figs
|
122
124
|
|
123
125
|
oracle = QuantumCircuit(1)
|
124
126
|
oracle.z(0) # the qubit state |1> is the good state
|
@@ -132,8 +134,9 @@ def grover_operator(
|
|
132
134
|
the oracle:
|
133
135
|
|
134
136
|
.. plot::
|
137
|
+
:alt: Circuit diagram output by the previous code.
|
135
138
|
:include-source:
|
136
|
-
:context:
|
139
|
+
:context: close-figs
|
137
140
|
|
138
141
|
oracle = QuantumCircuit(4)
|
139
142
|
oracle.z(3)
|
@@ -149,8 +152,9 @@ def grover_operator(
|
|
149
152
|
objects:
|
150
153
|
|
151
154
|
.. plot::
|
155
|
+
:alt: Circuit diagram output by the previous code.
|
152
156
|
:include-source:
|
153
|
-
:context:
|
157
|
+
:context: close-figs
|
154
158
|
|
155
159
|
from qiskit.quantum_info import Statevector, DensityMatrix, Operator
|
156
160
|
|
@@ -55,6 +55,7 @@ class HiddenLinearFunction(QuantumCircuit):
|
|
55
55
|
**Reference Circuit:**
|
56
56
|
|
57
57
|
.. plot::
|
58
|
+
:alt: Diagram illustrating the previously described circuit.
|
58
59
|
|
59
60
|
from qiskit.circuit.library import HiddenLinearFunction
|
60
61
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -123,6 +124,7 @@ def hidden_linear_function(adjacency_matrix: list | np.ndarray) -> QuantumCircui
|
|
123
124
|
**Reference Circuit:**
|
124
125
|
|
125
126
|
.. plot::
|
127
|
+
:alt: Circuit diagram output by the previous code.
|
126
128
|
:include-source:
|
127
129
|
|
128
130
|
from qiskit.circuit.library import hidden_linear_function
|
qiskit/circuit/library/iqp.py
CHANGED
@@ -38,6 +38,7 @@ class IQP(QuantumCircuit):
|
|
38
38
|
**Reference Circuit:**
|
39
39
|
|
40
40
|
.. plot::
|
41
|
+
:alt: Diagram illustrating the previously described circuit.
|
41
42
|
|
42
43
|
from qiskit.circuit.library import IQP
|
43
44
|
A = [[6, 5, 3], [5, 4, 5], [3, 5, 1]]
|
@@ -47,6 +48,7 @@ class IQP(QuantumCircuit):
|
|
47
48
|
**Expanded Circuit:**
|
48
49
|
|
49
50
|
.. plot::
|
51
|
+
:alt: Diagram illustrating the previously described circuit.
|
50
52
|
|
51
53
|
from qiskit.circuit.library import IQP
|
52
54
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -97,6 +99,7 @@ def iqp(
|
|
97
99
|
**Reference Circuit:**
|
98
100
|
|
99
101
|
.. plot::
|
102
|
+
:alt: Diagram illustrating the previously described circuit.
|
100
103
|
|
101
104
|
from qiskit.circuit.library import iqp
|
102
105
|
A = [[6, 5, 3], [5, 4, 5], [3, 5, 1]]
|
@@ -106,6 +109,7 @@ def iqp(
|
|
106
109
|
**Expanded Circuit:**
|
107
110
|
|
108
111
|
.. plot::
|
112
|
+
:alt: Diagram illustrating the previously described circuit.
|
109
113
|
|
110
114
|
from qiskit.circuit.library import iqp
|
111
115
|
from qiskit.visualization.library import _generate_circuit_library_visualization
|
@@ -154,6 +158,7 @@ def random_iqp(
|
|
154
158
|
Example:
|
155
159
|
|
156
160
|
.. plot::
|
161
|
+
:alt: Circuit diagram output by the previous code.
|
157
162
|
:include-source:
|
158
163
|
|
159
164
|
from qiskit.circuit.library import random_iqp
|
@@ -71,6 +71,7 @@ def efficient_su2(
|
|
71
71
|
CX gates, is equivalent to an all-to-all entanglement:
|
72
72
|
|
73
73
|
.. plot::
|
74
|
+
:alt: Circuit diagram output by the previous code.
|
74
75
|
:include-source:
|
75
76
|
:context:
|
76
77
|
|
@@ -84,8 +85,9 @@ def efficient_su2(
|
|
84
85
|
For example:
|
85
86
|
|
86
87
|
.. plot::
|
88
|
+
:alt: Circuit diagram output by the previous code.
|
87
89
|
:include-source:
|
88
|
-
:context:
|
90
|
+
:context: close-figs
|
89
91
|
|
90
92
|
circuit = efficient_su2(4, su2_gates=["rx", "y"], entanglement="circular", reps=1)
|
91
93
|
circuit.draw("mpl")
|
@@ -114,10 +116,13 @@ def efficient_su2(
|
|
114
116
|
if su2_gates is None:
|
115
117
|
su2_gates = ["ry", "rz"]
|
116
118
|
|
119
|
+
# Set entanglement_blocks to None when num_qubits == 1
|
120
|
+
entanglement_blocks = ["cx"] if num_qubits > 1 else []
|
121
|
+
|
117
122
|
return n_local(
|
118
123
|
num_qubits,
|
119
124
|
su2_gates,
|
120
|
-
|
125
|
+
entanglement_blocks,
|
121
126
|
entanglement,
|
122
127
|
reps,
|
123
128
|
insert_barriers,
|
@@ -61,6 +61,7 @@ def evolved_operator_ansatz(
|
|
61
61
|
Examples:
|
62
62
|
|
63
63
|
.. plot::
|
64
|
+
:alt: Circuit diagram output by the previous code.
|
64
65
|
:include-source:
|
65
66
|
|
66
67
|
from qiskit.circuit.library import evolved_operator_ansatz
|
@@ -213,6 +214,7 @@ def hamiltonian_variational_ansatz(
|
|
213
214
|
A single operator will be split into commuting terms automatically:
|
214
215
|
|
215
216
|
.. plot::
|
217
|
+
:alt: Circuit diagram output by the previous code.
|
216
218
|
:include-source:
|
217
219
|
|
218
220
|
from qiskit.quantum_info import SparsePauliOp
|
@@ -226,6 +228,7 @@ def hamiltonian_variational_ansatz(
|
|
226
228
|
Alternatively, we can directly provide the terms:
|
227
229
|
|
228
230
|
.. plot::
|
231
|
+
:alt: Circuit diagram output by the previous code.
|
229
232
|
:include-source:
|
230
233
|
|
231
234
|
from qiskit.quantum_info import SparsePauliOp
|
@@ -70,8 +70,9 @@ def excitation_preserving(
|
|
70
70
|
With linear entanglement, this circuit is given by:
|
71
71
|
|
72
72
|
.. plot::
|
73
|
+
:alt: Circuit diagram output by the previous code.
|
73
74
|
:include-source:
|
74
|
-
:context:
|
75
|
+
:context: close-figs
|
75
76
|
|
76
77
|
from qiskit.circuit.library import excitation_preserving
|
77
78
|
|
@@ -83,6 +84,7 @@ def excitation_preserving(
|
|
83
84
|
in each block:
|
84
85
|
|
85
86
|
.. plot::
|
87
|
+
:alt: Circuit diagram output by the previous code.
|
86
88
|
:include-source:
|
87
89
|
:context:
|
88
90
|
|
@@ -112,17 +114,21 @@ def excitation_preserving(
|
|
112
114
|
raise ValueError(f"Unsupported mode {mode}, choose one of {supported_modes}")
|
113
115
|
|
114
116
|
theta = Parameter("θ")
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
117
|
+
if num_qubits > 1:
|
118
|
+
swap = QuantumCircuit(2, name="Interaction")
|
119
|
+
swap.rxx(theta, 0, 1)
|
120
|
+
swap.ryy(theta, 0, 1)
|
121
|
+
if mode == "fsim":
|
122
|
+
phi = Parameter("φ")
|
123
|
+
swap.cp(phi, 0, 1)
|
124
|
+
entanglement_blocks = [swap.to_gate()]
|
125
|
+
else:
|
126
|
+
entanglement_blocks = []
|
121
127
|
|
122
128
|
return n_local(
|
123
129
|
num_qubits,
|
124
130
|
["rz"],
|
125
|
-
|
131
|
+
entanglement_blocks,
|
126
132
|
entanglement,
|
127
133
|
reps,
|
128
134
|
insert_barriers,
|
@@ -148,6 +148,7 @@ def n_local(
|
|
148
148
|
are made up of a single block per layer:
|
149
149
|
|
150
150
|
.. plot::
|
151
|
+
:alt: Circuit diagram output by the previous code.
|
151
152
|
:include-source:
|
152
153
|
:context:
|
153
154
|
|
@@ -160,8 +161,9 @@ def n_local(
|
|
160
161
|
Pauli-Y and Pauli-Z rotations in the rotation layer:
|
161
162
|
|
162
163
|
.. plot::
|
164
|
+
:alt: Circuit diagram output by the previous code.
|
163
165
|
:include-source:
|
164
|
-
:context:
|
166
|
+
:context: close-figs
|
165
167
|
|
166
168
|
circuit = n_local(3, ["ry", "rz"], "cz", "full", reps=1, insert_barriers=True)
|
167
169
|
circuit.draw("mpl")
|
@@ -169,8 +171,9 @@ def n_local(
|
|
169
171
|
To omit rotation or entanglement layers, the block can be set to an empty list:
|
170
172
|
|
171
173
|
.. plot::
|
174
|
+
:alt: Circuit diagram output by the previous code.
|
172
175
|
:include-source:
|
173
|
-
:context:
|
176
|
+
:context: close-figs
|
174
177
|
|
175
178
|
circuit = n_local(4, [], "cry", reps=2)
|
176
179
|
circuit.draw("mpl")
|
@@ -178,8 +181,9 @@ def n_local(
|
|
178
181
|
The entanglement can be set explicitly via the ``entanglement`` argument:
|
179
182
|
|
180
183
|
.. plot::
|
184
|
+
:alt: Circuit diagram output by the previous code.
|
181
185
|
:include-source:
|
182
|
-
:context:
|
186
|
+
:context: close-figs
|
183
187
|
|
184
188
|
entangler_map = [[0, 1], [2, 0]]
|
185
189
|
circuit = n_local(3, "x", "crx", entangler_map, reps=2)
|
@@ -189,9 +193,10 @@ def n_local(
|
|
189
193
|
as input the current layer index, and returns the entanglement structure. For example,
|
190
194
|
the following uses different entanglements for odd and even layers:
|
191
195
|
|
192
|
-
.. plot
|
196
|
+
.. plot::
|
197
|
+
:alt: Circuit diagram output by the previous code.
|
193
198
|
:include-source:
|
194
|
-
:context:
|
199
|
+
:context: close-figs
|
195
200
|
|
196
201
|
def entanglement(layer_index):
|
197
202
|
if layer_index % 2 == 0:
|
@@ -59,6 +59,7 @@ def pauli_two_design(
|
|
59
59
|
Examples:
|
60
60
|
|
61
61
|
.. plot::
|
62
|
+
:alt: Circuit diagram output by the previous code.
|
62
63
|
:include-source:
|
63
64
|
|
64
65
|
from qiskit.circuit.library import pauli_two_design
|
@@ -88,19 +89,20 @@ def pauli_two_design(
|
|
88
89
|
"""
|
89
90
|
rng = np.random.default_rng(seed)
|
90
91
|
random_block = Block.from_callable(1, 1, lambda params: _random_pauli_builder(params, rng))
|
91
|
-
|
92
|
+
entanglement_block = [Block.from_standard_gate(CZGate._standard_gate)] if num_qubits > 1 else []
|
92
93
|
|
93
94
|
data = py_n_local(
|
94
95
|
num_qubits=num_qubits,
|
95
96
|
reps=reps,
|
96
97
|
rotation_blocks=[random_block],
|
97
|
-
entanglement_blocks=
|
98
|
+
entanglement_blocks=entanglement_block,
|
98
99
|
entanglement=["pairwise"],
|
99
100
|
insert_barriers=insert_barriers,
|
100
101
|
skip_final_rotation_layer=False,
|
101
102
|
skip_unentangled_qubits=False,
|
102
103
|
parameter_prefix=parameter_prefix,
|
103
104
|
)
|
105
|
+
|
104
106
|
two_design = QuantumCircuit._from_circuit_data(data)
|
105
107
|
|
106
108
|
circuit = QuantumCircuit(num_qubits, name=name)
|
@@ -147,6 +149,7 @@ class PauliTwoDesign(TwoLocal):
|
|
147
149
|
Examples:
|
148
150
|
|
149
151
|
.. plot::
|
152
|
+
:alt: Circuit diagram output by the previous code.
|
150
153
|
:include-source:
|
151
154
|
|
152
155
|
from qiskit.circuit.library import PauliTwoDesign
|
@@ -68,6 +68,7 @@ def real_amplitudes(
|
|
68
68
|
Examples:
|
69
69
|
|
70
70
|
.. plot::
|
71
|
+
:alt: Circuit diagram output by the previous code.
|
71
72
|
:include-source:
|
72
73
|
:context:
|
73
74
|
|
@@ -77,22 +78,25 @@ def real_amplitudes(
|
|
77
78
|
ansatz.draw("mpl")
|
78
79
|
|
79
80
|
.. plot::
|
81
|
+
:alt: Circuit diagram output by the previous code.
|
80
82
|
:include-source:
|
81
|
-
:context:
|
83
|
+
:context: close-figs
|
82
84
|
|
83
85
|
ansatz = real_amplitudes(3, entanglement="full", reps=2) # it is the same unitary as above
|
84
86
|
ansatz.draw("mpl")
|
85
87
|
|
86
88
|
.. plot::
|
89
|
+
:alt: Circuit diagram output by the previous code.
|
87
90
|
:include-source:
|
88
|
-
:context:
|
91
|
+
:context: close-figs
|
89
92
|
|
90
93
|
ansatz = real_amplitudes(3, entanglement="linear", reps=2, insert_barriers=True)
|
91
94
|
ansatz.draw("mpl")
|
92
95
|
|
93
96
|
.. plot::
|
97
|
+
:alt: Circuit diagram output by the previous code.
|
94
98
|
:include-source:
|
95
|
-
:context:
|
99
|
+
:context: close-figs
|
96
100
|
|
97
101
|
ansatz = real_amplitudes(4, reps=2, entanglement=[[0,3], [0,2]], skip_unentangled_qubits=True)
|
98
102
|
ansatz.draw("mpl")
|
@@ -114,11 +118,13 @@ def real_amplitudes(
|
|
114
118
|
Returns:
|
115
119
|
A real-amplitudes circuit.
|
116
120
|
"""
|
121
|
+
# Set entanglement_blocks to None when num_qubits == 1
|
122
|
+
entanglement_blocks = ["cx"] if num_qubits > 1 else []
|
117
123
|
|
118
124
|
return n_local(
|
119
125
|
num_qubits,
|
120
126
|
["ry"],
|
121
|
-
|
127
|
+
entanglement_blocks,
|
122
128
|
entanglement,
|
123
129
|
reps,
|
124
130
|
insert_barriers,
|