qiskit 1.3.0__cp39-abi3-win32.whl → 1.3.0b1__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 (361) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +1 -20
  3. qiskit/_accelerate.pyd +0 -0
  4. qiskit/assembler/assemble_schedules.py +0 -2
  5. qiskit/circuit/__init__.py +1 -44
  6. qiskit/circuit/_standard_gates_commutations.py +0 -585
  7. qiskit/circuit/barrier.py +0 -2
  8. qiskit/circuit/controlflow/builder.py +3 -3
  9. qiskit/circuit/controlflow/if_else.py +5 -13
  10. qiskit/circuit/controlflow/while_loop.py +2 -10
  11. qiskit/circuit/delay.py +3 -20
  12. qiskit/circuit/equivalence.py +214 -13
  13. qiskit/circuit/gate.py +1 -3
  14. qiskit/circuit/instruction.py +11 -32
  15. qiskit/circuit/instructionset.py +0 -2
  16. qiskit/circuit/library/__init__.py +14 -110
  17. qiskit/circuit/library/arithmetic/__init__.py +2 -9
  18. qiskit/circuit/library/arithmetic/adders/__init__.py +0 -1
  19. qiskit/circuit/library/arithmetic/adders/adder.py +2 -154
  20. qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +56 -20
  21. qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +1 -14
  22. qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +91 -21
  23. qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +1 -1
  24. qiskit/circuit/library/arithmetic/multipliers/__init__.py +0 -1
  25. qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -8
  26. qiskit/circuit/library/arithmetic/multipliers/multiplier.py +3 -94
  27. qiskit/circuit/library/arithmetic/multipliers/rg_qft_multiplier.py +1 -8
  28. qiskit/circuit/library/arithmetic/weighted_adder.py +1 -1
  29. qiskit/circuit/library/basis_change/qft.py +38 -20
  30. qiskit/circuit/library/blueprintcircuit.py +0 -64
  31. qiskit/circuit/library/boolean_logic/__init__.py +4 -4
  32. qiskit/circuit/library/boolean_logic/inner_product.py +4 -81
  33. qiskit/circuit/library/boolean_logic/quantum_and.py +4 -107
  34. qiskit/circuit/library/boolean_logic/quantum_or.py +3 -107
  35. qiskit/circuit/library/boolean_logic/quantum_xor.py +3 -97
  36. qiskit/circuit/library/data_preparation/__init__.py +3 -6
  37. qiskit/circuit/library/data_preparation/pauli_feature_map.py +29 -342
  38. qiskit/circuit/library/data_preparation/{_z_feature_map.py → z_feature_map.py} +34 -45
  39. qiskit/circuit/library/data_preparation/zz_feature_map.py +118 -0
  40. qiskit/circuit/library/fourier_checking.py +11 -72
  41. qiskit/circuit/library/generalized_gates/__init__.py +1 -1
  42. qiskit/circuit/library/generalized_gates/diagonal.py +51 -45
  43. qiskit/circuit/library/generalized_gates/gms.py +14 -67
  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 +6 -12
  47. qiskit/circuit/library/generalized_gates/mcmt.py +107 -167
  48. qiskit/circuit/library/generalized_gates/permutation.py +6 -8
  49. qiskit/circuit/library/generalized_gates/rv.py +9 -8
  50. qiskit/circuit/library/graph_state.py +10 -93
  51. qiskit/circuit/library/grover_operator.py +2 -270
  52. qiskit/circuit/library/hidden_linear_function.py +20 -83
  53. qiskit/circuit/library/iqp.py +20 -99
  54. qiskit/circuit/library/n_local/__init__.py +7 -19
  55. qiskit/circuit/library/n_local/efficient_su2.py +5 -118
  56. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +0 -259
  57. qiskit/circuit/library/n_local/excitation_preserving.py +6 -130
  58. qiskit/circuit/library/n_local/n_local.py +5 -406
  59. qiskit/circuit/library/n_local/pauli_two_design.py +4 -106
  60. qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -80
  61. qiskit/circuit/library/n_local/real_amplitudes.py +7 -127
  62. qiskit/circuit/library/n_local/two_local.py +7 -14
  63. qiskit/circuit/library/overlap.py +26 -91
  64. qiskit/circuit/library/pauli_evolution.py +15 -17
  65. qiskit/circuit/library/phase_estimation.py +4 -80
  66. qiskit/circuit/library/quantum_volume.py +20 -72
  67. qiskit/circuit/library/standard_gates/__init__.py +1 -20
  68. qiskit/circuit/library/standard_gates/dcx.py +1 -2
  69. qiskit/circuit/library/standard_gates/ecr.py +2 -2
  70. qiskit/circuit/library/standard_gates/h.py +3 -4
  71. qiskit/circuit/library/standard_gates/i.py +1 -2
  72. qiskit/circuit/library/standard_gates/iswap.py +2 -2
  73. qiskit/circuit/library/standard_gates/p.py +12 -20
  74. qiskit/circuit/library/standard_gates/r.py +1 -1
  75. qiskit/circuit/library/standard_gates/rx.py +3 -4
  76. qiskit/circuit/library/standard_gates/rxx.py +2 -2
  77. qiskit/circuit/library/standard_gates/ry.py +3 -4
  78. qiskit/circuit/library/standard_gates/ryy.py +2 -2
  79. qiskit/circuit/library/standard_gates/rz.py +12 -13
  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 +3 -4
  85. qiskit/circuit/library/standard_gates/t.py +2 -2
  86. qiskit/circuit/library/standard_gates/u.py +3 -11
  87. qiskit/circuit/library/standard_gates/u1.py +15 -65
  88. qiskit/circuit/library/standard_gates/u2.py +1 -4
  89. qiskit/circuit/library/standard_gates/u3.py +3 -31
  90. qiskit/circuit/library/standard_gates/x.py +5 -7
  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 +3 -4
  94. qiskit/circuit/library/standard_gates/z.py +3 -3
  95. qiskit/circuit/library/templates/clifford/clifford_2_1.py +8 -9
  96. qiskit/circuit/library/templates/clifford/clifford_2_2.py +9 -10
  97. qiskit/circuit/library/templates/clifford/clifford_2_3.py +7 -9
  98. qiskit/circuit/library/templates/clifford/clifford_2_4.py +8 -9
  99. qiskit/circuit/library/templates/clifford/clifford_3_1.py +8 -9
  100. qiskit/circuit/library/templates/clifford/clifford_4_1.py +9 -10
  101. qiskit/circuit/library/templates/clifford/clifford_4_2.py +9 -10
  102. qiskit/circuit/library/templates/clifford/clifford_4_3.py +9 -10
  103. qiskit/circuit/library/templates/clifford/clifford_4_4.py +9 -10
  104. qiskit/circuit/library/templates/clifford/clifford_5_1.py +9 -10
  105. qiskit/circuit/library/templates/clifford/clifford_6_1.py +9 -10
  106. qiskit/circuit/library/templates/clifford/clifford_6_2.py +9 -10
  107. qiskit/circuit/library/templates/clifford/clifford_6_3.py +9 -10
  108. qiskit/circuit/library/templates/clifford/clifford_6_4.py +8 -9
  109. qiskit/circuit/library/templates/clifford/clifford_6_5.py +9 -10
  110. qiskit/circuit/library/templates/clifford/clifford_8_1.py +9 -10
  111. qiskit/circuit/library/templates/clifford/clifford_8_2.py +9 -10
  112. qiskit/circuit/library/templates/clifford/clifford_8_3.py +9 -10
  113. qiskit/circuit/library/templates/nct/template_nct_2a_1.py +7 -9
  114. qiskit/circuit/library/templates/nct/template_nct_2a_2.py +8 -10
  115. qiskit/circuit/library/templates/nct/template_nct_2a_3.py +10 -12
  116. qiskit/circuit/library/templates/nct/template_nct_4a_1.py +14 -16
  117. qiskit/circuit/library/templates/nct/template_nct_4a_2.py +12 -14
  118. qiskit/circuit/library/templates/nct/template_nct_4a_3.py +10 -12
  119. qiskit/circuit/library/templates/nct/template_nct_4b_1.py +12 -14
  120. qiskit/circuit/library/templates/nct/template_nct_4b_2.py +10 -12
  121. qiskit/circuit/library/templates/nct/template_nct_5a_1.py +10 -12
  122. qiskit/circuit/library/templates/nct/template_nct_5a_2.py +10 -12
  123. qiskit/circuit/library/templates/nct/template_nct_5a_3.py +10 -12
  124. qiskit/circuit/library/templates/nct/template_nct_5a_4.py +9 -11
  125. qiskit/circuit/library/templates/nct/template_nct_6a_1.py +9 -11
  126. qiskit/circuit/library/templates/nct/template_nct_6a_2.py +10 -12
  127. qiskit/circuit/library/templates/nct/template_nct_6a_3.py +10 -12
  128. qiskit/circuit/library/templates/nct/template_nct_6a_4.py +10 -12
  129. qiskit/circuit/library/templates/nct/template_nct_6b_1.py +10 -12
  130. qiskit/circuit/library/templates/nct/template_nct_6b_2.py +10 -12
  131. qiskit/circuit/library/templates/nct/template_nct_6c_1.py +10 -12
  132. qiskit/circuit/library/templates/nct/template_nct_7a_1.py +11 -13
  133. qiskit/circuit/library/templates/nct/template_nct_7b_1.py +11 -13
  134. qiskit/circuit/library/templates/nct/template_nct_7c_1.py +11 -13
  135. qiskit/circuit/library/templates/nct/template_nct_7d_1.py +11 -13
  136. qiskit/circuit/library/templates/nct/template_nct_7e_1.py +11 -13
  137. qiskit/circuit/library/templates/nct/template_nct_9a_1.py +11 -13
  138. qiskit/circuit/library/templates/nct/template_nct_9c_1.py +9 -11
  139. qiskit/circuit/library/templates/nct/template_nct_9c_10.py +10 -12
  140. qiskit/circuit/library/templates/nct/template_nct_9c_11.py +10 -12
  141. qiskit/circuit/library/templates/nct/template_nct_9c_12.py +10 -12
  142. qiskit/circuit/library/templates/nct/template_nct_9c_2.py +10 -12
  143. qiskit/circuit/library/templates/nct/template_nct_9c_3.py +10 -12
  144. qiskit/circuit/library/templates/nct/template_nct_9c_4.py +10 -12
  145. qiskit/circuit/library/templates/nct/template_nct_9c_5.py +10 -12
  146. qiskit/circuit/library/templates/nct/template_nct_9c_6.py +10 -12
  147. qiskit/circuit/library/templates/nct/template_nct_9c_7.py +10 -12
  148. qiskit/circuit/library/templates/nct/template_nct_9c_8.py +10 -12
  149. qiskit/circuit/library/templates/nct/template_nct_9c_9.py +10 -12
  150. qiskit/circuit/library/templates/nct/template_nct_9d_1.py +9 -11
  151. qiskit/circuit/library/templates/nct/template_nct_9d_10.py +10 -12
  152. qiskit/circuit/library/templates/nct/template_nct_9d_2.py +10 -12
  153. qiskit/circuit/library/templates/nct/template_nct_9d_3.py +10 -12
  154. qiskit/circuit/library/templates/nct/template_nct_9d_4.py +10 -12
  155. qiskit/circuit/library/templates/nct/template_nct_9d_5.py +10 -12
  156. qiskit/circuit/library/templates/nct/template_nct_9d_6.py +10 -12
  157. qiskit/circuit/library/templates/nct/template_nct_9d_7.py +10 -12
  158. qiskit/circuit/library/templates/nct/template_nct_9d_8.py +10 -12
  159. qiskit/circuit/library/templates/nct/template_nct_9d_9.py +10 -12
  160. qiskit/circuit/library/templates/rzx/rzx_cy.py +10 -11
  161. qiskit/circuit/library/templates/rzx/rzx_xz.py +15 -16
  162. qiskit/circuit/library/templates/rzx/rzx_yz.py +10 -12
  163. qiskit/circuit/library/templates/rzx/rzx_zz1.py +20 -22
  164. qiskit/circuit/library/templates/rzx/rzx_zz2.py +15 -16
  165. qiskit/circuit/library/templates/rzx/rzx_zz3.py +15 -17
  166. qiskit/circuit/parameter.py +0 -4
  167. qiskit/circuit/parameterexpression.py +34 -167
  168. qiskit/circuit/quantumcircuit.py +126 -162
  169. qiskit/circuit/singleton.py +0 -2
  170. qiskit/circuit/store.py +0 -2
  171. qiskit/compiler/assembler.py +4 -17
  172. qiskit/compiler/scheduler.py +0 -2
  173. qiskit/compiler/sequencer.py +0 -2
  174. qiskit/compiler/transpiler.py +26 -81
  175. qiskit/converters/circuit_to_dag.py +2 -2
  176. qiskit/converters/circuit_to_dagdependency.py +1 -1
  177. qiskit/converters/circuit_to_dagdependency_v2.py +1 -1
  178. qiskit/converters/circuit_to_instruction.py +1 -1
  179. qiskit/converters/dag_to_circuit.py +5 -7
  180. qiskit/converters/dag_to_dagdependency.py +1 -1
  181. qiskit/converters/dag_to_dagdependency_v2.py +1 -1
  182. qiskit/converters/dagdependency_to_circuit.py +1 -5
  183. qiskit/converters/dagdependency_to_dag.py +1 -6
  184. qiskit/dagcircuit/collect_blocks.py +3 -3
  185. qiskit/dagcircuit/dagdependency.py +5 -18
  186. qiskit/dagcircuit/dagdependency_v2.py +1 -1
  187. qiskit/dagcircuit/dagnode.py +2 -2
  188. qiskit/passmanager/__init__.py +2 -2
  189. qiskit/primitives/backend_estimator.py +2 -5
  190. qiskit/primitives/backend_sampler_v2.py +18 -61
  191. qiskit/primitives/base/base_estimator.py +2 -2
  192. qiskit/primitives/containers/data_bin.py +1 -9
  193. qiskit/primitives/statevector_sampler.py +1 -1
  194. qiskit/primitives/utils.py +1 -1
  195. qiskit/providers/__init__.py +3 -3
  196. qiskit/providers/backend.py +1 -12
  197. qiskit/providers/backend_compat.py +3 -23
  198. qiskit/providers/basic_provider/basic_simulator.py +2 -12
  199. qiskit/providers/fake_provider/fake_pulse_backend.py +1 -6
  200. qiskit/providers/fake_provider/generic_backend_v2.py +30 -46
  201. qiskit/providers/models/pulsedefaults.py +0 -2
  202. qiskit/pulse/builder.py +18 -59
  203. qiskit/pulse/calibration_entries.py +1 -4
  204. qiskit/pulse/channels.py +0 -2
  205. qiskit/pulse/exceptions.py +0 -2
  206. qiskit/pulse/instruction_schedule_map.py +6 -21
  207. qiskit/pulse/instructions/acquire.py +0 -2
  208. qiskit/pulse/instructions/delay.py +0 -2
  209. qiskit/pulse/instructions/directives.py +0 -8
  210. qiskit/pulse/instructions/frequency.py +0 -3
  211. qiskit/pulse/instructions/instruction.py +0 -2
  212. qiskit/pulse/instructions/phase.py +0 -3
  213. qiskit/pulse/instructions/play.py +0 -2
  214. qiskit/pulse/instructions/reference.py +0 -2
  215. qiskit/pulse/instructions/snapshot.py +0 -2
  216. qiskit/pulse/library/pulse.py +0 -2
  217. qiskit/pulse/library/symbolic_pulses.py +0 -28
  218. qiskit/pulse/library/waveform.py +0 -2
  219. qiskit/pulse/macros.py +1 -1
  220. qiskit/pulse/schedule.py +13 -12
  221. qiskit/pulse/transforms/alignments.py +3 -5
  222. qiskit/pulse/transforms/dag.py +0 -7
  223. qiskit/qasm2/export.py +3 -5
  224. qiskit/qasm2/parse.py +2 -46
  225. qiskit/qasm3/__init__.py +0 -1
  226. qiskit/qasm3/ast.py +15 -123
  227. qiskit/qasm3/exporter.py +77 -103
  228. qiskit/qobj/converters/pulse_instruction.py +4 -6
  229. qiskit/qpy/__init__.py +0 -181
  230. qiskit/qpy/binary_io/circuits.py +5 -20
  231. qiskit/qpy/binary_io/schedules.py +4 -3
  232. qiskit/qpy/binary_io/value.py +13 -310
  233. qiskit/qpy/common.py +2 -46
  234. qiskit/qpy/formats.py +0 -7
  235. qiskit/qpy/interface.py +4 -40
  236. qiskit/quantum_info/__init__.py +0 -4
  237. qiskit/quantum_info/operators/channel/transformations.py +21 -28
  238. qiskit/quantum_info/operators/dihedral/dihedral.py +1 -1
  239. qiskit/quantum_info/operators/operator.py +8 -54
  240. qiskit/quantum_info/operators/symplectic/base_pauli.py +19 -11
  241. qiskit/quantum_info/operators/symplectic/clifford.py +1 -1
  242. qiskit/quantum_info/operators/symplectic/clifford_circuits.py +1 -1
  243. qiskit/quantum_info/operators/symplectic/pauli.py +0 -2
  244. qiskit/quantum_info/operators/symplectic/pauli_list.py +4 -4
  245. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +2 -23
  246. qiskit/quantum_info/states/densitymatrix.py +5 -5
  247. qiskit/quantum_info/states/stabilizerstate.py +1 -1
  248. qiskit/quantum_info/states/statevector.py +6 -6
  249. qiskit/result/mitigation/base_readout_mitigator.py +1 -1
  250. qiskit/result/mitigation/correlated_readout_mitigator.py +1 -9
  251. qiskit/result/mitigation/local_readout_mitigator.py +1 -9
  252. qiskit/result/mitigation/utils.py +0 -57
  253. qiskit/scheduler/config.py +0 -2
  254. qiskit/scheduler/methods/basic.py +0 -3
  255. qiskit/scheduler/schedule_circuit.py +0 -2
  256. qiskit/scheduler/sequence.py +0 -2
  257. qiskit/synthesis/__init__.py +0 -25
  258. qiskit/synthesis/clifford/clifford_decompose_bm.py +2 -1
  259. qiskit/synthesis/clifford/clifford_decompose_greedy.py +2 -3
  260. qiskit/synthesis/clifford/clifford_decompose_layers.py +1 -2
  261. qiskit/synthesis/evolution/__init__.py +0 -1
  262. qiskit/synthesis/evolution/lie_trotter.py +42 -16
  263. qiskit/synthesis/evolution/product_formula.py +238 -165
  264. qiskit/synthesis/evolution/qdrift.py +29 -36
  265. qiskit/synthesis/evolution/suzuki_trotter.py +27 -87
  266. qiskit/synthesis/multi_controlled/__init__.py +0 -1
  267. qiskit/synthesis/qft/qft_decompose_full.py +1 -19
  268. qiskit/synthesis/qft/qft_decompose_lnn.py +1 -2
  269. qiskit/synthesis/stabilizer/stabilizer_decompose.py +1 -2
  270. qiskit/synthesis/two_qubit/two_qubit_decompose.py +63 -4
  271. qiskit/synthesis/two_qubit/weyl.py +97 -0
  272. qiskit/synthesis/unitary/qsd.py +5 -5
  273. qiskit/transpiler/__init__.py +14 -21
  274. qiskit/transpiler/basepasses.py +1 -1
  275. qiskit/transpiler/passes/__init__.py +0 -2
  276. qiskit/transpiler/passes/basis/basis_translator.py +565 -9
  277. qiskit/transpiler/passes/basis/decompose.py +12 -45
  278. qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -1
  279. qiskit/transpiler/passes/basis/unroll_custom_definitions.py +1 -1
  280. qiskit/transpiler/passes/calibration/pulse_gate.py +2 -4
  281. qiskit/transpiler/passes/calibration/rx_builder.py +7 -11
  282. qiskit/transpiler/passes/calibration/rzx_builder.py +30 -46
  283. qiskit/transpiler/passes/layout/disjoint_utils.py +13 -15
  284. qiskit/transpiler/passes/layout/sabre_layout.py +2 -7
  285. qiskit/transpiler/passes/layout/sabre_pre_layout.py +0 -5
  286. qiskit/transpiler/passes/optimization/__init__.py +0 -1
  287. qiskit/transpiler/passes/optimization/collect_cliffords.py +3 -19
  288. qiskit/transpiler/passes/optimization/collect_linear_functions.py +1 -1
  289. qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +2 -2
  290. qiskit/transpiler/passes/optimization/commutative_inverse_cancellation.py +1 -1
  291. qiskit/transpiler/passes/optimization/consolidate_blocks.py +131 -48
  292. qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +2 -4
  293. qiskit/transpiler/passes/optimization/elide_permutations.py +32 -9
  294. qiskit/transpiler/passes/optimization/inverse_cancellation.py +0 -2
  295. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +11 -5
  296. qiskit/transpiler/passes/optimization/optimize_1q_gates.py +1 -1
  297. qiskit/transpiler/passes/optimization/optimize_swap_before_measure.py +1 -1
  298. qiskit/transpiler/passes/optimization/template_matching/backward_match.py +5 -5
  299. qiskit/transpiler/passes/optimization/template_matching/forward_match.py +4 -4
  300. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +2 -2
  301. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +1 -1
  302. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/swap_strategy.py +1 -1
  303. qiskit/transpiler/passes/routing/sabre_swap.py +3 -7
  304. qiskit/transpiler/passes/routing/star_prerouting.py +2 -2
  305. qiskit/transpiler/passes/scheduling/alap.py +1 -1
  306. qiskit/transpiler/passes/scheduling/alignments/align_measures.py +2 -2
  307. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -1
  308. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -2
  309. qiskit/transpiler/passes/scheduling/alignments/reschedule.py +2 -2
  310. qiskit/transpiler/passes/scheduling/asap.py +1 -1
  311. qiskit/transpiler/passes/scheduling/base_scheduler.py +12 -14
  312. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +4 -9
  313. qiskit/transpiler/passes/scheduling/padding/base_padding.py +1 -1
  314. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +5 -16
  315. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +1 -4
  316. qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +2 -6
  317. qiskit/transpiler/passes/scheduling/time_unit_conversion.py +4 -9
  318. qiskit/transpiler/passes/synthesis/high_level_synthesis.py +99 -262
  319. qiskit/transpiler/passes/synthesis/hls_plugins.py +7 -638
  320. qiskit/transpiler/passes/synthesis/qubit_tracker.py +132 -0
  321. qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +3 -3
  322. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +34 -55
  323. qiskit/transpiler/passes/utils/barrier_before_final_measurements.py +56 -2
  324. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -5
  325. qiskit/transpiler/passes/utils/gate_direction.py +275 -12
  326. qiskit/transpiler/passes/utils/gates_basis.py +30 -7
  327. qiskit/transpiler/passes/utils/merge_adjacent_barriers.py +1 -2
  328. qiskit/transpiler/passmanager_config.py +4 -22
  329. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +14 -40
  330. qiskit/transpiler/preset_passmanagers/common.py +3 -5
  331. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +42 -125
  332. qiskit/transpiler/preset_passmanagers/plugin.py +1 -1
  333. qiskit/transpiler/target.py +16 -74
  334. qiskit/visualization/circuit/_utils.py +2 -2
  335. qiskit/visualization/circuit/circuit_visualization.py +2 -3
  336. qiskit/visualization/circuit/matplotlib.py +1 -1
  337. qiskit/visualization/dag_visualization.py +1 -1
  338. qiskit/visualization/pass_manager_visualization.py +14 -3
  339. qiskit/visualization/pulse_v2/interface.py +1 -3
  340. qiskit/visualization/timeline/core.py +2 -25
  341. qiskit/visualization/timeline/interface.py +0 -12
  342. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/METADATA +19 -20
  343. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/RECORD +347 -358
  344. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/WHEEL +1 -1
  345. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/entry_points.txt +0 -19
  346. qiskit/circuit/library/data_preparation/_zz_feature_map.py +0 -150
  347. qiskit/circuit/twirling.py +0 -145
  348. qiskit/synthesis/arithmetic/__init__.py +0 -16
  349. qiskit/synthesis/arithmetic/adders/__init__.py +0 -17
  350. qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +0 -154
  351. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +0 -103
  352. qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +0 -161
  353. qiskit/synthesis/arithmetic/multipliers/__init__.py +0 -16
  354. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +0 -102
  355. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +0 -99
  356. qiskit/synthesis/evolution/pauli_network.py +0 -80
  357. qiskit/synthesis/multi_controlled/mcmt_vchain.py +0 -52
  358. qiskit/transpiler/passes/optimization/remove_identity_equiv.py +0 -69
  359. qiskit/utils/deprecate_pulse.py +0 -119
  360. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/LICENSE.txt +0 -0
  361. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  # This code is part of Qiskit.
