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
@@ -14,9 +14,6 @@ ParameterExpression Class to enable creating simple expressions of Parameters.
14
14
  """
15
15
 
16
16
  from __future__ import annotations
17
-
18
- from dataclasses import dataclass
19
- from enum import IntEnum
20
17
  from typing import Callable, Union
21
18
 
22
19
  import numbers
@@ -33,86 +30,12 @@ from qiskit.circuit.exceptions import CircuitError
33
30
  ParameterValueType = Union["ParameterExpression", float]
34
31
 
35
32
 
36
- class _OPCode(IntEnum):
37
- ADD = 0
38
- SUB = 1
39
- MUL = 2
40
- DIV = 3
41
- POW = 4
42
- SIN = 5
43
- COS = 6
44
- TAN = 7
45
- ASIN = 8
46
- ACOS = 9
47
- EXP = 10
48
- LOG = 11
49
- SIGN = 12
50
- GRAD = 13
51
- CONJ = 14
52
- SUBSTITUTE = 15
53
- ABS = 16
54
- ATAN = 17
55
- RSUB = 18
56
- RDIV = 19
57
- RPOW = 20
58
-
59
-
60
- _OP_CODE_MAP = (
61
- "__add__",
62
- "__sub__",
63
- "__mul__",
64
- "__truediv__",
65
- "__pow__",
66
- "sin",
67
- "cos",
68
- "tan",
69
- "arcsin",
70
- "arccos",
71
- "exp",
72
- "log",
73
- "sign",
74
- "gradient",
75
- "conjugate",
76
- "subs",
77
- "abs",
78
- "arctan",
79
- "__rsub__",
80
- "__rtruediv__",
81
- "__rpow__",
82
- )
83
-
84
-
85
- def op_code_to_method(op_code: _OPCode):
86
- """Return the method name for a given op_code."""
87
- return _OP_CODE_MAP[op_code]
88
-
89
-
90
- @dataclass
91
- class _INSTRUCTION:
92
- op: _OPCode
93
- lhs: ParameterValueType | None
94
- rhs: ParameterValueType | None = None
95
-
96
-
97
- @dataclass
98
- class _SUBS:
99
- binds: dict
100
- op: _OPCode = _OPCode.SUBSTITUTE
101
-
102
-
103
33
  class ParameterExpression:
104
34
  """ParameterExpression class to enable creating expressions of Parameters."""
105
35
 
106
- __slots__ = [
107
- "_parameter_symbols",
108
- "_parameter_keys",
109
- "_symbol_expr",
110
- "_name_map",
111
- "_qpy_replay",
112
- "_standalone_param",
113
- ]
36
+ __slots__ = ["_parameter_symbols", "_parameter_keys", "_symbol_expr", "_name_map"]
114
37
 
115
- def __init__(self, symbol_map: dict, expr, *, _qpy_replay=None):
38
+ def __init__(self, symbol_map: dict, expr):
116
39
  """Create a new :class:`ParameterExpression`.
117
40
 
118
41
  Not intended to be called directly, but to be instantiated via operations
@@ -131,11 +54,6 @@ class ParameterExpression:
131
54
  self._parameter_keys = frozenset(p._hash_key() for p in self._parameter_symbols)
132
55
  self._symbol_expr = expr
133
56
  self._name_map: dict | None = None
134
- self._standalone_param = False
135
- if _qpy_replay is not None:
136
- self._qpy_replay = _qpy_replay
137
- else:
138
- self._qpy_replay = []
139
57
 
140
58
  @property
141
59
  def parameters(self) -> set:
@@ -151,14 +69,8 @@ class ParameterExpression:
151
69
 
152
70
  def conjugate(self) -> "ParameterExpression":
153
71
  """Return the conjugate."""
