qiskit 1.3.1__cp39-abi3-win32.whl → 1.3.3__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 (88) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/_accelerate.pyd +0 -0
  3. qiskit/circuit/__init__.py +7 -2
  4. qiskit/circuit/controlledgate.py +2 -0
  5. qiskit/circuit/delay.py +5 -0
  6. qiskit/circuit/library/__init__.py +1 -0
  7. qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +1 -0
  8. qiskit/circuit/library/basis_change/qft.py +3 -0
  9. qiskit/circuit/library/boolean_logic/inner_product.py +2 -0
  10. qiskit/circuit/library/boolean_logic/quantum_and.py +4 -0
  11. qiskit/circuit/library/boolean_logic/quantum_or.py +4 -0
  12. qiskit/circuit/library/boolean_logic/quantum_xor.py +2 -0
  13. qiskit/circuit/library/fourier_checking.py +2 -0
  14. qiskit/circuit/library/generalized_gates/gms.py +1 -0
  15. qiskit/circuit/library/generalized_gates/gr.py +4 -0
  16. qiskit/circuit/library/generalized_gates/mcmt.py +1 -0
  17. qiskit/circuit/library/generalized_gates/permutation.py +5 -1
  18. qiskit/circuit/library/generalized_gates/unitary.py +1 -1
  19. qiskit/circuit/library/graph_state.py +2 -0
  20. qiskit/circuit/library/grover_operator.py +7 -3
  21. qiskit/circuit/library/hidden_linear_function.py +2 -0
  22. qiskit/circuit/library/iqp.py +5 -0
  23. qiskit/circuit/library/n_local/efficient_su2.py +7 -2
  24. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +3 -0
  25. qiskit/circuit/library/n_local/excitation_preserving.py +14 -8
  26. qiskit/circuit/library/n_local/n_local.py +10 -5
  27. qiskit/circuit/library/n_local/pauli_two_design.py +5 -2
  28. qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -0
  29. qiskit/circuit/library/n_local/real_amplitudes.py +10 -4
  30. qiskit/circuit/library/overlap.py +1 -0
  31. qiskit/circuit/library/phase_estimation.py +2 -0
  32. qiskit/circuit/library/quantum_volume.py +3 -0
  33. qiskit/circuit/library/standard_gates/rz.py +7 -7
  34. qiskit/circuit/library/standard_gates/xx_minus_yy.py +0 -30
  35. qiskit/circuit/operation.py +1 -0
  36. qiskit/circuit/parameter.py +1 -0
  37. qiskit/circuit/parameterexpression.py +1 -1
  38. qiskit/circuit/parametervector.py +25 -5
  39. qiskit/circuit/quantumcircuit.py +17 -20
  40. qiskit/circuit/random/utils.py +2 -0
  41. qiskit/compiler/transpiler.py +1 -1
  42. qiskit/converters/dag_to_circuit.py +1 -0
  43. qiskit/primitives/statevector_estimator.py +1 -0
  44. qiskit/providers/fake_provider/__init__.py +1 -0
  45. qiskit/pulse/builder.py +8 -0
  46. qiskit/pulse/library/symbolic_pulses.py +1 -0
  47. qiskit/qasm2/export.py +2 -2
  48. qiskit/qasm3/__init__.py +1 -0
  49. qiskit/qasm3/exporter.py +6 -3
  50. qiskit/quantum_info/operators/channel/transformations.py +15 -0
  51. qiskit/quantum_info/operators/symplectic/pauli_list.py +8 -8
  52. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +10 -1
  53. qiskit/quantum_info/states/statevector.py +1 -0
  54. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -0
  55. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +1 -0
  56. qiskit/synthesis/evolution/product_formula.py +0 -6
  57. qiskit/synthesis/evolution/suzuki_trotter.py +22 -5
  58. qiskit/transpiler/__init__.py +780 -529
  59. qiskit/transpiler/layout.py +9 -6
  60. qiskit/transpiler/passes/layout/sabre_layout.py +13 -0
  61. qiskit/transpiler/passes/optimization/remove_identity_equiv.py +2 -3
  62. qiskit/transpiler/passes/routing/star_prerouting.py +1 -0
  63. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +1 -0
  64. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +1 -0
  65. qiskit/transpiler/passes/scheduling/scheduling/alap.py +1 -1
  66. qiskit/transpiler/passes/scheduling/scheduling/asap.py +1 -1
  67. qiskit/transpiler/passes/synthesis/hls_plugins.py +48 -9
  68. qiskit/transpiler/passes/utils/filter_op_nodes.py +2 -1
  69. qiskit/transpiler/passes/utils/remove_barriers.py +1 -0
  70. qiskit/transpiler/preset_passmanagers/__init__.py +31 -11
  71. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +19 -22
  72. qiskit/transpiler/preset_passmanagers/plugin.py +33 -42
  73. qiskit/transpiler/target.py +1 -1
  74. qiskit/visualization/__init__.py +6 -0
  75. qiskit/visualization/circuit/circuit_visualization.py +1 -0
  76. qiskit/visualization/circuit/text.py +3 -2
  77. qiskit/visualization/counts_visualization.py +2 -0
  78. qiskit/visualization/dag_visualization.py +1 -0
  79. qiskit/visualization/gate_map.py +7 -3
  80. qiskit/visualization/pulse_v2/interface.py +4 -1
  81. qiskit/visualization/state_visualization.py +13 -2
  82. qiskit/visualization/timeline/interface.py +6 -3
  83. {qiskit-1.3.1.dist-info → qiskit-1.3.3.dist-info}/METADATA +20 -23
  84. {qiskit-1.3.1.dist-info → qiskit-1.3.3.dist-info}/RECORD +88 -88
  85. {qiskit-1.3.1.dist-info → qiskit-1.3.3.dist-info}/WHEEL +1 -1
  86. {qiskit-1.3.1.dist-info → qiskit-1.3.3.dist-info}/LICENSE.txt +0 -0
  87. {qiskit-1.3.1.dist-info → qiskit-1.3.3.dist-info}/entry_points.txt +0 -0
  88. {qiskit-1.3.1.dist-info → qiskit-1.3.3.dist-info}/top_level.txt +0 -0