2
2
  #
3
- # (C) Copyright IBM 2020, 2024.
3
+ # (C) Copyright IBM 2020.
4
4
  #
5
5
  # This code is licensed under the Apache License, Version 2.0. You may
6
6
  # obtain a copy of this license in the LICENSE.txt file in the root directory
@@ -11,13 +11,11 @@
11
11
  # that they have been altered from the originals.
12
12
 
13
13
 
14
- """Boolean AND circuit and gate."""
15
-
14
+ """Implementations of boolean logic quantum circuits."""
16
15
  from __future__ import annotations
17
16
 
18
- from qiskit.circuit import QuantumRegister, QuantumCircuit, AncillaRegister, Gate
17
+ from qiskit.circuit import QuantumRegister, QuantumCircuit, AncillaRegister
19
18
  from qiskit.circuit.library.standard_gates import MCXGate
20
- from qiskit.utils.deprecation import deprecate_func
21
19
 
22
20
 
23
21
  class AND(QuantumCircuit):
@@ -51,11 +49,6 @@ class AND(QuantumCircuit):
51
49
 
52
50
  """
53
51
 
54
- @deprecate_func(
55
- since="1.3",
56
- additional_msg="Use qiskit.circuit.library.AndGate instead.",
57
- pending=True,
58
- )
59
52
  def __init__(
60
53
  self,
61
54
  num_variable_qubits: int,
@@ -65,7 +58,7 @@ class AND(QuantumCircuit):
65
58
  """Create a new logical AND circuit.