154
- if self._standalone_param:
155
- new_op = _INSTRUCTION(_OPCode.CONJ, self)
156
- else:
157
- new_op = _INSTRUCTION(_OPCode.CONJ, None)
158
- new_replay = self._qpy_replay.copy()
159
- new_replay.append(new_op)
160
72
  conjugated = ParameterExpression(
161
- self._parameter_symbols, symengine.conjugate(self._symbol_expr), _qpy_replay=new_replay
73
+ self._parameter_symbols, symengine.conjugate(self._symbol_expr)
162
74
  )
163
75
  return conjugated
164
76
 
@@ -205,7 +117,6 @@ class ParameterExpression:
205
117
  self._raise_if_passed_unknown_parameters(parameter_values.keys())
206
118
  self._raise_if_passed_nan(parameter_values)
207
119
 
208
- new_op = _SUBS(parameter_values)
209
120
  symbol_values = {}
210
121
  for parameter, value in parameter_values.items():
211
122
  if (param_expr := self._parameter_symbols.get(parameter)) is not None:
@@ -232,12 +143,7 @@ class ParameterExpression:
232
143
  f"(Expression: {self}, Bindings: {parameter_values})."
233
144
  )
234
145
 
235
- new_replay = self._qpy_replay.copy()
236
- new_replay.append(new_op)
237
-
238
- return ParameterExpression(
239
- free_parameter_symbols, bound_symbol_expr, _qpy_replay=new_replay
240
- )
146
+ return ParameterExpression(free_parameter_symbols, bound_symbol_expr)
241
147
 
242
148
  def subs(
243
149
  self, parameter_map: dict, allow_unknown_parameters: bool = False
@@ -269,7 +175,6 @@ class ParameterExpression:
269
175
  for p in replacement_expr.parameters
270
176
  }
271
177
  self._raise_if_parameter_names_conflict(inbound_names, parameter_map.keys())
272
- new_op = _SUBS(parameter_map)
273
178
 
274
179
  # Include existing parameters in self not set to be replaced.
275
180
  new_parameter_symbols = {
@@ -287,12 +192,8 @@ class ParameterExpression:
287
192
  new_parameter_symbols[p] = symbol_type(p.name)
288
193
 
289
194
  substituted_symbol_expr = self._symbol_expr.subs(symbol_map)
290
- new_replay = self._qpy_replay.copy()
291
- new_replay.append(new_op)
292
195
 
293
- return ParameterExpression(
294
- new_parameter_symbols, substituted_symbol_expr, _qpy_replay=new_replay
295
- )
196
+ return ParameterExpression(new_parameter_symbols, substituted_symbol_expr)
296
197
 
297
198
  def _raise_if_passed_unknown_parameters(self, parameters):
298
199
  unknown_parameters = parameters - self.parameters
@@ -330,11 +231,7 @@ class ParameterExpression:
330
231
  )
331
232
 
332
233
  def _apply_operation(
333
- self,
334
- operation: Callable,
335
- other: ParameterValueType,
336
- reflected: bool = False,
337
- op_code: _OPCode = None,
234
+ self, operation: Callable, other: ParameterValueType, reflected: bool = False
338
235
  ) -> "ParameterExpression":
339
236
  """Base method implementing math operations between Parameters and
340
237
  either a constant or a second ParameterExpression.
@@ -356,6 +253,7 @@ class ParameterExpression:
356
253
  A new expression describing the result of the operation.
357
254
  """
358
255
  self_expr = self._symbol_expr
256
+
359
257
  if isinstance(other, ParameterExpression):
360
258
  self._raise_if_parameter_names_conflict(other._names)
361
259
  parameter_symbols = {**self._parameter_symbols, **other._parameter_symbols}
@@ -368,26 +266,10 @@ class ParameterExpression:
368
266
 
369
267
  if reflected:
370
268
  expr = operation(other_expr, self_expr)
371
- if op_code in {_OPCode.RSUB, _OPCode.RDIV, _OPCode.RPOW}:
372
- if self._standalone_param:
373
- new_op = _INSTRUCTION(op_code, self, other)
374
- else:
375
- new_op = _INSTRUCTION(op_code, None, other)
376
- else:
377
- if self._standalone_param:
378
- new_op = _INSTRUCTION(op_code, other, self)
379
- else:
380
- new_op = _INSTRUCTION(op_code, other, None)
381
269
  else:
382
270
  expr = operation(self_expr, other_expr)
383
- if self._standalone_param:
384
- new_op = _INSTRUCTION(op_code, self, other)
385
- else:
386
- new_op = _INSTRUCTION(op_code, None, other)
387
- new_replay = self._qpy_replay.copy()
388
- new_replay.append(new_op)
389
-
390
- out_expr = ParameterExpression(parameter_symbols, expr, _qpy_replay=new_replay)
271
+
272
+ out_expr = ParameterExpression(parameter_symbols, expr)
391
273
  out_expr._name_map = self._names.copy()
392
274
  if isinstance(other, ParameterExpression):
393
275
  out_expr._names.update(other._names.copy())
@@ -409,13 +291,6 @@ class ParameterExpression:
409
291
  # If it is not contained then return 0
410
292
  return 0.0
411
293
 
412
- if self._standalone_param:
413
- new_op = _INSTRUCTION(_OPCode.GRAD, self, param)
414
- else:
415
- new_op = _INSTRUCTION(_OPCode.GRAD, None, param)
416
- qpy_replay = self._qpy_replay.copy()
417
- qpy_replay.append(new_op)
418
-
419
294
  # Compute the gradient of the parameter expression w.r.t. param
420
295
  key = self._parameter_symbols[param]
421
296
  expr_grad = symengine.Derivative(self._symbol_expr, key)
@@ -429,7 +304,7 @@ class ParameterExpression:
429
304
  parameter_symbols[parameter] = symbol
430
305
  # If the gradient corresponds to a parameter expression then return the new expression.
431
306
  if len(parameter_symbols) > 0:
432
- return ParameterExpression(parameter_symbols, expr=expr_grad, _qpy_replay=qpy_replay)
307
+ return ParameterExpression(parameter_symbols, expr=expr_grad)
433
308
  # If no free symbols left, return a complex or float gradient
434
309
  expr_grad_cplx = complex(expr_grad)
435
310
  if expr_grad_cplx.imag != 0:
@@ -438,89 +313,81 @@ class ParameterExpression:
438
313
  return float(expr_grad)
439
314
 
440
315
  def __add__(self, other):
441
- return self._apply_operation(operator.add, other, op_code=_OPCode.ADD)
316
+ return self._apply_operation(operator.add, other)
442
317
 
443
318
  def __radd__(self, other):
444
- return self._apply_operation(operator.add, other, reflected=True, op_code=_OPCode.ADD)
319
+ return self._apply_operation(operator.add, other, reflected=True)
445
320
 
446
321
  def __sub__(self, other):
447
- return self._apply_operation(operator.sub, other, op_code=_OPCode.SUB)
322
+ return self._apply_operation(operator.sub, other)
448
323
 
449
324
  def __rsub__(self, other):
450
- return self._apply_operation(operator.sub, other, reflected=True, op_code=_OPCode.RSUB)
325
+ return self._apply_operation(operator.sub, other, reflected=True)
451
326
 
452
327
  def __mul__(self, other):
453
- return self._apply_operation(operator.mul, other, op_code=_OPCode.MUL)
328
+ return self._apply_operation(operator.mul, other)
454
329
 
455
330
  def __pos__(self):
456
- return self._apply_operation(operator.mul, 1, op_code=_OPCode.MUL)
331
+ return self._apply_operation(operator.mul, 1)
457
332
 
458
333
  def __neg__(self):
459
- return self._apply_operation(operator.mul, -1, op_code=_OPCode.MUL)
334
+ return self._apply_operation(operator.mul, -1)
460
335
 
461
336
  def __rmul__(self, other):
462
- return self._apply_operation(operator.mul, other, reflected=True, op_code=_OPCode.MUL)
337
+ return self._apply_operation(operator.mul, other, reflected=True)
463
338
 
464
339
  def __truediv__(self, other):