@@ -18,7 +18,9 @@ import inspect
18
18
  import typing
19
19
  from collections.abc import Callable
20
20
  from itertools import chain
21
+ import numpy as np
21
22
 
23
+ from qiskit.circuit.parameterexpression import ParameterExpression
22
24
  from qiskit.circuit.quantumcircuit import QuantumCircuit
23
25
  from qiskit.quantum_info.operators import SparsePauliOp, Pauli
24
26
  from qiskit.utils.deprecation import deprecate_arg
@@ -138,7 +140,7 @@ class SuzukiTrotter(ProductFormula):
138
140
 
139
141
  .. code-block:: text
140
142
 
141
- ("X", [0], t), ("ZZ", [0, 1], 2t), ("X", [0], 2)
143
+ ("X", [0], t), ("ZZ", [0, 1], 2t), ("X", [0], t)
142
144
 
143
145
  Note that the rotation angle contains a factor of 2, such that that evolution
144
146
  of a Pauli :math:`P` over time :math:`t`, which is :math:`e^{itP}`, is represented
@@ -157,7 +159,10 @@ class SuzukiTrotter(ProductFormula):
157
159
  time = evolution.time
158
160
 
159
161
  def to_sparse_list(operator):
160
- paulis = (time * (2 / self.reps) * operator).to_sparse_list()
162
+ paulis = [
163
+ (pauli, indices, real_or_fail(coeff) * time * 2 / self.reps)
164
+ for pauli, indices, coeff in operator.to_sparse_list()
165
+ ]
161
166
  if not self.preserve_order:
162
167
  return reorder_paulis(paulis)
163
168
 
@@ -171,9 +176,6 @@ class SuzukiTrotter(ProductFormula):
171
176
  # here would be the location to do so.
172
177
  non_commuting = [[op] for op in to_sparse_list(operators)]
173
178
 
174
- # normalize coefficients, i.e. ensure they are float or ParameterExpression
175
- non_commuting = self._normalize_coefficients(non_commuting)
176
-
177
179
  # we're already done here since Lie Trotter does not do any operator repetition
178
180
  product_formula = self._recurse(self.order, non_commuting)
179
181
  flattened = self.reps * list(chain.from_iterable(product_formula))
@@ -213,3 +215,18 @@ class SuzukiTrotter(ProductFormula):
213
215
  ],
214
216
  )
215
217
  return outer + inner + outer
218
+
219
+
220
+ def real_or_fail(value, tol=100):
221
+ """Return real if close, otherwise fail. Unbound parameters are left unchanged.
222
+
223
+ Based on NumPy's ``real_if_close``, i.e. ``tol`` is in terms of machine precision for float.
224
+ """
225
+ if isinstance(value, ParameterExpression):
226
+ return value
227
+
228
+ abstol = tol * np.finfo(float).eps
229
+ if abs(np.imag(value)) < abstol:
230
+ return np.real(value)
231
+
232
+ raise ValueError(f"Encountered complex value {value}, but expected real.")