66
59
 
67
60
  Args:
68
- num_variable_qubits: The qubits of which the AND is computed. The result will be written
61
+ num_variable_qubits: The qubits of which the OR is computed. The result will be written
69
62
  into an additional result qubit.
70
63
  flags: A list of +1/0/-1 marking negations or omissions of qubits.
71
64
  mcx_mode: The mode to be used to implement the multi-controlled X gate.
@@ -102,99 +95,3 @@ class AND(QuantumCircuit):
102
95
 
103
96
  super().__init__(*circuit.qregs, name="and")
104
97
  self.compose(circuit.to_gate(), qubits=self.qubits, inplace=True)
105
-
106
-
107
- class AndGate(Gate):
108
- r"""A gate representing the logical AND operation on a number of qubits.
109
-
110
- For the AND operation the state :math:`|1\rangle` is interpreted as ``True``. The result
111
- qubit is flipped, if the state of all variable qubits is ``True``. In this format, the AND
112
- operation equals a multi-controlled X gate, which is controlled on all variable qubits.
113
- Using a list of flags however, qubits can be skipped or negated. Practically, the flags
114
- allow to skip controls or to apply pre- and post-X gates to the negated qubits.
115
-
116
- The AndGate gate without special flags equals the multi-controlled-X gate:
117
-
118
- .. plot::
119
-
120
- from qiskit.circuit import QuantumCircuit
121
- from qiskit.circuit.library import AndGate
122
- from qiskit.visualization.library import _generate_circuit_library_visualization
123
- circuit = QuantumCircuit(6)
124
- circuit.append(AndGate(5), [0, 1, 2, 3, 4, 5])
125
- _generate_circuit_library_visualization(circuit)
126
-
127
- Using flags we can negate qubits or skip them. For instance, if we have 5 qubits and want to
128
- return ``True`` if the first qubit is ``False`` and the last two are ``True`` we use the flags
129
- ``[-1, 0, 0, 1, 1]``.
130
-
131
- .. plot::
132
-
133
- from qiskit.circuit import QuantumCircuit
134
- from qiskit.circuit.library import AndGate
135
- from qiskit.visualization.library import _generate_circuit_library_visualization
136
- circuit = QuantumCircuit(6)
137
- circuit.append(AndGate(5, flags=[-1, 0, 0, 1, 1]), [0, 1, 2, 3, 4, 5])
138
- _generate_circuit_library_visualization(circuit)
139
-
140
- """
141
-
142
- def __init__(
143
- self,
144
- num_variable_qubits: int,
145
- flags: list[int] | None = None,
146
- ) -> None:
147
- """
148
- Args:
149
- num_variable_qubits: The qubits of which the AND is computed. The result will be written
150
- into an additional result qubit.
151
- flags: A list of +1/0/-1 marking negations or omissions of qubits.
152
- """
153
- super().__init__("and", num_variable_qubits + 1, [])
154
- self.num_variable_qubits = num_variable_qubits
155
- self.flags = flags
156
-
157
- def _define(self):
158
- # add registers
159
- qr_variable = QuantumRegister(self.num_variable_qubits, name="variable")
160
- qr_result = QuantumRegister(1, name="result")
161
-
162
- # determine the control qubits: all that have a nonzero flag
163
- flags = self.flags or [1] * self.num_variable_qubits
164
- control_qubits = [q for q, flag in zip(qr_variable, flags) if flag != 0]
165
-
166
- # determine the qubits that need to be flipped (if a flag is < 0)
167
- flip_qubits = [q for q, flag in zip(qr_variable, flags) if flag < 0]
168
-
169
- # create the definition circuit
170
- circuit = QuantumCircuit(qr_variable, qr_result, name="and")
171
-
172
- if len(flip_qubits) > 0:
173
- circuit.x(flip_qubits)
174
- circuit.mcx(control_qubits, qr_result[:])
175
- if len(flip_qubits) > 0:
176
- circuit.x(flip_qubits)
177
-
178
- self.definition = circuit
179
-
180
- # pylint: disable=unused-argument
181
- def inverse(self, annotated: bool = False):
182
- r"""Return inverted AND gate (itself).
183
-
184
- Args:
185
- annotated: when set to ``True``, this is typically used to return an
186
- :class:`.AnnotatedOperation` with an inverse modifier set instead of a concrete
187
- :class:`.Gate`. However, for this class this argument is ignored as this gate
188
- is self-inverse.
189
-
190
- Returns:
191
- AndGate: inverse gate (self-inverse).
192
- """
193
- return AndGate(self.num_variable_qubits, self.flags)
194
-
195
- def __eq__(self, other):
196
- return (
197
- isinstance(other, AndGate)
198
- and self.num_variable_qubits == other.num_variable_qubits
199
- and self.flags == other.flags
200
- )
@@ -1,6 +1,6 @@
1
1
  # This code is part of Qiskit.