465
340
  if other == 0:
466
341
  raise ZeroDivisionError("Division of a ParameterExpression by zero.")
467
- return self._apply_operation(operator.truediv, other, op_code=_OPCode.DIV)
342
+ return self._apply_operation(operator.truediv, other)
468
343
 
469
344
  def __rtruediv__(self, other):
470
- return self._apply_operation(operator.truediv, other, reflected=True, op_code=_OPCode.RDIV)
345
+ return self._apply_operation(operator.truediv, other, reflected=True)
471
346
 
472
347
  def __pow__(self, other):
473
- return self._apply_operation(pow, other, op_code=_OPCode.POW)
348
+ return self._apply_operation(pow, other)
474
349
 
475
350
  def __rpow__(self, other):
476
- return self._apply_operation(pow, other, reflected=True, op_code=_OPCode.RPOW)
351
+ return self._apply_operation(pow, other, reflected=True)
477
352
 
478
- def _call(self, ufunc, op_code):
479
- if self._standalone_param:
480
- new_op = _INSTRUCTION(op_code, self)
481
- else:
482
- new_op = _INSTRUCTION(op_code, None)
483
- new_replay = self._qpy_replay.copy()
484
- new_replay.append(new_op)
485
- return ParameterExpression(
486
- self._parameter_symbols, ufunc(self._symbol_expr), _qpy_replay=new_replay
487
- )
353
+ def _call(self, ufunc):
354
+ return ParameterExpression(self._parameter_symbols, ufunc(self._symbol_expr))
488
355
 
489
356
  def sin(self):
490
357
  """Sine of a ParameterExpression"""
491
- return self._call(symengine.sin, op_code=_OPCode.SIN)
358
+ return self._call(symengine.sin)
492
359
 
493
360
  def cos(self):
494
361
  """Cosine of a ParameterExpression"""
495
- return self._call(symengine.cos, op_code=_OPCode.COS)
362
+ return self._call(symengine.cos)
496
363
 
497
364
  def tan(self):
498
365
  """Tangent of a ParameterExpression"""
499
- return self._call(symengine.tan, op_code=_OPCode.TAN)
366
+ return self._call(symengine.tan)
500
367
 
501
368
  def arcsin(self):
502
369
  """Arcsin of a ParameterExpression"""
503
- return self._call(symengine.asin, op_code=_OPCode.ASIN)
370
+ return self._call(symengine.asin)
504
371
 
505
372
  def arccos(self):
506
373
  """Arccos of a ParameterExpression"""
507
- return self._call(symengine.acos, op_code=_OPCode.ACOS)
374
+ return self._call(symengine.acos)
508
375
 
509
376
  def arctan(self):
510
377
  """Arctan of a ParameterExpression"""
511
- return self._call(symengine.atan, op_code=_OPCode.ATAN)
378
+ return self._call(symengine.atan)
512
379
 
513
380
  def exp(self):
514
381
  """Exponential of a ParameterExpression"""
515
- return self._call(symengine.exp, op_code=_OPCode.EXP)
382
+ return self._call(symengine.exp)
516
383
 
517
384
  def log(self):
518
385
  """Logarithm of a ParameterExpression"""
519
- return self._call(symengine.log, op_code=_OPCode.LOG)
386
+ return self._call(symengine.log)
520
387
 
521
388
  def sign(self):
522
389
  """Sign of a ParameterExpression"""
523
- return self._call(symengine.sign, op_code=_OPCode.SIGN)
390
+ return self._call(symengine.sign)
524
391
 
525
392
  def __repr__(self):
526
393
  return f"{self.__class__.__name__}({str(self)})"
@@ -588,7 +455,7 @@ class ParameterExpression:
588
455
 
589
456
  def __abs__(self):
590
457
  """Absolute of a ParameterExpression"""
591
- return self._call(symengine.Abs, _OPCode.ABS)
458
+ return self._call(symengine.Abs)
592
459
 
593
460
  def abs(self):
594
461
  """Absolute of a ParameterExpression"""