qiskit 1.3.0b1__cp39-abi3-win32.whl → 1.3.0rc2__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 (360) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +20 -1
  3. qiskit/_accelerate.pyd +0 -0
  4. qiskit/assembler/assemble_schedules.py +2 -0
  5. qiskit/circuit/__init__.py +44 -1
  6. qiskit/circuit/_standard_gates_commutations.py +585 -0
  7. qiskit/circuit/barrier.py +2 -0
  8. qiskit/circuit/controlflow/builder.py +3 -3
  9. qiskit/circuit/controlflow/if_else.py +13 -5
  10. qiskit/circuit/controlflow/while_loop.py +10 -2
  11. qiskit/circuit/delay.py +20 -3
  12. qiskit/circuit/equivalence.py +13 -214
  13. qiskit/circuit/gate.py +3 -1
  14. qiskit/circuit/instruction.py +32 -11
  15. qiskit/circuit/instructionset.py +2 -0
  16. qiskit/circuit/library/__init__.py +110 -14
  17. qiskit/circuit/library/arithmetic/__init__.py +9 -2
  18. qiskit/circuit/library/arithmetic/adders/__init__.py +1 -0
  19. qiskit/circuit/library/arithmetic/adders/adder.py +154 -2
  20. qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +20 -56
  21. qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +14 -1
  22. qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +21 -91
  23. qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +1 -1
  24. qiskit/circuit/library/arithmetic/multipliers/__init__.py +1 -0
  25. qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py +8 -1
  26. qiskit/circuit/library/arithmetic/multipliers/multiplier.py +94 -3
  27. qiskit/circuit/library/arithmetic/multipliers/rg_qft_multiplier.py +8 -1
  28. qiskit/circuit/library/arithmetic/weighted_adder.py +1 -1
  29. qiskit/circuit/library/basis_change/qft.py +20 -38
  30. qiskit/circuit/library/blueprintcircuit.py +64 -0
  31. qiskit/circuit/library/boolean_logic/__init__.py +4 -4
  32. qiskit/circuit/library/boolean_logic/inner_product.py +81 -4
  33. qiskit/circuit/library/boolean_logic/quantum_and.py +107 -4
  34. qiskit/circuit/library/boolean_logic/quantum_or.py +107 -3
  35. qiskit/circuit/library/boolean_logic/quantum_xor.py +97 -3
  36. qiskit/circuit/library/data_preparation/__init__.py +6 -3
  37. qiskit/circuit/library/data_preparation/{z_feature_map.py → _z_feature_map.py} +45 -34
  38. qiskit/circuit/library/data_preparation/_zz_feature_map.py +150 -0
  39. qiskit/circuit/library/data_preparation/pauli_feature_map.py +342 -29
  40. qiskit/circuit/library/fourier_checking.py +72 -11
  41. qiskit/circuit/library/generalized_gates/__init__.py +1 -1
  42. qiskit/circuit/library/generalized_gates/diagonal.py +45 -51
  43. qiskit/circuit/library/generalized_gates/gms.py +67 -14
  44. qiskit/circuit/library/generalized_gates/gr.py +4 -4
  45. qiskit/circuit/library/generalized_gates/isometry.py +2 -2
  46. qiskit/circuit/library/generalized_gates/linear_function.py +12 -6
  47. qiskit/circuit/library/generalized_gates/mcmt.py +167 -107
  48. qiskit/circuit/library/generalized_gates/permutation.py +8 -6
  49. qiskit/circuit/library/generalized_gates/rv.py +8 -9
  50. qiskit/circuit/library/graph_state.py +93 -10
  51. qiskit/circuit/library/grover_operator.py +270 -2
  52. qiskit/circuit/library/hidden_linear_function.py +83 -20
  53. qiskit/circuit/library/iqp.py +99 -20
  54. qiskit/circuit/library/n_local/__init__.py +19 -7
  55. qiskit/circuit/library/n_local/efficient_su2.py +118 -5
  56. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +259 -0
  57. qiskit/circuit/library/n_local/excitation_preserving.py +130 -6
  58. qiskit/circuit/library/n_local/n_local.py +406 -5
  59. qiskit/circuit/library/n_local/pauli_two_design.py +106 -4
  60. qiskit/circuit/library/n_local/qaoa_ansatz.py +80 -1
  61. qiskit/circuit/library/n_local/real_amplitudes.py +127 -7
  62. qiskit/circuit/library/n_local/two_local.py +14 -7
  63. qiskit/circuit/library/overlap.py +91 -26
  64. qiskit/circuit/library/pauli_evolution.py +17 -15
  65. qiskit/circuit/library/phase_estimation.py +80 -4
  66. qiskit/circuit/library/quantum_volume.py +72 -20
  67. qiskit/circuit/library/standard_gates/__init__.py +20 -1
  68. qiskit/circuit/library/standard_gates/dcx.py +2 -1
  69. qiskit/circuit/library/standard_gates/ecr.py +2 -2
  70. qiskit/circuit/library/standard_gates/h.py +4 -3
  71. qiskit/circuit/library/standard_gates/i.py +2 -1
  72. qiskit/circuit/library/standard_gates/iswap.py +2 -2
  73. qiskit/circuit/library/standard_gates/p.py +20 -12
  74. qiskit/circuit/library/standard_gates/r.py +1 -1
  75. qiskit/circuit/library/standard_gates/rx.py +4 -3
  76. qiskit/circuit/library/standard_gates/rxx.py +2 -2
  77. qiskit/circuit/library/standard_gates/ry.py +4 -3
  78. qiskit/circuit/library/standard_gates/ryy.py +2 -2
  79. qiskit/circuit/library/standard_gates/rz.py +13 -12
  80. qiskit/circuit/library/standard_gates/rzx.py +6 -6
  81. qiskit/circuit/library/standard_gates/rzz.py +1 -1
  82. qiskit/circuit/library/standard_gates/s.py +4 -4
  83. qiskit/circuit/library/standard_gates/swap.py +3 -3
  84. qiskit/circuit/library/standard_gates/sx.py +4 -3
  85. qiskit/circuit/library/standard_gates/t.py +2 -2
  86. qiskit/circuit/library/standard_gates/u.py +11 -3
  87. qiskit/circuit/library/standard_gates/u1.py +65 -15
  88. qiskit/circuit/library/standard_gates/u2.py +4 -1
  89. qiskit/circuit/library/standard_gates/u3.py +31 -3
  90. qiskit/circuit/library/standard_gates/x.py +7 -5
  91. qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -2
  92. qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -2
  93. qiskit/circuit/library/standard_gates/y.py +4 -3
  94. qiskit/circuit/library/standard_gates/z.py +3 -3
  95. qiskit/circuit/library/templates/clifford/clifford_2_1.py +9 -8
  96. qiskit/circuit/library/templates/clifford/clifford_2_2.py +10 -9
  97. qiskit/circuit/library/templates/clifford/clifford_2_3.py +9 -7
  98. qiskit/circuit/library/templates/clifford/clifford_2_4.py +9 -8
  99. qiskit/circuit/library/templates/clifford/clifford_3_1.py +9 -8
  100. qiskit/circuit/library/templates/clifford/clifford_4_1.py +10 -9
  101. qiskit/circuit/library/templates/clifford/clifford_4_2.py +10 -9
  102. qiskit/circuit/library/templates/clifford/clifford_4_3.py +10 -9
  103. qiskit/circuit/library/templates/clifford/clifford_4_4.py +10 -9
  104. qiskit/circuit/library/templates/clifford/clifford_5_1.py +10 -9
  105. qiskit/circuit/library/templates/clifford/clifford_6_1.py +10 -9
  106. qiskit/circuit/library/templates/clifford/clifford_6_2.py +10 -9
  107. qiskit/circuit/library/templates/clifford/clifford_6_3.py +10 -9
  108. qiskit/circuit/library/templates/clifford/clifford_6_4.py +9 -8
  109. qiskit/circuit/library/templates/clifford/clifford_6_5.py +10 -9
  110. qiskit/circuit/library/templates/clifford/clifford_8_1.py +10 -9
  111. qiskit/circuit/library/templates/clifford/clifford_8_2.py +10 -9
  112. qiskit/circuit/library/templates/clifford/clifford_8_3.py +10 -9
  113. qiskit/circuit/library/templates/nct/template_nct_2a_1.py +9 -7
  114. qiskit/circuit/library/templates/nct/template_nct_2a_2.py +10 -8
  115. qiskit/circuit/library/templates/nct/template_nct_2a_3.py +12 -10
  116. qiskit/circuit/library/templates/nct/template_nct_4a_1.py +16 -14
  117. qiskit/circuit/library/templates/nct/template_nct_4a_2.py +14 -12
  118. qiskit/circuit/library/templates/nct/template_nct_4a_3.py +12 -10
  119. qiskit/circuit/library/templates/nct/template_nct_4b_1.py +14 -12
  120. qiskit/circuit/library/templates/nct/template_nct_4b_2.py +12 -10
  121. qiskit/circuit/library/templates/nct/template_nct_5a_1.py +12 -10
  122. qiskit/circuit/library/templates/nct/template_nct_5a_2.py +12 -10
  123. qiskit/circuit/library/templates/nct/template_nct_5a_3.py +12 -10
  124. qiskit/circuit/library/templates/nct/template_nct_5a_4.py +11 -9
  125. qiskit/circuit/library/templates/nct/template_nct_6a_1.py +11 -9
  126. qiskit/circuit/library/templates/nct/template_nct_6a_2.py +12 -10
  127. qiskit/circuit/library/templates/nct/template_nct_6a_3.py +12 -10
  128. qiskit/circuit/library/templates/nct/template_nct_6a_4.py +12 -10
  129. qiskit/circuit/library/templates/nct/template_nct_6b_1.py +12 -10
  130. qiskit/circuit/library/templates/nct/template_nct_6b_2.py +12 -10
  131. qiskit/circuit/library/templates/nct/template_nct_6c_1.py +12 -10
  132. qiskit/circuit/library/templates/nct/template_nct_7a_1.py +13 -11
  133. qiskit/circuit/library/templates/nct/template_nct_7b_1.py +13 -11
  134. qiskit/circuit/library/templates/nct/template_nct_7c_1.py +13 -11
  135. qiskit/circuit/library/templates/nct/template_nct_7d_1.py +13 -11
  136. qiskit/circuit/library/templates/nct/template_nct_7e_1.py +13 -11
  137. qiskit/circuit/library/templates/nct/template_nct_9a_1.py +13 -11
  138. qiskit/circuit/library/templates/nct/template_nct_9c_1.py +11 -9
  139. qiskit/circuit/library/templates/nct/template_nct_9c_10.py +12 -10
  140. qiskit/circuit/library/templates/nct/template_nct_9c_11.py +12 -10
  141. qiskit/circuit/library/templates/nct/template_nct_9c_12.py +12 -10
  142. qiskit/circuit/library/templates/nct/template_nct_9c_2.py +12 -10
  143. qiskit/circuit/library/templates/nct/template_nct_9c_3.py +12 -10
  144. qiskit/circuit/library/templates/nct/template_nct_9c_4.py +12 -10
  145. qiskit/circuit/library/templates/nct/template_nct_9c_5.py +12 -10
  146. qiskit/circuit/library/templates/nct/template_nct_9c_6.py +12 -10
  147. qiskit/circuit/library/templates/nct/template_nct_9c_7.py +12 -10
  148. qiskit/circuit/library/templates/nct/template_nct_9c_8.py +12 -10
  149. qiskit/circuit/library/templates/nct/template_nct_9c_9.py +12 -10
  150. qiskit/circuit/library/templates/nct/template_nct_9d_1.py +11 -9
  151. qiskit/circuit/library/templates/nct/template_nct_9d_10.py +12 -10
  152. qiskit/circuit/library/templates/nct/template_nct_9d_2.py +12 -10
  153. qiskit/circuit/library/templates/nct/template_nct_9d_3.py +12 -10
  154. qiskit/circuit/library/templates/nct/template_nct_9d_4.py +12 -10
  155. qiskit/circuit/library/templates/nct/template_nct_9d_5.py +12 -10
  156. qiskit/circuit/library/templates/nct/template_nct_9d_6.py +12 -10
  157. qiskit/circuit/library/templates/nct/template_nct_9d_7.py +12 -10
  158. qiskit/circuit/library/templates/nct/template_nct_9d_8.py +12 -10
  159. qiskit/circuit/library/templates/nct/template_nct_9d_9.py +12 -10
  160. qiskit/circuit/library/templates/rzx/rzx_cy.py +11 -10
  161. qiskit/circuit/library/templates/rzx/rzx_xz.py +16 -15
  162. qiskit/circuit/library/templates/rzx/rzx_yz.py +12 -10
  163. qiskit/circuit/library/templates/rzx/rzx_zz1.py +22 -20
  164. qiskit/circuit/library/templates/rzx/rzx_zz2.py +16 -15
  165. qiskit/circuit/library/templates/rzx/rzx_zz3.py +17 -15
  166. qiskit/circuit/parameter.py +4 -0
  167. qiskit/circuit/parameterexpression.py +167 -34
  168. qiskit/circuit/quantumcircuit.py +162 -126
  169. qiskit/circuit/singleton.py +2 -0
  170. qiskit/circuit/store.py +2 -0
  171. qiskit/circuit/twirling.py +145 -0
  172. qiskit/compiler/assembler.py +17 -4
  173. qiskit/compiler/scheduler.py +2 -0
  174. qiskit/compiler/sequencer.py +2 -0
  175. qiskit/compiler/transpiler.py +81 -26
  176. qiskit/converters/circuit_to_dag.py +2 -2
  177. qiskit/converters/circuit_to_dagdependency.py +1 -1
  178. qiskit/converters/circuit_to_dagdependency_v2.py +1 -1
  179. qiskit/converters/circuit_to_instruction.py +1 -1
  180. qiskit/converters/dag_to_circuit.py +7 -5
  181. qiskit/converters/dag_to_dagdependency.py +1 -1
  182. qiskit/converters/dag_to_dagdependency_v2.py +1 -1
  183. qiskit/converters/dagdependency_to_circuit.py +5 -1
  184. qiskit/converters/dagdependency_to_dag.py +6 -1
  185. qiskit/dagcircuit/collect_blocks.py +3 -3
  186. qiskit/dagcircuit/dagdependency.py +18 -5
  187. qiskit/dagcircuit/dagdependency_v2.py +1 -1
  188. qiskit/dagcircuit/dagnode.py +2 -2
  189. qiskit/passmanager/__init__.py +2 -2
  190. qiskit/primitives/backend_estimator.py +5 -2
  191. qiskit/primitives/backend_sampler_v2.py +61 -18
  192. qiskit/primitives/base/base_estimator.py +2 -2
  193. qiskit/primitives/containers/data_bin.py +9 -1
  194. qiskit/primitives/statevector_sampler.py +1 -1
  195. qiskit/primitives/utils.py +1 -1
  196. qiskit/providers/__init__.py +3 -3
  197. qiskit/providers/backend.py +12 -1
  198. qiskit/providers/backend_compat.py +23 -3
  199. qiskit/providers/basic_provider/basic_simulator.py +12 -2
  200. qiskit/providers/fake_provider/fake_pulse_backend.py +6 -1
  201. qiskit/providers/fake_provider/generic_backend_v2.py +46 -30
  202. qiskit/providers/models/pulsedefaults.py +2 -0
  203. qiskit/pulse/builder.py +59 -18
  204. qiskit/pulse/calibration_entries.py +4 -1
  205. qiskit/pulse/channels.py +2 -0
  206. qiskit/pulse/exceptions.py +2 -0
  207. qiskit/pulse/instruction_schedule_map.py +21 -6
  208. qiskit/pulse/instructions/acquire.py +2 -0
  209. qiskit/pulse/instructions/delay.py +2 -0
  210. qiskit/pulse/instructions/directives.py +8 -0
  211. qiskit/pulse/instructions/frequency.py +3 -0
  212. qiskit/pulse/instructions/instruction.py +2 -0
  213. qiskit/pulse/instructions/phase.py +3 -0
  214. qiskit/pulse/instructions/play.py +2 -0
  215. qiskit/pulse/instructions/reference.py +2 -0
  216. qiskit/pulse/instructions/snapshot.py +2 -0
  217. qiskit/pulse/library/pulse.py +2 -0
  218. qiskit/pulse/library/symbolic_pulses.py +28 -0
  219. qiskit/pulse/library/waveform.py +2 -0
  220. qiskit/pulse/macros.py +1 -1
  221. qiskit/pulse/schedule.py +12 -13
  222. qiskit/pulse/transforms/alignments.py +5 -3
  223. qiskit/pulse/transforms/dag.py +7 -0
  224. qiskit/qasm2/export.py +5 -3
  225. qiskit/qasm2/parse.py +46 -2
  226. qiskit/qasm3/__init__.py +1 -0
  227. qiskit/qasm3/ast.py +123 -15
  228. qiskit/qasm3/exporter.py +103 -77
  229. qiskit/qobj/converters/pulse_instruction.py +6 -4
  230. qiskit/qpy/__init__.py +181 -0
  231. qiskit/qpy/binary_io/circuits.py +20 -5
  232. qiskit/qpy/binary_io/schedules.py +3 -4
  233. qiskit/qpy/binary_io/value.py +310 -13
  234. qiskit/qpy/common.py +46 -2
  235. qiskit/qpy/formats.py +7 -0
  236. qiskit/qpy/interface.py +40 -4
  237. qiskit/quantum_info/__init__.py +4 -0
  238. qiskit/quantum_info/operators/channel/transformations.py +28 -21
  239. qiskit/quantum_info/operators/dihedral/dihedral.py +1 -1
  240. qiskit/quantum_info/operators/operator.py +54 -8
  241. qiskit/quantum_info/operators/symplectic/base_pauli.py +11 -19
  242. qiskit/quantum_info/operators/symplectic/clifford.py +1 -1
  243. qiskit/quantum_info/operators/symplectic/clifford_circuits.py +1 -1
  244. qiskit/quantum_info/operators/symplectic/pauli.py +2 -0
  245. qiskit/quantum_info/operators/symplectic/pauli_list.py +4 -4
  246. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +23 -2
  247. qiskit/quantum_info/states/densitymatrix.py +5 -5
  248. qiskit/quantum_info/states/stabilizerstate.py +1 -1
  249. qiskit/quantum_info/states/statevector.py +6 -6
  250. qiskit/result/mitigation/base_readout_mitigator.py +1 -1
  251. qiskit/result/mitigation/correlated_readout_mitigator.py +9 -1
  252. qiskit/result/mitigation/local_readout_mitigator.py +9 -1
  253. qiskit/result/mitigation/utils.py +57 -0
  254. qiskit/scheduler/config.py +2 -0
  255. qiskit/scheduler/methods/basic.py +3 -0
  256. qiskit/scheduler/schedule_circuit.py +2 -0
  257. qiskit/scheduler/sequence.py +2 -0
  258. qiskit/synthesis/__init__.py +25 -0
  259. qiskit/synthesis/arithmetic/__init__.py +16 -0
  260. qiskit/synthesis/arithmetic/adders/__init__.py +17 -0
  261. qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +154 -0
  262. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +103 -0
  263. qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +161 -0
  264. qiskit/synthesis/arithmetic/multipliers/__init__.py +16 -0
  265. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +102 -0
  266. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +99 -0
  267. qiskit/synthesis/clifford/clifford_decompose_bm.py +1 -2
  268. qiskit/synthesis/clifford/clifford_decompose_greedy.py +3 -2
  269. qiskit/synthesis/clifford/clifford_decompose_layers.py +2 -1
  270. qiskit/synthesis/evolution/__init__.py +1 -0
  271. qiskit/synthesis/evolution/lie_trotter.py +16 -42
  272. qiskit/synthesis/evolution/pauli_network.py +80 -0
  273. qiskit/synthesis/evolution/product_formula.py +165 -238
  274. qiskit/synthesis/evolution/qdrift.py +36 -29
  275. qiskit/synthesis/evolution/suzuki_trotter.py +87 -27
  276. qiskit/synthesis/multi_controlled/__init__.py +1 -0
  277. qiskit/synthesis/multi_controlled/mcmt_vchain.py +52 -0
  278. qiskit/synthesis/qft/qft_decompose_full.py +19 -1
  279. qiskit/synthesis/qft/qft_decompose_lnn.py +2 -1
  280. qiskit/synthesis/stabilizer/stabilizer_decompose.py +2 -1
  281. qiskit/synthesis/two_qubit/two_qubit_decompose.py +4 -63
  282. qiskit/synthesis/unitary/qsd.py +5 -5
  283. qiskit/transpiler/__init__.py +21 -14
  284. qiskit/transpiler/basepasses.py +1 -1
  285. qiskit/transpiler/passes/__init__.py +2 -0
  286. qiskit/transpiler/passes/basis/basis_translator.py +9 -565
  287. qiskit/transpiler/passes/basis/decompose.py +45 -12
  288. qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -1
  289. qiskit/transpiler/passes/basis/unroll_custom_definitions.py +1 -1
  290. qiskit/transpiler/passes/calibration/pulse_gate.py +4 -2
  291. qiskit/transpiler/passes/calibration/rx_builder.py +11 -7
  292. qiskit/transpiler/passes/calibration/rzx_builder.py +46 -30
  293. qiskit/transpiler/passes/layout/disjoint_utils.py +15 -13
  294. qiskit/transpiler/passes/layout/sabre_layout.py +7 -2
  295. qiskit/transpiler/passes/layout/sabre_pre_layout.py +5 -0
  296. qiskit/transpiler/passes/optimization/__init__.py +1 -0
  297. qiskit/transpiler/passes/optimization/collect_cliffords.py +19 -3
  298. qiskit/transpiler/passes/optimization/collect_linear_functions.py +1 -1
  299. qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +2 -2
  300. qiskit/transpiler/passes/optimization/commutative_inverse_cancellation.py +1 -1
  301. qiskit/transpiler/passes/optimization/consolidate_blocks.py +48 -131
  302. qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +4 -2
  303. qiskit/transpiler/passes/optimization/elide_permutations.py +9 -32
  304. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +5 -11
  305. qiskit/transpiler/passes/optimization/optimize_1q_gates.py +1 -1
  306. qiskit/transpiler/passes/optimization/optimize_swap_before_measure.py +1 -1
  307. qiskit/transpiler/passes/optimization/remove_identity_equiv.py +69 -0
  308. qiskit/transpiler/passes/optimization/template_matching/backward_match.py +5 -5
  309. qiskit/transpiler/passes/optimization/template_matching/forward_match.py +4 -4
  310. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +2 -2
  311. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +1 -1
  312. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/swap_strategy.py +1 -1
  313. qiskit/transpiler/passes/routing/sabre_swap.py +7 -3
  314. qiskit/transpiler/passes/routing/star_prerouting.py +2 -2
  315. qiskit/transpiler/passes/scheduling/alap.py +1 -1
  316. qiskit/transpiler/passes/scheduling/alignments/align_measures.py +2 -2
  317. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -1
  318. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +2 -0
  319. qiskit/transpiler/passes/scheduling/alignments/reschedule.py +2 -2
  320. qiskit/transpiler/passes/scheduling/asap.py +1 -1
  321. qiskit/transpiler/passes/scheduling/base_scheduler.py +14 -12
  322. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +9 -4
  323. qiskit/transpiler/passes/scheduling/padding/base_padding.py +1 -1
  324. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +16 -5
  325. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +4 -1
  326. qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +6 -2
  327. qiskit/transpiler/passes/scheduling/time_unit_conversion.py +9 -4
  328. qiskit/transpiler/passes/synthesis/high_level_synthesis.py +262 -99
  329. qiskit/transpiler/passes/synthesis/hls_plugins.py +637 -7
  330. qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +3 -3
  331. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +55 -34
  332. qiskit/transpiler/passes/utils/barrier_before_final_measurements.py +2 -56
  333. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +5 -0
  334. qiskit/transpiler/passes/utils/gate_direction.py +12 -275
  335. qiskit/transpiler/passes/utils/gates_basis.py +7 -30
  336. qiskit/transpiler/passes/utils/merge_adjacent_barriers.py +2 -1
  337. qiskit/transpiler/passmanager_config.py +22 -4
  338. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +40 -14
  339. qiskit/transpiler/preset_passmanagers/common.py +5 -3
  340. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +125 -42
  341. qiskit/transpiler/preset_passmanagers/plugin.py +1 -1
  342. qiskit/transpiler/target.py +74 -16
  343. qiskit/utils/deprecate_pulse.py +119 -0
  344. qiskit/visualization/circuit/_utils.py +2 -2
  345. qiskit/visualization/circuit/circuit_visualization.py +3 -2
  346. qiskit/visualization/circuit/matplotlib.py +1 -1
  347. qiskit/visualization/dag_visualization.py +1 -1
  348. qiskit/visualization/pass_manager_visualization.py +3 -14
  349. qiskit/visualization/pulse_v2/interface.py +3 -1
  350. qiskit/visualization/timeline/core.py +25 -2
  351. qiskit/visualization/timeline/interface.py +12 -0
  352. {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/METADATA +9 -8
  353. {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/RECORD +357 -346
  354. {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/WHEEL +1 -1
  355. {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/entry_points.txt +19 -0
  356. qiskit/circuit/library/data_preparation/zz_feature_map.py +0 -118
  357. qiskit/synthesis/two_qubit/weyl.py +0 -97
  358. qiskit/transpiler/passes/synthesis/qubit_tracker.py +0 -132
  359. {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/LICENSE.txt +0 -0
  360. {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/top_level.txt +0 -0
@@ -12,11 +12,14 @@
12
12
 
13
13
  """Quantum Volume model circuit."""
14
14
 
15
+ from __future__ import annotations
16
+
15
17
  from typing import Optional, Union
16
18
 
17
19
  import numpy as np
18
20
  from qiskit.circuit import QuantumCircuit, CircuitInstruction
19
21
  from qiskit.circuit.library.generalized_gates import PermutationGate, UnitaryGate
22
+ from qiskit._accelerate.circuit_library import quantum_volume as qv_rs
20
23
 
21
24
 
22
25
  class QuantumVolume(QuantumCircuit):
@@ -80,36 +83,85 @@ class QuantumVolume(QuantumCircuit):
80
83
  depth = depth or num_qubits # how many layers of SU(4)
81
84
  width = num_qubits // 2 # how many SU(4)s fit in each layer
82
85
  rng = seed if isinstance(seed, np.random.Generator) else np.random.default_rng(seed)
83
- if seed is None:
86
+ seed_name = seed
87
+ if seed_name is None:
84
88
  # Get the internal entropy used to seed the default RNG, if no seed was given. This
85
89
  # stays in the output name, so effectively stores a way of regenerating the circuit.
86
90
  # This is just best-effort only, for backwards compatibility, and isn't critical (if
87
91
  # someone needs full reproducibility, they should be manually controlling the seeding).
88
- seed = getattr(getattr(rng.bit_generator, "seed_seq", None), "entropy", None)
92
+ seed_name = getattr(getattr(rng.bit_generator, "seed_seq", None), "entropy", None)
89
93
 
90
94
  super().__init__(
91
- num_qubits, name="quantum_volume_" + str([num_qubits, depth, seed]).replace(" ", "")
95
+ num_qubits,
96
+ name="quantum_volume_" + str([num_qubits, depth, seed_name]).replace(" ", ""),
92
97
  )
93
- base = self if flatten else QuantumCircuit(num_qubits, name=self.name)
94
-
95
- # For each layer, generate a permutation of qubits
96
- # Then generate and apply a Haar-random SU(4) to each pair
97
- unitaries = scipy.stats.unitary_group.rvs(4, depth * width, rng).reshape(depth, width, 4, 4)
98
- qubits = tuple(base.qubits)
99
- for row in unitaries:
100
- perm = rng.permutation(num_qubits)
101
- if classical_permutation:
102
- for w, unitary in enumerate(row):
103
- gate = UnitaryGate(unitary, check_input=False, num_qubits=2)
104
- qubit = 2 * w
105
- base._append(
106
- CircuitInstruction(gate, (qubits[perm[qubit]], qubits[perm[qubit + 1]]))
107
- )
98
+ if classical_permutation:
99
+ if seed is not None:
100
+ max_value = np.iinfo(np.int64).max
101
+ seed = rng.integers(max_value, dtype=np.int64)
102
+ qv_circ = quantum_volume(num_qubits, depth, seed)
103
+ qv_circ.name = self.name
104
+ if flatten:
105
+ self.compose(qv_circ, inplace=True)
108
106
  else:
107
+ self._append(CircuitInstruction(qv_circ.to_instruction(), tuple(self.qubits)))
108
+ else:
109
+ if seed is None:
110
+ seed = seed_name
111
+
112
+ base = self if flatten else QuantumCircuit(num_qubits, name=self.name)
113
+
114
+ # For each layer, generate a permutation of qubits
115
+ # Then generate and apply a Haar-random SU(4) to each pair
116
+ unitaries = scipy.stats.unitary_group.rvs(4, depth * width, rng).reshape(
117
+ depth, width, 4, 4
118
+ )
119
+ qubits = tuple(base.qubits)
120
+ for row in unitaries:
121
+ perm = rng.permutation(num_qubits)
109
122
  base._append(CircuitInstruction(PermutationGate(perm), qubits))
110
123
  for w, unitary in enumerate(row):
111
124
  gate = UnitaryGate(unitary, check_input=False, num_qubits=2)
112
125
  qubit = 2 * w
113
126
  base._append(CircuitInstruction(gate, qubits[qubit : qubit + 2]))
114
- if not flatten:
115
- self._append(CircuitInstruction(base.to_instruction(), tuple(self.qubits)))
127
+ if not flatten:
128
+ self._append(CircuitInstruction(base.to_instruction(), tuple(self.qubits)))
129
+
130
+
131
+ def quantum_volume(
132
+ num_qubits: int,
133
+ depth: int | None = None,
134
+ seed: int | np.random.Generator | None = None,
135
+ ) -> QuantumCircuit:
136
+ """A quantum volume model circuit.
137
+
138
+ The model circuits are random instances of circuits used to measure
139
+ the Quantum Volume metric, as introduced in [1].
140
+
141
+ The model circuits consist of layers of Haar random
142
+ elements of SU(4) applied between corresponding pairs
143
+ of qubits in a random bipartition.
144
+
145
+ This function is multithreaded and will launch a thread pool with threads equal to the number
146
+ of CPUs by default. You can tune the number of threads with the ``RAYON_NUM_THREADS``
147
+ environment variable. For example, setting ``RAYON_NUM_THREADS=4`` would limit the thread pool
148
+ to 4 threads.
149
+
150
+ **Reference Circuit:**
151
+
152
+ .. plot::
153
+
154
+ from qiskit.circuit.library import quantum_volume
155
+ circuit = quantum_volume(5, 6, seed=10)
156
+ circuit.draw('mpl')
157
+
158
+ **References:**
159
+
160
+ [1] A. Cross et al. Validating quantum computers using
161
+ randomized model circuits, Phys. Rev. A 100, 032328 (2019).
162
+ `arXiv:1811.12926 <https://arxiv.org/abs/1811.12926>`__
163
+ """
164
+ if isinstance(seed, np.random.Generator):
165
+ seed = seed.integers(0, dtype=np.uint64)
166
+ depth = depth or num_qubits
167
+ return QuantumCircuit._from_circuit_data(qv_rs(num_qubits, depth, seed))
@@ -48,7 +48,26 @@ from .multi_control_rotation_gates import mcrx, mcry, mcrz
48
48
 
49
49
  def get_standard_gate_name_mapping():
50
50
  """Return a dictionary mapping the name of standard gates and instructions to an object for
51
- that name."""
51
+ that name.
52
+
53
+ Examples:
54
+
55
+ .. code-block:: python
56
+
57
+ from qiskit.circuit.library import get_standard_gate_name_mapping
58
+
59
+ gate_name_map = get_standard_gate_name_mapping()
60
+ cx_object = gate_name_map["cx"]
61
+
62
+ print(cx_object)
63
+ print(type(cx_object))
64
+
65
+ .. code-block:: text
66
+
67
+ Instruction(name='cx', num_qubits=2, num_clbits=0, params=[])
68
+ _SingletonCXGate
69
+ """
70
+
52
71
  from qiskit.circuit.parameter import Parameter
53
72
  from qiskit.circuit.measure import Measure
54
73
  from qiskit.circuit.delay import Delay
@@ -28,7 +28,8 @@ class DCXGate(SingletonGate):
28
28
  Can be applied to a :class:`~qiskit.circuit.QuantumCircuit`
29
29
  with the :meth:`~qiskit.circuit.QuantumCircuit.dcx` method.
30
30
 
31
- .. parsed-literal::
31
+ .. code-block:: text
32
+
32
33
  ┌───┐
33
34
  q_0: ──■──┤ X ├
34
35
  ┌─┴─┐└─┬─┘
@@ -38,7 +38,7 @@ class ECRGate(SingletonGate):
38
38
 
39
39
  **Circuit Symbol:**
40
40
 
41
- .. parsed-literal::
41
+ .. code-block:: text
42
42
 
43
43
  ┌─────────┐ ┌────────────┐┌────────┐┌─────────────┐
44
44
  q_0: ┤0 ├ q_0: ┤0 ├┤ RX(pi) ├┤0 ├
@@ -66,7 +66,7 @@ class ECRGate(SingletonGate):
66
66
  Instead, if we apply it on (q_1, q_0), the matrix will
67
67
  be :math:`Z \otimes X`:
68
68
 
69
- .. parsed-literal::
69
+ .. code-block:: text
70
70
 
71
71
  ┌─────────┐
72
72
  q_0: ┤1 ├
@@ -38,7 +38,7 @@ class HGate(SingletonGate):
38
38
 
39
39
  **Circuit symbol:**
40
40
 
41
- .. parsed-literal::
41
+ .. code-block:: text
42
42
 
43
43
  ┌───┐
44
44
  q_0: ┤ H ├
@@ -142,7 +142,7 @@ class CHGate(SingletonControlledGate):
142
142
 
143
143
  **Circuit symbol:**
144
144
 
145
- .. parsed-literal::
145
+ .. code-block:: text
146
146
 
147
147
  q_0: ──■──
148
148
  ┌─┴─┐
@@ -170,7 +170,8 @@ class CHGate(SingletonControlledGate):
170
170
  which in our case would be q_1. Thus a textbook matrix for this
171
171
  gate will be:
172
172
 
173
- .. parsed-literal::
173
+ .. code-block:: text
174
+
174
175
  ┌───┐
175
176
  q_0: ┤ H ├
176
177
  └─┬─┘
@@ -40,7 +40,8 @@ class IGate(SingletonGate):
40
40
 
41
41
  **Circuit symbol:**
42
42
 
43
- .. parsed-literal::
43
+ .. code-block:: text
44
+
44
45
  ┌───┐
45
46
  q_0: ┤ I ├
46
47
  └───┘
@@ -38,7 +38,7 @@ class iSwapGate(SingletonGate):
38
38
 
39
39
  **Circuit Symbol:**
40
40
 
41
- .. parsed-literal::
41
+ .. code-block:: text
42
42
 
43
43
  q_0: ─⨂─
44
44
 
@@ -46,7 +46,7 @@ class iSwapGate(SingletonGate):
46
46
 
47
47
  **Reference Implementation:**
48
48
 
49
- .. parsed-literal::
49
+ .. code-block:: text
50
50
 
51
51
  ┌───┐┌───┐ ┌───┐
52
52
  q_0: ┤ S ├┤ H ├──■──┤ X ├─────
@@ -33,35 +33,35 @@ class PhaseGate(Gate):
33
33
 
34
34
  **Circuit symbol:**
35
35
 
36
- .. parsed-literal::
36
+ .. code-block:: text
37
37
 
38
38
  ┌──────┐
39
- q_0: ┤ P(λ) ├
39
+ q_0: ┤ P(θ) ├
40
40
  └──────┘
41
41
 
42
42
  **Matrix Representation:**
43
43
 
44
44
  .. math::
45
45
 
46
- P(\lambda) =
46
+ P(\theta) =
47
47
  \begin{pmatrix}
48
48
  1 & 0 \\
49
- 0 & e^{i\lambda}
49
+ 0 & e^{i\theta}
50
50
  \end{pmatrix}
51
51
 
52
52
  **Examples:**
53
53
 
54
54
  .. math::
55
55
 
56
- P(\lambda = \pi) = Z
56
+ P(\theta = \pi) = Z
57
57
 
58
58
  .. math::
59
59
 
60
- P(\lambda = \pi/2) = S
60
+ P(\theta = \pi/2) = S
61
61
 
62
62
  .. math::
63
63
 
64
- P(\lambda = \pi/4) = T
64
+ P(\theta = \pi/4) = T
65
65
 
66
66
  .. seealso::
67
67
 
@@ -70,7 +70,7 @@ class PhaseGate(Gate):
70
70
 
71
71
  .. math::
72
72
 
73
- P(\lambda) = e^{i{\lambda}/2} RZ(\lambda)
73
+ P(\theta) = e^{i{\theta}/2} RZ(\theta)
74
74
 
75
75
  Reference for virtual Z gate implementation:
76
76
  `1612.00858 <https://arxiv.org/abs/1612.00858>`_
@@ -171,11 +171,11 @@ class CPhaseGate(ControlledGate):
171
171
 
172
172
  **Circuit symbol:**
173
173
 
174
- .. parsed-literal::
174
+ .. code-block:: text
175
175
 
176
176
 
177
177
  q_0: ─■──
178
- │λ
178
+ │θ
179
179
  q_1: ─■──
180
180
 
181
181
 
@@ -189,7 +189,7 @@ class CPhaseGate(ControlledGate):
189
189
  1 & 0 & 0 & 0 \\
190
190
  0 & 1 & 0 & 0 \\
191
191
  0 & 0 & 1 & 0 \\
192
- 0 & 0 & 0 & e^{i\lambda}
192
+ 0 & 0 & 0 & e^{i\theta}
193
193
  \end{pmatrix}
194
194
 
195
195
  .. seealso::
@@ -318,7 +318,7 @@ class MCPhaseGate(ControlledGate):
318
318
 
319
319
  **Circuit symbol:**
320
320
 
321
- .. parsed-literal::
321
+ .. code-block:: text
322
322
 
323
323
  q_0: ───■────
324
324
 
@@ -431,3 +431,11 @@ class MCPhaseGate(ControlledGate):
431
431
  def inverse(self, annotated: bool = False):
432
432
  r"""Return inverted MCPhase gate (:math:`MCPhase(\lambda)^{\dagger} = MCPhase(-\lambda)`)"""
433
433
  return MCPhaseGate(-self.params[0], self.num_ctrl_qubits)
434
+
435
+ def __eq__(self, other):
436
+ return (
437
+ isinstance(other, MCPhaseGate)
438
+ and self.num_ctrl_qubits == other.num_ctrl_qubits
439
+ and self.ctrl_state == other.ctrl_state
440
+ and self._compare_parameters(other)
441
+ )
@@ -31,7 +31,7 @@ class RGate(Gate):
31
31
 
32
32
  **Circuit symbol:**
33
33
 
34
- .. parsed-literal::
34
+ .. code-block:: text
35
35
 
36
36
  ┌──────┐
37
37
  q_0: ┤ R(ϴ) ├
@@ -34,7 +34,7 @@ class RXGate(Gate):
34
34
 
35
35
  **Circuit symbol:**
36
36
 
37
- .. parsed-literal::
37
+ .. code-block:: text
38
38
 
39
39
  ┌───────┐
40
40
  q_0: ┤ Rx(ϴ) ├
@@ -159,7 +159,7 @@ class CRXGate(ControlledGate):
159
159
 
160
160
  **Circuit symbol:**
161
161
 
162
- .. parsed-literal::
162
+ .. code-block:: text
163
163
 
164
164
  q_0: ────■────
165
165
  ┌───┴───┐
@@ -189,7 +189,8 @@ class CRXGate(ControlledGate):
189
189
  which in our case would be q_1. Thus a textbook matrix for this
190
190
  gate will be:
191
191
 
192
- .. parsed-literal::
192
+ .. code-block:: text
193
+
193
194
  ┌───────┐
194
195
  q_0: ┤ Rx(ϴ) ├
195
196
  └───┬───┘
@@ -33,7 +33,7 @@ class RXXGate(Gate):
33
33
 
34
34
  **Circuit Symbol:**
35
35
 
36
- .. parsed-literal::
36
+ .. code-block:: text
37
37
 
38
38
  ┌─────────┐
39
39
  q_0: ┤1 ├
@@ -63,7 +63,7 @@ class RXXGate(Gate):
63
63
 
64
64
  .. math::
65
65
 
66
- R_{XX}(\theta = \pi) = i X \otimes X
66
+ R_{XX}(\theta = \pi) = -i X \otimes X
67
67
 
68
68
  .. math::
69
69
 
@@ -33,7 +33,7 @@ class RYGate(Gate):
33
33
 
34
34
  **Circuit symbol:**
35
35
 
36
- .. parsed-literal::
36
+ .. code-block:: text
37
37
 
38
38
  ┌───────┐
39
39
  q_0: ┤ Ry(ϴ) ├
@@ -158,7 +158,7 @@ class CRYGate(ControlledGate):
158
158
 
159
159
  **Circuit symbol:**
160
160
 
161
- .. parsed-literal::
161
+ .. code-block:: text
162
162
 
163
163
  q_0: ────■────
164
164
  ┌───┴───┐
@@ -188,7 +188,8 @@ class CRYGate(ControlledGate):
188
188
  which in our case would be q_1. Thus a textbook matrix for this
189
189
  gate will be:
190
190
 
191
- .. parsed-literal::
191
+ .. code-block:: text
192
+
192
193
  ┌───────┐
193
194
  q_0: ┤ Ry(ϴ) ├
194
195
  └───┬───┘
@@ -33,7 +33,7 @@ class RYYGate(Gate):
33
33
 
34
34
  **Circuit Symbol:**
35
35
 
36
- .. parsed-literal::
36
+ .. code-block:: text
37
37
 
38
38
  ┌─────────┐
39
39
  q_0: ┤1 ├
@@ -63,7 +63,7 @@ class RYYGate(Gate):
63
63
 
64
64
  .. math::
65
65
 
66
- R_{YY}(\theta = \pi) = i Y \otimes Y
66
+ R_{YY}(\theta = \pi) = -i Y \otimes Y
67
67
 
68
68
  .. math::
69
69
 
@@ -34,7 +34,7 @@ class RZGate(Gate):
34
34
 
35
35
  **Circuit symbol:**
36
36
 
37
- .. parsed-literal::
37
+ .. code-block:: text
38
38
 
39
39
  ┌───────┐
40
40
  q_0: ┤ Rz(λ) ├
@@ -174,24 +174,24 @@ class CRZGate(ControlledGate):
174
174
 
175
175
  **Circuit symbol:**
176
176
 
177
- .. parsed-literal::
177
+ .. code-block:: text
178
178
 
179
179
  q_0: ────■────
180
180
  ┌───┴───┐
181
- q_1: ┤ Rz(λ) ├
181
+ q_1: ┤ Rz(θ) ├
182
182
  └───────┘
183
183
 
184
184
  **Matrix representation:**
185
185
 
186
186
  .. math::
187
187
 
188
- CRZ(\lambda)\ q_0, q_1 =
189
- I \otimes |0\rangle\langle 0| + RZ(\lambda) \otimes |1\rangle\langle 1| =
188
+ CRZ(\theta)\ q_0, q_1 =
189
+ I \otimes |0\rangle\langle 0| + RZ(\theta) \otimes |1\rangle\langle 1| =
190
190
  \begin{pmatrix}
191
191
  1 & 0 & 0 & 0 \\
192
192
  0 & e^{-i\frac{\lambda}{2}} & 0 & 0 \\
193
193
  0 & 0 & 1 & 0 \\
194
- 0 & 0 & 0 & e^{i\frac{\lambda}{2}}
194
+ 0 & 0 & 0 & e^{i\frac{\theta}{2}}
195
195
  \end{pmatrix}
196
196
 
197
197
  .. note::
@@ -202,21 +202,22 @@ class CRZGate(ControlledGate):
202
202
  which in our case would be q_1. Thus a textbook matrix for this
203
203
  gate will be:
204
204
 
205
- .. parsed-literal::
205
+ .. code-block:: text
206
+
206
207
  ┌───────┐
207
- q_0: ┤ Rz(λ) ├
208
+ q_0: ┤ Rz(θ) ├
208
209
  └───┬───┘
209
210
  q_1: ────■────
210
211
 
211
212
  .. math::
212
213
 
213
- CRZ(\lambda)\ q_1, q_0 =
214
- |0\rangle\langle 0| \otimes I + |1\rangle\langle 1| \otimes RZ(\lambda) =
214
+ CRZ(\theta)\ q_1, q_0 =
215
+ |0\rangle\langle 0| \otimes I + |1\rangle\langle 1| \otimes RZ(\theta) =
215
216
  \begin{pmatrix}
216
217
  1 & 0 & 0 & 0 \\
217
218
  0 & 1 & 0 & 0 \\
218
- 0 & 0 & e^{-i\frac{\lambda}{2}} & 0 \\
219
- 0 & 0 & 0 & e^{i\frac{\lambda}{2}}
219
+ 0 & 0 & e^{-i\frac{\theta}{2}} & 0 \\
220
+ 0 & 0 & 0 & e^{i\frac{\theta}{2}}
220
221
  \end{pmatrix}
221
222
 
222
223
  .. seealso::
@@ -35,7 +35,7 @@ class RZXGate(Gate):
35
35
 
36
36
  **Circuit Symbol:**
37
37
 
38
- .. parsed-literal::
38
+ .. code-block:: text
39
39
 
40
40
  ┌─────────┐
41
41
  q_0: ┤0 ├
@@ -65,7 +65,7 @@ class RZXGate(Gate):
65
65
  Instead, if we apply it on (q_1, q_0), the matrix will
66
66
  be :math:`Z \otimes X`:
67
67
 
68
- .. parsed-literal::
68
+ .. code-block:: text
69
69
 
70
70
  ┌─────────┐
71
71
  q_0: ┤1 ├
@@ -100,19 +100,19 @@ class RZXGate(Gate):
100
100
 
101
101
  .. math::
102
102
 
103
- R_{ZX}(\theta = 0) = I
103
+ R_{ZX}(\theta = 0)\ q_0, q_1 = I
104
104
 
105
105
  .. math::
106
106
 
107
- R_{ZX}(\theta = 2\pi) = -I
107
+ R_{ZX}(\theta = 2\pi)\ q_0, q_1 = -I
108
108
 
109
109
  .. math::
110
110
 
111
- R_{ZX}(\theta = \pi) = -i Z \otimes X
111
+ R_{ZX}(\theta = \pi)\ q_0, q_1 = -i X \otimes Z
112
112
 
113
113
  .. math::
114
114
 
115
- RZX(\theta = \frac{\pi}{2}) = \frac{1}{\sqrt{2}}
115
+ R_{ZX}(\theta = \frac{\pi}{2})\ q_0, q_1 = \frac{1}{\sqrt{2}}
116
116
  \begin{pmatrix}
117
117
  1 & 0 & -i & 0 \\
118
118
  0 & 1 & 0 & i \\
@@ -32,7 +32,7 @@ class RZZGate(Gate):
32
32
 
33
33
  **Circuit Symbol:**
34
34
 
35
- .. parsed-literal::
35
+ .. code-block:: text
36
36
 
37
37
  q_0: ───■────
38
38
  │zz(θ)
@@ -51,7 +51,7 @@ class SGate(SingletonGate):
51
51
 
52
52
  **Circuit symbol:**
53
53
 
54
- .. parsed-literal::
54
+ .. code-block:: text
55
55
 
56
56
  ┌───┐
57
57
  q_0: ┤ S ├
@@ -163,7 +163,7 @@ class SdgGate(SingletonGate):
163
163
 
164
164
  **Circuit symbol:**
165
165
 
166
- .. parsed-literal::
166
+ .. code-block:: text
167
167
 
168
168
  ┌─────┐
169
169
  q_0: ┤ Sdg ├
@@ -262,7 +262,7 @@ class CSGate(SingletonControlledGate):
262
262
 
263
263
  **Circuit symbol:**
264
264
 
265
- .. parsed-literal::
265
+ .. code-block:: text
266
266
 
267
267
  q_0: ──■──
268
268
  ┌─┴─┐
@@ -350,7 +350,7 @@ class CSdgGate(SingletonControlledGate):
350
350
 
351
351
  **Circuit symbol:**
352
352
 
353
- .. parsed-literal::
353
+ .. code-block:: text
354
354
 
355
355
  q_0: ───■───
356
356
  ┌──┴──┐
@@ -36,7 +36,7 @@ class SwapGate(SingletonGate):
36
36
 
37
37
  **Circuit symbol:**
38
38
 
39
- .. parsed-literal::
39
+ .. code-block:: text
40
40
 
41
41
  q_0: ─X─
42
42
 
@@ -150,7 +150,7 @@ class CSwapGate(SingletonControlledGate):
150
150
 
151
151
  **Circuit symbol:**
152
152
 
153
- .. parsed-literal::
153
+ .. code-block:: text
154
154
 
155
155
  q_0: ─■─
156
156
 
@@ -185,7 +185,7 @@ class CSwapGate(SingletonControlledGate):
185
185
  which in our case would be q_2. Thus a textbook matrix for this
186
186
  gate will be:
187
187
 
188
- .. parsed-literal::
188
+ .. code-block:: text
189
189
 
190
190
  q_0: ─X─
191
191
 
@@ -44,7 +44,7 @@ class SXGate(SingletonGate):
44
44
 
45
45
  **Circuit symbol:**
46
46
 
47
- .. parsed-literal::
47
+ .. code-block:: text
48
48
 
49
49
  ┌────┐
50
50
  q_0: ┤ √X ├
@@ -220,7 +220,7 @@ class CSXGate(SingletonControlledGate):
220
220
 
221
221
  **Circuit symbol:**
222
222
 
223
- .. parsed-literal::
223
+ .. code-block:: text
224
224
 
225
225
  q_0: ──■──
226
226
  ┌─┴──┐
@@ -249,7 +249,8 @@ class CSXGate(SingletonControlledGate):
249
249
  which in our case would be `q_1`. Thus a textbook matrix for this
250
250
  gate will be:
251
251
 
252
- .. parsed-literal::
252
+ .. code-block:: text
253
+
253
254
  ┌────┐
254
255
  q_0: ┤ √X ├
255
256
  └─┬──┘
@@ -47,7 +47,7 @@ class TGate(SingletonGate):
47
47
 
48
48
  **Circuit symbol:**
49
49
 
50
- .. parsed-literal::
50
+ .. code-block:: text
51
51
 
52
52
  ┌───┐
53
53
  q_0: ┤ T ├
@@ -124,7 +124,7 @@ class TdgGate(SingletonGate):
124
124
 
125
125
  **Circuit symbol:**
126
126
 
127
- .. parsed-literal::
127
+ .. code-block:: text
128
128
 
129
129
  ┌─────┐
130
130
  q_0: ┤ Tdg ├