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.
Files changed (76) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/_accelerate.pyd +0 -0
  3. qiskit/circuit/__init__.py +2 -0
  4. qiskit/circuit/controlledgate.py +2 -0
  5. qiskit/circuit/library/__init__.py +1 -0
  6. qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +1 -0
  7. qiskit/circuit/library/basis_change/qft.py +3 -0
  8. qiskit/circuit/library/boolean_logic/inner_product.py +2 -0
  9. qiskit/circuit/library/boolean_logic/quantum_and.py +4 -0
  10. qiskit/circuit/library/boolean_logic/quantum_or.py +4 -0
  11. qiskit/circuit/library/boolean_logic/quantum_xor.py +2 -0
  12. qiskit/circuit/library/fourier_checking.py +2 -0
  13. qiskit/circuit/library/generalized_gates/gms.py +1 -0
  14. qiskit/circuit/library/generalized_gates/gr.py +4 -0
  15. qiskit/circuit/library/generalized_gates/mcmt.py +1 -0
  16. qiskit/circuit/library/generalized_gates/permutation.py +5 -1
  17. qiskit/circuit/library/generalized_gates/unitary.py +1 -1
  18. qiskit/circuit/library/graph_state.py +2 -0
  19. qiskit/circuit/library/grover_operator.py +7 -3
  20. qiskit/circuit/library/hidden_linear_function.py +2 -0
  21. qiskit/circuit/library/iqp.py +5 -0
  22. qiskit/circuit/library/n_local/efficient_su2.py +7 -2
  23. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +3 -0
  24. qiskit/circuit/library/n_local/excitation_preserving.py +14 -8
  25. qiskit/circuit/library/n_local/n_local.py +10 -5
  26. qiskit/circuit/library/n_local/pauli_two_design.py +5 -2
  27. qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -0
  28. qiskit/circuit/library/n_local/real_amplitudes.py +10 -4
  29. qiskit/circuit/library/overlap.py +1 -0
  30. qiskit/circuit/library/phase_estimation.py +2 -0
  31. qiskit/circuit/library/quantum_volume.py +3 -0
  32. qiskit/circuit/operation.py +1 -0
  33. qiskit/circuit/parameter.py +1 -0
  34. qiskit/circuit/parameterexpression.py +1 -1
  35. qiskit/circuit/quantumcircuit.py +13 -19
  36. qiskit/circuit/random/utils.py +2 -0
  37. qiskit/converters/dag_to_circuit.py +1 -0
  38. qiskit/primitives/statevector_estimator.py +1 -0
  39. qiskit/providers/fake_provider/__init__.py +1 -0
  40. qiskit/pulse/builder.py +8 -0
  41. qiskit/pulse/library/symbolic_pulses.py +1 -0
  42. qiskit/qasm2/export.py +2 -2
  43. qiskit/qasm3/__init__.py +1 -0
  44. qiskit/qasm3/exporter.py +6 -3
  45. qiskit/quantum_info/operators/symplectic/pauli_list.py +8 -8
  46. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +10 -1
  47. qiskit/quantum_info/states/statevector.py +1 -0
  48. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -0
  49. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +1 -0
  50. qiskit/synthesis/evolution/product_formula.py +0 -6
  51. qiskit/synthesis/evolution/suzuki_trotter.py +22 -5
  52. qiskit/transpiler/__init__.py +22 -1
  53. qiskit/transpiler/layout.py +3 -0
  54. qiskit/transpiler/passes/routing/star_prerouting.py +1 -0
  55. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +1 -0
  56. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +1 -0
  57. qiskit/transpiler/passes/synthesis/hls_plugins.py +48 -9
  58. qiskit/transpiler/passes/utils/filter_op_nodes.py +2 -1
  59. qiskit/transpiler/passes/utils/remove_barriers.py +1 -0
  60. qiskit/transpiler/preset_passmanagers/__init__.py +5 -5
  61. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +19 -22
  62. qiskit/transpiler/target.py +1 -1
  63. qiskit/visualization/__init__.py +6 -0
  64. qiskit/visualization/circuit/circuit_visualization.py +1 -0
  65. qiskit/visualization/counts_visualization.py +2 -0
  66. qiskit/visualization/dag_visualization.py +1 -0
  67. qiskit/visualization/gate_map.py +7 -3
  68. qiskit/visualization/pulse_v2/interface.py +4 -1
  69. qiskit/visualization/state_visualization.py +13 -2
  70. qiskit/visualization/timeline/interface.py +6 -3
  71. {qiskit-1.3.1.dist-info → qiskit-1.3.2.dist-info}/METADATA +17 -17
  72. {qiskit-1.3.1.dist-info → qiskit-1.3.2.dist-info}/RECORD +76 -76
  73. {qiskit-1.3.1.dist-info → qiskit-1.3.2.dist-info}/WHEEL +1 -1
  74. {qiskit-1.3.1.dist-info → qiskit-1.3.2.dist-info}/LICENSE.txt +0 -0
  75. {qiskit-1.3.1.dist-info → qiskit-1.3.2.dist-info}/entry_points.txt +0 -0
  76. {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
+ 1.3.2
qiskit/_accelerate.pyd CHANGED
Binary file
@@ -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
@@ -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
@@ -37,6 +37,7 @@ class PiecewiseChebyshev(BlueprintCircuit):
37
37
  Examples:
38
38
 
39
39
  .. plot::
40
+ :alt: Circuit diagram output by the previous code.
40
41
  :include-source:
41
42
 
42
43
  import numpy as np
@@ -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 GMS(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 GMS
50
51
  from qiskit.visualization.library import _generate_circuit_library_visualization
@@ -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 _qasm2_decomposition(self):
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 _qasm2_decomposition(self):
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
@@ -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
- ["cx"],
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
- swap = QuantumCircuit(2, name="Interaction")
116
- swap.rxx(theta, 0, 1)
117
- swap.ryy(theta, 0, 1)
118
- if mode == "fsim":
119
- phi = Parameter("φ")
120
- swap.cp(phi, 0, 1)
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
- [swap.to_gate()],
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
- cz_block = Block.from_standard_gate(CZGate._standard_gate)
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=[cz_block],
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
@@ -47,6 +47,7 @@ def qaoa_ansatz(
47
47
  optimization problem:
48
48
 
49
49
  .. plot::
50
+ :alt: Circuit diagram output by the previous code.
50
51
  :include-source:
51
52
 
52
53
  from qiskit.quantum_info import SparsePauliOp
@@ -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
- ["cx"],
127
+ entanglement_blocks,
122
128
  entanglement,
123
129
  reps,
124
130
  insert_barriers,