2
2
  #
3
- # (C) Copyright IBM 2020, 2024.
3
+ # (C) Copyright IBM 2020.
4
4
  #
5
5
  # This code is licensed under the Apache License, Version 2.0. You may
6
6
  # obtain a copy of this license in the LICENSE.txt file in the root directory
@@ -11,14 +11,12 @@
11
11
  # that they have been altered from the originals.
12
12
 
13
13
 
14
- """Boolean OR circuit and gate."""
15
-
14
+ """Implementations of boolean logic quantum circuits."""
16
15
  from __future__ import annotations
17
16
  from typing import List, Optional
18
17
 
19
- from qiskit.circuit import QuantumRegister, QuantumCircuit, AncillaRegister, Gate
18
+ from qiskit.circuit import QuantumRegister, QuantumCircuit, AncillaRegister
20
19
  from qiskit.circuit.library.standard_gates import MCXGate
21
- from qiskit.utils.deprecation import deprecate_func
22
20
 
23
21
 
24
22
  class OR(QuantumCircuit):
@@ -52,11 +50,6 @@ class OR(QuantumCircuit):
52
50
 
53
51
  """
54
52
 
55
- @deprecate_func(
56
- since="1.3",
57
- additional_msg="Use qiskit.circuit.library.OrGate instead.",
58
- pending=True,
59
- )
60
53
  def __init__(
61
54
  self,
62
55
  num_variable_qubits: int,
@@ -103,100 +96,3 @@ class OR(QuantumCircuit):
103
96
 
104
97
  super().__init__(*circuit.qregs, name="or")
105
98
  self.compose(circuit.to_gate(), qubits=self.qubits, inplace=True)
106
-
107
-
108
- class OrGate(Gate):
109
- r"""A gate representing the logical OR operation on a number of qubits.
110
-
111
- For the OR operation the state :math:`|1\rangle` is interpreted as ``True``. The result
112
- qubit is flipped, if the state of any variable qubit is ``True``. The OR is implemented using
113
- a multi-open-controlled X gate (i.e. flips if the state is :math:`|0\rangle`) and
114
- applying an X gate on the result qubit.
115
- Using a list of flags, qubits can be skipped or negated.
116
-
117
- The OrGate gate without special flags:
118
-
119
- .. plot::
120
-
121
- from qiskit.circuit import QuantumCircuit
122
- from qiskit.circuit.library import OrGate
123
- from qiskit.visualization.library import _generate_circuit_library_visualization
124
- circuit = QuantumCircuit(6)
125
- circuit.append(OrGate(5), [0, 1, 2, 3, 4, 5])
126
- _generate_circuit_library_visualization(circuit)
127
-
128
- Using flags we can negate qubits or skip them. For instance, if we have 5 qubits and want to
129
- return ``True`` if the first qubit is ``False`` or one of the last two are ``True`` we use the
130
- flags ``[-1, 0, 0, 1, 1]``.
131
-
132
- .. plot::
133
-
134
- from qiskit.circuit import QuantumCircuit
135
- from qiskit.circuit.library import OrGate
136
- from qiskit.visualization.library import _generate_circuit_library_visualization
137
- circuit = QuantumCircuit(6)
138
- circuit.append(OrGate(5, flags=[-1, 0, 0, 1, 1]), [0, 1, 2, 3, 4, 5])
139
- _generate_circuit_library_visualization(circuit)
140
-
141
- """
142
-
143
- def __init__(
144
- self,
145
- num_variable_qubits: int,
146
- flags: list[int] | None = None,
147
- ) -> None:
148
- """
149
- Args:
150
- num_variable_qubits: The qubits of which the AND is computed. The result will be written
151
- into an additional result qubit.
152
- flags: A list of +1/0/-1 marking negations or omissions of qubits.
153
- """
154
- super().__init__("and", num_variable_qubits + 1, [])
155
- self.num_variable_qubits = num_variable_qubits
156
- self.flags = flags
157
-
158
- def _define(self):
159
- # add registers
160
- qr_variable = QuantumRegister(self.num_variable_qubits, name="variable")
161
- qr_result = QuantumRegister(1, name="result")
162
-
163
- # determine the control qubits: all that have a nonzero flag
164
- flags = self.flags or [1] * self.num_variable_qubits
165
- control_qubits = [q for q, flag in zip(qr_variable, flags) if flag != 0]
166
-
167
- # determine the qubits that need to be flipped (if a flag is > 0)
168
- flip_qubits = [q for q, flag in zip(qr_variable, flags) if flag > 0]
169
-
170
- # create the definition circuit
171
- circuit = QuantumCircuit(qr_variable, qr_result, name="or")
172
-
173
- circuit.x(qr_result)
174
- if len(flip_qubits) > 0:
175
- circuit.x(flip_qubits)
176
- circuit.mcx(control_qubits, qr_result[:])
177
- if len(flip_qubits) > 0:
178
- circuit.x(flip_qubits)
179
-
180
- self.definition = circuit
181
-
182
- # pylint: disable=unused-argument
183
- def inverse(self, annotated: bool = False):
184
- r"""Return inverted OR gate (itself).
185
-
186
- Args:
187
- annotated: when set to ``True``, this is typically used to return an
188
- :class:`.AnnotatedOperation` with an inverse modifier set instead of a concrete
189
- :class:`.Gate`. However, for this class this argument is ignored as this gate
190
- is self-inverse.
191
-
192
- Returns:
193
- OrGate: inverse gate (self-inverse).
194
- """
195
- return OrGate(self.num_variable_qubits, self.flags)
196
-
197
- def __eq__(self, other):
198
- return (
199
- isinstance(other, OrGate)
200
- and self.num_variable_qubits == other.num_variable_qubits
201
- and self.flags == other.flags
202
- )
@@ -1,6 +1,6 @@
1
1
  # This code is part of Qiskit.
2
2
  #
3
- # (C) Copyright IBM 2020, 2024.
3
+ # (C) Copyright IBM 2020.
4
4
  #
5
5
  # This code is licensed under the Apache License, Version 2.0. You may
6
6
  # obtain a copy of this license in the LICENSE.txt file in the root directory
@@ -11,14 +11,13 @@
11
11
  # that they have been altered from the originals.
12
12
 
13
13
 
14
- """Bitwise XOR circuit and gate."""
14
+ """XOR circuit."""
15
15
 
16
16
  from typing import Optional
17
17
 
18
18
  import numpy as np
19
- from qiskit.circuit import QuantumCircuit, Gate
19
+ from qiskit.circuit import QuantumCircuit
20
20
  from qiskit.circuit.exceptions import CircuitError
21
- from qiskit.utils.deprecation import deprecate_func
22
21
 
23
22
 
24
23
  class XOR(QuantumCircuit):
@@ -29,12 +28,6 @@ class XOR(QuantumCircuit):
29
28
  This circuit can also represent addition by ``amount`` over the finite field GF(2).
30
29
  """
31
30
 
32
- @deprecate_func(
33
- since="1.3",
34
- additional_msg="Instead, for xor-ing with a specified amount, use BitwiseXorGate,"
35
- "and for xor-ing with a random amount, use random_bitwise_xor.",
36
- pending=True,
37
- )
38
31
  def __init__(
39
32
  self,
40
33
  num_qubits: int,
@@ -76,90 +69,3 @@ class XOR(QuantumCircuit):
76
69
 
77
70
  super().__init__(*circuit.qregs, name="xor")
78
71
  self.compose(circuit.to_gate(), qubits=self.qubits, inplace=True)
79
-
80
-
81
- class BitwiseXorGate(Gate):
82
- """An n-qubit gate for bitwise xor-ing the input with some integer ``amount``.
83
-
84
- The ``amount`` is xor-ed in bitstring form with the input.
85
-
86
- This gate can also represent addition by ``amount`` over the finite field GF(2).
87
-
88
- Reference Circuit:
89
-
90
- .. plot::
91
-
92
- from qiskit.circuit import QuantumCircuit
93
- from qiskit.circuit.library import BitwiseXorGate
94
- from qiskit.visualization.library import _generate_circuit_library_visualization
95
- circuit = QuantumCircuit(5)
96
- circuit.append(BitwiseXorGate(5, amount=12), [0, 1, 2, 3, 4])
97
- _generate_circuit_library_visualization(circuit)
98
-
99
- """
100
-
101
- def __init__(
102
- self,
103
- num_qubits: int,
104
- amount: int,
105
- ) -> None:
106
- """
107
- Args:
108
- num_qubits: the width of circuit.
109
- amount: the xor amount in decimal form.
110
-
111
- Raises:
112
- CircuitError: if the xor bitstring exceeds available qubits.
113
- """
114
- if len(bin(amount)[2:]) > num_qubits:
115
- raise CircuitError("Bits in 'amount' exceed circuit width")
116
-
117
- super().__init__("xor", num_qubits, [])
118
- self.amount = amount
119
-
120
- def _define(self):
121
- circuit = QuantumCircuit(self.num_qubits, name="xor")
122
- amount = self.amount
123
- for i in range(self.num_qubits):
124
- bit = amount & 1
125
- amount = amount >> 1
126
- if bit == 1:
127
- circuit.x(i)
128
-
129
- self.definition = circuit
130
-
131
- def __eq__(self, other):
132
- return (
133
- isinstance(other, BitwiseXorGate)
134
- and self.num_qubits == other.num_qubits
135
- and self.amount == other.amount
136
- )
137
-
138
- # pylint: disable=unused-argument
139
- def inverse(self, annotated: bool = False):
140
- r"""Return inverted BitwiseXorGate gate (itself).
141
-
142
- Args:
143
- annotated: when set to ``True``, this is typically used to return an
144
- :class:`.AnnotatedOperation` with an inverse modifier set instead of a concrete
145
- :class:`.Gate`. However, for this class this argument is ignored as this gate
146
- is self-inverse.
147
-
148
- Returns:
149
- BitwiseXorGate: inverse gate (self-inverse).
150
- """
151
- return BitwiseXorGate(self.num_qubits, self.amount)
152
-
153
-
154
- def random_bitwise_xor(num_qubits: int, seed: int) -> BitwiseXorGate:
155
- """
156
- Create a random BitwiseXorGate.
157
-
158
- Args:
159
- num_qubits: the width of circuit.
160
- seed: random seed in case a random xor is requested.
161
- """
162
-
163
- rng = np.random.default_rng(seed)
164
- amount = rng.integers(0, 2**num_qubits)
165
- return BitwiseXorGate(num_qubits, amount)
@@ -38,18 +38,15 @@ of the complete initial data.
38
38
 
39
39
  """
40
40
 
41
- from .pauli_feature_map import PauliFeatureMap, pauli_feature_map, z_feature_map, zz_feature_map
42
- from ._z_feature_map import ZFeatureMap
43
- from ._zz_feature_map import ZZFeatureMap
41
+ from .pauli_feature_map import PauliFeatureMap
42
+ from .z_feature_map import ZFeatureMap
43
+ from .zz_feature_map import ZZFeatureMap
44
44
  from .state_preparation import StatePreparation, UniformSuperpositionGate
45
45
  from .initializer import Initialize
46
46
 
47
47
  __all__ = [
48
- "pauli_feature_map",
49
48
  "PauliFeatureMap",
50
- "z_feature_map",
51
49
  "ZFeatureMap",
52
- "zz_feature_map",
53
50
  "ZZFeatureMap",
54
51
  "StatePreparation",
55
52
  "UniformSuperpositionGate",