mqt-core 3.3.2__cp312-cp312-win_amd64.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 (537) hide show
  1. mqt/core/__init__.py +89 -0
  2. mqt/core/__main__.py +55 -0
  3. mqt/core/_commands.py +52 -0
  4. mqt/core/_compat/__init__.py +11 -0
  5. mqt/core/_compat/typing.py +29 -0
  6. mqt/core/_version.py +34 -0
  7. mqt/core/_version.pyi +12 -0
  8. mqt/core/bin/mqt-core-algorithms.dll +0 -0
  9. mqt/core/bin/mqt-core-circuit-optimizer.dll +0 -0
  10. mqt/core/bin/mqt-core-dd.dll +0 -0
  11. mqt/core/bin/mqt-core-ds.dll +0 -0
  12. mqt/core/bin/mqt-core-fomac.dll +0 -0
  13. mqt/core/bin/mqt-core-ir.dll +0 -0
  14. mqt/core/bin/mqt-core-na-fomac.dll +0 -0
  15. mqt/core/bin/mqt-core-na.dll +0 -0
  16. mqt/core/bin/mqt-core-qasm.dll +0 -0
  17. mqt/core/bin/mqt-core-qdmi-driver.dll +0 -0
  18. mqt/core/bin/mqt-core-qdmi-na-device.dll +0 -0
  19. mqt/core/bin/mqt-core-zx.dll +0 -0
  20. mqt/core/dd.cp312-win_amd64.pyd +0 -0
  21. mqt/core/dd.pyi +1016 -0
  22. mqt/core/dd_evaluation.py +368 -0
  23. mqt/core/fomac.cp312-win_amd64.pyd +0 -0
  24. mqt/core/fomac.pyi +125 -0
  25. mqt/core/include/mqt-core/algorithms/BernsteinVazirani.hpp +39 -0
  26. mqt/core/include/mqt-core/algorithms/GHZState.hpp +18 -0
  27. mqt/core/include/mqt-core/algorithms/Grover.hpp +33 -0
  28. mqt/core/include/mqt-core/algorithms/QFT.hpp +21 -0
  29. mqt/core/include/mqt-core/algorithms/QPE.hpp +30 -0
  30. mqt/core/include/mqt-core/algorithms/RandomCliffordCircuit.hpp +22 -0
  31. mqt/core/include/mqt-core/algorithms/StatePreparation.hpp +43 -0
  32. mqt/core/include/mqt-core/algorithms/WState.hpp +18 -0
  33. mqt/core/include/mqt-core/algorithms/mqt_core_algorithms_export.h +43 -0
  34. mqt/core/include/mqt-core/boost/config/abi/borland_prefix.hpp +27 -0
  35. mqt/core/include/mqt-core/boost/config/abi/borland_suffix.hpp +12 -0
  36. mqt/core/include/mqt-core/boost/config/abi/msvc_prefix.hpp +22 -0
  37. mqt/core/include/mqt-core/boost/config/abi/msvc_suffix.hpp +8 -0
  38. mqt/core/include/mqt-core/boost/config/abi_prefix.hpp +25 -0
  39. mqt/core/include/mqt-core/boost/config/abi_suffix.hpp +25 -0
  40. mqt/core/include/mqt-core/boost/config/assert_cxx03.hpp +211 -0
  41. mqt/core/include/mqt-core/boost/config/assert_cxx11.hpp +212 -0
  42. mqt/core/include/mqt-core/boost/config/assert_cxx14.hpp +47 -0
  43. mqt/core/include/mqt-core/boost/config/assert_cxx17.hpp +65 -0
  44. mqt/core/include/mqt-core/boost/config/assert_cxx20.hpp +59 -0
  45. mqt/core/include/mqt-core/boost/config/assert_cxx23.hpp +41 -0
  46. mqt/core/include/mqt-core/boost/config/assert_cxx98.hpp +23 -0
  47. mqt/core/include/mqt-core/boost/config/auto_link.hpp +525 -0
  48. mqt/core/include/mqt-core/boost/config/compiler/borland.hpp +342 -0
  49. mqt/core/include/mqt-core/boost/config/compiler/clang.hpp +370 -0
  50. mqt/core/include/mqt-core/boost/config/compiler/clang_version.hpp +89 -0
  51. mqt/core/include/mqt-core/boost/config/compiler/codegear.hpp +389 -0
  52. mqt/core/include/mqt-core/boost/config/compiler/comeau.hpp +59 -0
  53. mqt/core/include/mqt-core/boost/config/compiler/common_edg.hpp +185 -0
  54. mqt/core/include/mqt-core/boost/config/compiler/compaq_cxx.hpp +19 -0
  55. mqt/core/include/mqt-core/boost/config/compiler/cray.hpp +446 -0
  56. mqt/core/include/mqt-core/boost/config/compiler/diab.hpp +26 -0
  57. mqt/core/include/mqt-core/boost/config/compiler/digitalmars.hpp +146 -0
  58. mqt/core/include/mqt-core/boost/config/compiler/gcc.hpp +386 -0
  59. mqt/core/include/mqt-core/boost/config/compiler/gcc_xml.hpp +115 -0
  60. mqt/core/include/mqt-core/boost/config/compiler/greenhills.hpp +28 -0
  61. mqt/core/include/mqt-core/boost/config/compiler/hp_acc.hpp +153 -0
  62. mqt/core/include/mqt-core/boost/config/compiler/intel.hpp +577 -0
  63. mqt/core/include/mqt-core/boost/config/compiler/kai.hpp +33 -0
  64. mqt/core/include/mqt-core/boost/config/compiler/metrowerks.hpp +201 -0
  65. mqt/core/include/mqt-core/boost/config/compiler/mpw.hpp +143 -0
  66. mqt/core/include/mqt-core/boost/config/compiler/nvcc.hpp +64 -0
  67. mqt/core/include/mqt-core/boost/config/compiler/pathscale.hpp +141 -0
  68. mqt/core/include/mqt-core/boost/config/compiler/pgi.hpp +23 -0
  69. mqt/core/include/mqt-core/boost/config/compiler/sgi_mipspro.hpp +29 -0
  70. mqt/core/include/mqt-core/boost/config/compiler/sunpro_cc.hpp +225 -0
  71. mqt/core/include/mqt-core/boost/config/compiler/vacpp.hpp +189 -0
  72. mqt/core/include/mqt-core/boost/config/compiler/visualc.hpp +398 -0
  73. mqt/core/include/mqt-core/boost/config/compiler/xlcpp.hpp +303 -0
  74. mqt/core/include/mqt-core/boost/config/compiler/xlcpp_zos.hpp +174 -0
  75. mqt/core/include/mqt-core/boost/config/detail/cxx_composite.hpp +218 -0
  76. mqt/core/include/mqt-core/boost/config/detail/posix_features.hpp +95 -0
  77. mqt/core/include/mqt-core/boost/config/detail/select_compiler_config.hpp +157 -0
  78. mqt/core/include/mqt-core/boost/config/detail/select_platform_config.hpp +147 -0
  79. mqt/core/include/mqt-core/boost/config/detail/select_stdlib_config.hpp +121 -0
  80. mqt/core/include/mqt-core/boost/config/detail/suffix.hpp +1334 -0
  81. mqt/core/include/mqt-core/boost/config/header_deprecated.hpp +26 -0
  82. mqt/core/include/mqt-core/boost/config/helper_macros.hpp +37 -0
  83. mqt/core/include/mqt-core/boost/config/no_tr1/cmath.hpp +28 -0
  84. mqt/core/include/mqt-core/boost/config/no_tr1/complex.hpp +28 -0
  85. mqt/core/include/mqt-core/boost/config/no_tr1/functional.hpp +28 -0
  86. mqt/core/include/mqt-core/boost/config/no_tr1/memory.hpp +28 -0
  87. mqt/core/include/mqt-core/boost/config/no_tr1/utility.hpp +28 -0
  88. mqt/core/include/mqt-core/boost/config/platform/aix.hpp +33 -0
  89. mqt/core/include/mqt-core/boost/config/platform/amigaos.hpp +15 -0
  90. mqt/core/include/mqt-core/boost/config/platform/beos.hpp +26 -0
  91. mqt/core/include/mqt-core/boost/config/platform/bsd.hpp +83 -0
  92. mqt/core/include/mqt-core/boost/config/platform/cloudabi.hpp +18 -0
  93. mqt/core/include/mqt-core/boost/config/platform/cray.hpp +18 -0
  94. mqt/core/include/mqt-core/boost/config/platform/cygwin.hpp +71 -0
  95. mqt/core/include/mqt-core/boost/config/platform/haiku.hpp +31 -0
  96. mqt/core/include/mqt-core/boost/config/platform/hpux.hpp +87 -0
  97. mqt/core/include/mqt-core/boost/config/platform/irix.hpp +31 -0
  98. mqt/core/include/mqt-core/boost/config/platform/linux.hpp +106 -0
  99. mqt/core/include/mqt-core/boost/config/platform/macos.hpp +87 -0
  100. mqt/core/include/mqt-core/boost/config/platform/qnxnto.hpp +31 -0
  101. mqt/core/include/mqt-core/boost/config/platform/solaris.hpp +31 -0
  102. mqt/core/include/mqt-core/boost/config/platform/symbian.hpp +97 -0
  103. mqt/core/include/mqt-core/boost/config/platform/vms.hpp +25 -0
  104. mqt/core/include/mqt-core/boost/config/platform/vxworks.hpp +422 -0
  105. mqt/core/include/mqt-core/boost/config/platform/wasm.hpp +23 -0
  106. mqt/core/include/mqt-core/boost/config/platform/win32.hpp +90 -0
  107. mqt/core/include/mqt-core/boost/config/platform/zos.hpp +32 -0
  108. mqt/core/include/mqt-core/boost/config/pragma_message.hpp +31 -0
  109. mqt/core/include/mqt-core/boost/config/requires_threads.hpp +92 -0
  110. mqt/core/include/mqt-core/boost/config/stdlib/dinkumware.hpp +324 -0
  111. mqt/core/include/mqt-core/boost/config/stdlib/libcomo.hpp +93 -0
  112. mqt/core/include/mqt-core/boost/config/stdlib/libcpp.hpp +180 -0
  113. mqt/core/include/mqt-core/boost/config/stdlib/libstdcpp3.hpp +482 -0
  114. mqt/core/include/mqt-core/boost/config/stdlib/modena.hpp +79 -0
  115. mqt/core/include/mqt-core/boost/config/stdlib/msl.hpp +98 -0
  116. mqt/core/include/mqt-core/boost/config/stdlib/roguewave.hpp +208 -0
  117. mqt/core/include/mqt-core/boost/config/stdlib/sgi.hpp +168 -0
  118. mqt/core/include/mqt-core/boost/config/stdlib/stlport.hpp +258 -0
  119. mqt/core/include/mqt-core/boost/config/stdlib/vacpp.hpp +74 -0
  120. mqt/core/include/mqt-core/boost/config/stdlib/xlcpp_zos.hpp +61 -0
  121. mqt/core/include/mqt-core/boost/config/user.hpp +133 -0
  122. mqt/core/include/mqt-core/boost/config/warning_disable.hpp +47 -0
  123. mqt/core/include/mqt-core/boost/config/workaround.hpp +305 -0
  124. mqt/core/include/mqt-core/boost/config.hpp +67 -0
  125. mqt/core/include/mqt-core/boost/cstdint.hpp +556 -0
  126. mqt/core/include/mqt-core/boost/cxx11_char_types.hpp +70 -0
  127. mqt/core/include/mqt-core/boost/detail/workaround.hpp +10 -0
  128. mqt/core/include/mqt-core/boost/limits.hpp +146 -0
  129. mqt/core/include/mqt-core/boost/multiprecision/complex128.hpp +24 -0
  130. mqt/core/include/mqt-core/boost/multiprecision/complex_adaptor.hpp +1046 -0
  131. mqt/core/include/mqt-core/boost/multiprecision/concepts/mp_number_archetypes.hpp +257 -0
  132. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/io.hpp +698 -0
  133. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/transcendental.hpp +157 -0
  134. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float.hpp +2297 -0
  135. mqt/core/include/mqt-core/boost/multiprecision/cpp_complex.hpp +12 -0
  136. mqt/core/include/mqt-core/boost/multiprecision/cpp_dec_float.hpp +3690 -0
  137. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add.hpp +368 -0
  138. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add_unsigned.hpp +387 -0
  139. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/bitwise.hpp +889 -0
  140. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/checked.hpp +178 -0
  141. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/comparison.hpp +374 -0
  142. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/cpp_int_config.hpp +161 -0
  143. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/divide.hpp +703 -0
  144. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/import_export.hpp +248 -0
  145. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/intel_intrinsics.hpp +138 -0
  146. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/limits.hpp +282 -0
  147. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/literals.hpp +295 -0
  148. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/misc.hpp +1457 -0
  149. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/multiply.hpp +848 -0
  150. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/serialize.hpp +211 -0
  151. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/value_pack.hpp +42 -0
  152. mqt/core/include/mqt-core/boost/multiprecision/cpp_int.hpp +2360 -0
  153. mqt/core/include/mqt-core/boost/multiprecision/debug_adaptor.hpp +760 -0
  154. mqt/core/include/mqt-core/boost/multiprecision/detail/assert.hpp +29 -0
  155. mqt/core/include/mqt-core/boost/multiprecision/detail/atomic.hpp +62 -0
  156. mqt/core/include/mqt-core/boost/multiprecision/detail/bitscan.hpp +317 -0
  157. mqt/core/include/mqt-core/boost/multiprecision/detail/check_cpp11_config.hpp +64 -0
  158. mqt/core/include/mqt-core/boost/multiprecision/detail/constexpr.hpp +88 -0
  159. mqt/core/include/mqt-core/boost/multiprecision/detail/default_ops.hpp +4052 -0
  160. mqt/core/include/mqt-core/boost/multiprecision/detail/digits.hpp +49 -0
  161. mqt/core/include/mqt-core/boost/multiprecision/detail/dynamic_array.hpp +44 -0
  162. mqt/core/include/mqt-core/boost/multiprecision/detail/empty_value.hpp +87 -0
  163. mqt/core/include/mqt-core/boost/multiprecision/detail/endian.hpp +35 -0
  164. mqt/core/include/mqt-core/boost/multiprecision/detail/et_ops.hpp +1831 -0
  165. mqt/core/include/mqt-core/boost/multiprecision/detail/float128_functions.hpp +95 -0
  166. mqt/core/include/mqt-core/boost/multiprecision/detail/float_string_cvt.hpp +333 -0
  167. mqt/core/include/mqt-core/boost/multiprecision/detail/fpclassify.hpp +101 -0
  168. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/constants.hpp +288 -0
  169. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/pow.hpp +905 -0
  170. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trig.hpp +1058 -0
  171. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trunc.hpp +82 -0
  172. mqt/core/include/mqt-core/boost/multiprecision/detail/generic_interconvert.hpp +687 -0
  173. mqt/core/include/mqt-core/boost/multiprecision/detail/hash.hpp +56 -0
  174. mqt/core/include/mqt-core/boost/multiprecision/detail/integer_ops.hpp +474 -0
  175. mqt/core/include/mqt-core/boost/multiprecision/detail/itos.hpp +39 -0
  176. mqt/core/include/mqt-core/boost/multiprecision/detail/min_max.hpp +106 -0
  177. mqt/core/include/mqt-core/boost/multiprecision/detail/no_et_ops.hpp +661 -0
  178. mqt/core/include/mqt-core/boost/multiprecision/detail/no_exceptions_support.hpp +55 -0
  179. mqt/core/include/mqt-core/boost/multiprecision/detail/number_base.hpp +1656 -0
  180. mqt/core/include/mqt-core/boost/multiprecision/detail/number_compare.hpp +848 -0
  181. mqt/core/include/mqt-core/boost/multiprecision/detail/precision.hpp +313 -0
  182. mqt/core/include/mqt-core/boost/multiprecision/detail/rebind.hpp +19 -0
  183. mqt/core/include/mqt-core/boost/multiprecision/detail/standalone_config.hpp +148 -0
  184. mqt/core/include/mqt-core/boost/multiprecision/detail/static_array.hpp +42 -0
  185. mqt/core/include/mqt-core/boost/multiprecision/detail/string_helpers.hpp +48 -0
  186. mqt/core/include/mqt-core/boost/multiprecision/detail/tables.hpp +80 -0
  187. mqt/core/include/mqt-core/boost/multiprecision/detail/ublas_interop.hpp +75 -0
  188. mqt/core/include/mqt-core/boost/multiprecision/detail/uniform_int_distribution.hpp +212 -0
  189. mqt/core/include/mqt-core/boost/multiprecision/detail/utype_helper.hpp +374 -0
  190. mqt/core/include/mqt-core/boost/multiprecision/eigen.hpp +248 -0
  191. mqt/core/include/mqt-core/boost/multiprecision/float128.hpp +920 -0
  192. mqt/core/include/mqt-core/boost/multiprecision/fwd.hpp +268 -0
  193. mqt/core/include/mqt-core/boost/multiprecision/gmp.hpp +4060 -0
  194. mqt/core/include/mqt-core/boost/multiprecision/integer.hpp +363 -0
  195. mqt/core/include/mqt-core/boost/multiprecision/logged_adaptor.hpp +834 -0
  196. mqt/core/include/mqt-core/boost/multiprecision/miller_rabin.hpp +221 -0
  197. mqt/core/include/mqt-core/boost/multiprecision/mpc.hpp +1721 -0
  198. mqt/core/include/mqt-core/boost/multiprecision/mpfi.hpp +2559 -0
  199. mqt/core/include/mqt-core/boost/multiprecision/mpfr.hpp +3644 -0
  200. mqt/core/include/mqt-core/boost/multiprecision/number.hpp +2500 -0
  201. mqt/core/include/mqt-core/boost/multiprecision/random.hpp +23 -0
  202. mqt/core/include/mqt-core/boost/multiprecision/rational_adaptor.hpp +1289 -0
  203. mqt/core/include/mqt-core/boost/multiprecision/tommath.hpp +1034 -0
  204. mqt/core/include/mqt-core/boost/multiprecision/traits/explicit_conversion.hpp +67 -0
  205. mqt/core/include/mqt-core/boost/multiprecision/traits/extract_exponent_type.hpp +28 -0
  206. mqt/core/include/mqt-core/boost/multiprecision/traits/is_backend.hpp +91 -0
  207. mqt/core/include/mqt-core/boost/multiprecision/traits/is_byte_container.hpp +51 -0
  208. mqt/core/include/mqt-core/boost/multiprecision/traits/is_complex.hpp +22 -0
  209. mqt/core/include/mqt-core/boost/multiprecision/traits/is_convertible_arithmetic.hpp +51 -0
  210. mqt/core/include/mqt-core/boost/multiprecision/traits/is_restricted_conversion.hpp +47 -0
  211. mqt/core/include/mqt-core/boost/multiprecision/traits/is_variable_precision.hpp +25 -0
  212. mqt/core/include/mqt-core/boost/multiprecision/traits/max_digits10.hpp +79 -0
  213. mqt/core/include/mqt-core/boost/multiprecision/traits/std_integer_traits.hpp +90 -0
  214. mqt/core/include/mqt-core/boost/multiprecision/traits/transcendental_reduction_type.hpp +21 -0
  215. mqt/core/include/mqt-core/boost/version.hpp +32 -0
  216. mqt/core/include/mqt-core/circuit_optimizer/CircuitOptimizer.hpp +119 -0
  217. mqt/core/include/mqt-core/circuit_optimizer/mqt_core_circuit_optimizer_export.h +43 -0
  218. mqt/core/include/mqt-core/datastructures/DirectedAcyclicGraph.hpp +117 -0
  219. mqt/core/include/mqt-core/datastructures/DirectedGraph.hpp +158 -0
  220. mqt/core/include/mqt-core/datastructures/DisjointSet.hpp +50 -0
  221. mqt/core/include/mqt-core/datastructures/Layer.hpp +172 -0
  222. mqt/core/include/mqt-core/datastructures/SymmetricMatrix.hpp +57 -0
  223. mqt/core/include/mqt-core/datastructures/UndirectedGraph.hpp +227 -0
  224. mqt/core/include/mqt-core/datastructures/mqt_core_ds_export.h +43 -0
  225. mqt/core/include/mqt-core/dd/Approximation.hpp +45 -0
  226. mqt/core/include/mqt-core/dd/CachedEdge.hpp +174 -0
  227. mqt/core/include/mqt-core/dd/Complex.hpp +165 -0
  228. mqt/core/include/mqt-core/dd/ComplexNumbers.hpp +150 -0
  229. mqt/core/include/mqt-core/dd/ComplexValue.hpp +184 -0
  230. mqt/core/include/mqt-core/dd/ComputeTable.hpp +183 -0
  231. mqt/core/include/mqt-core/dd/DDDefinitions.hpp +139 -0
  232. mqt/core/include/mqt-core/dd/DDpackageConfig.hpp +104 -0
  233. mqt/core/include/mqt-core/dd/DensityNoiseTable.hpp +114 -0
  234. mqt/core/include/mqt-core/dd/Edge.hpp +416 -0
  235. mqt/core/include/mqt-core/dd/Export.hpp +438 -0
  236. mqt/core/include/mqt-core/dd/FunctionalityConstruction.hpp +75 -0
  237. mqt/core/include/mqt-core/dd/GateMatrixDefinitions.hpp +43 -0
  238. mqt/core/include/mqt-core/dd/LinkedListBase.hpp +45 -0
  239. mqt/core/include/mqt-core/dd/MemoryManager.hpp +193 -0
  240. mqt/core/include/mqt-core/dd/Node.hpp +223 -0
  241. mqt/core/include/mqt-core/dd/NoiseFunctionality.hpp +144 -0
  242. mqt/core/include/mqt-core/dd/Operations.hpp +306 -0
  243. mqt/core/include/mqt-core/dd/Package.hpp +2036 -0
  244. mqt/core/include/mqt-core/dd/Package_fwd.hpp +22 -0
  245. mqt/core/include/mqt-core/dd/RealNumber.hpp +255 -0
  246. mqt/core/include/mqt-core/dd/RealNumberUniqueTable.hpp +217 -0
  247. mqt/core/include/mqt-core/dd/Simulation.hpp +98 -0
  248. mqt/core/include/mqt-core/dd/StateGeneration.hpp +143 -0
  249. mqt/core/include/mqt-core/dd/StochasticNoiseOperationTable.hpp +88 -0
  250. mqt/core/include/mqt-core/dd/UnaryComputeTable.hpp +121 -0
  251. mqt/core/include/mqt-core/dd/UniqueTable.hpp +243 -0
  252. mqt/core/include/mqt-core/dd/mqt_core_dd_export.h +43 -0
  253. mqt/core/include/mqt-core/dd/statistics/MemoryManagerStatistics.hpp +84 -0
  254. mqt/core/include/mqt-core/dd/statistics/PackageStatistics.hpp +55 -0
  255. mqt/core/include/mqt-core/dd/statistics/Statistics.hpp +48 -0
  256. mqt/core/include/mqt-core/dd/statistics/TableStatistics.hpp +79 -0
  257. mqt/core/include/mqt-core/dd/statistics/UniqueTableStatistics.hpp +31 -0
  258. mqt/core/include/mqt-core/fomac/FoMaC.hpp +568 -0
  259. mqt/core/include/mqt-core/ir/Definitions.hpp +108 -0
  260. mqt/core/include/mqt-core/ir/Permutation.hpp +213 -0
  261. mqt/core/include/mqt-core/ir/QuantumComputation.hpp +596 -0
  262. mqt/core/include/mqt-core/ir/Register.hpp +125 -0
  263. mqt/core/include/mqt-core/ir/mqt_core_ir_export.h +43 -0
  264. mqt/core/include/mqt-core/ir/operations/AodOperation.hpp +92 -0
  265. mqt/core/include/mqt-core/ir/operations/CompoundOperation.hpp +212 -0
  266. mqt/core/include/mqt-core/ir/operations/Control.hpp +142 -0
  267. mqt/core/include/mqt-core/ir/operations/Expression.hpp +847 -0
  268. mqt/core/include/mqt-core/ir/operations/IfElseOperation.hpp +169 -0
  269. mqt/core/include/mqt-core/ir/operations/NonUnitaryOperation.hpp +118 -0
  270. mqt/core/include/mqt-core/ir/operations/OpType.hpp +120 -0
  271. mqt/core/include/mqt-core/ir/operations/OpType.inc +76 -0
  272. mqt/core/include/mqt-core/ir/operations/Operation.hpp +247 -0
  273. mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +140 -0
  274. mqt/core/include/mqt-core/ir/operations/SymbolicOperation.hpp +144 -0
  275. mqt/core/include/mqt-core/mqt_na_qdmi/device.h +602 -0
  276. mqt/core/include/mqt-core/mqt_na_qdmi/types.h +78 -0
  277. mqt/core/include/mqt-core/na/NAComputation.hpp +185 -0
  278. mqt/core/include/mqt-core/na/device/Device.hpp +410 -0
  279. mqt/core/include/mqt-core/na/device/DeviceMemberInitializers.hpp +724 -0
  280. mqt/core/include/mqt-core/na/device/Generator.hpp +447 -0
  281. mqt/core/include/mqt-core/na/entities/Atom.hpp +62 -0
  282. mqt/core/include/mqt-core/na/entities/Location.hpp +154 -0
  283. mqt/core/include/mqt-core/na/entities/Zone.hpp +95 -0
  284. mqt/core/include/mqt-core/na/fomac/Device.hpp +169 -0
  285. mqt/core/include/mqt-core/na/mqt_core_na_export.h +43 -0
  286. mqt/core/include/mqt-core/na/operations/GlobalCZOp.hpp +38 -0
  287. mqt/core/include/mqt-core/na/operations/GlobalOp.hpp +58 -0
  288. mqt/core/include/mqt-core/na/operations/GlobalRYOp.hpp +42 -0
  289. mqt/core/include/mqt-core/na/operations/LoadOp.hpp +89 -0
  290. mqt/core/include/mqt-core/na/operations/LocalOp.hpp +56 -0
  291. mqt/core/include/mqt-core/na/operations/LocalRZOp.hpp +42 -0
  292. mqt/core/include/mqt-core/na/operations/LocalUOp.hpp +49 -0
  293. mqt/core/include/mqt-core/na/operations/MoveOp.hpp +66 -0
  294. mqt/core/include/mqt-core/na/operations/Op.hpp +62 -0
  295. mqt/core/include/mqt-core/na/operations/ShuttlingOp.hpp +51 -0
  296. mqt/core/include/mqt-core/na/operations/StoreOp.hpp +87 -0
  297. mqt/core/include/mqt-core/qasm3/Exception.hpp +85 -0
  298. mqt/core/include/mqt-core/qasm3/Gate.hpp +65 -0
  299. mqt/core/include/mqt-core/qasm3/Importer.hpp +192 -0
  300. mqt/core/include/mqt-core/qasm3/InstVisitor.hpp +145 -0
  301. mqt/core/include/mqt-core/qasm3/NestedEnvironment.hpp +41 -0
  302. mqt/core/include/mqt-core/qasm3/Parser.hpp +170 -0
  303. mqt/core/include/mqt-core/qasm3/Scanner.hpp +73 -0
  304. mqt/core/include/mqt-core/qasm3/Statement.hpp +486 -0
  305. mqt/core/include/mqt-core/qasm3/Statement_fwd.hpp +39 -0
  306. mqt/core/include/mqt-core/qasm3/StdGates.hpp +232 -0
  307. mqt/core/include/mqt-core/qasm3/Token.hpp +198 -0
  308. mqt/core/include/mqt-core/qasm3/Types.hpp +238 -0
  309. mqt/core/include/mqt-core/qasm3/Types_fwd.hpp +22 -0
  310. mqt/core/include/mqt-core/qasm3/mqt_core_qasm_export.h +43 -0
  311. mqt/core/include/mqt-core/qasm3/passes/CompilerPass.hpp +22 -0
  312. mqt/core/include/mqt-core/qasm3/passes/ConstEvalPass.hpp +102 -0
  313. mqt/core/include/mqt-core/qasm3/passes/TypeCheckPass.hpp +124 -0
  314. mqt/core/include/mqt-core/qdmi/Driver.hpp +431 -0
  315. mqt/core/include/mqt-core/zx/FunctionalityConstruction.hpp +125 -0
  316. mqt/core/include/mqt-core/zx/Rational.hpp +318 -0
  317. mqt/core/include/mqt-core/zx/Rules.hpp +132 -0
  318. mqt/core/include/mqt-core/zx/Simplify.hpp +182 -0
  319. mqt/core/include/mqt-core/zx/Utils.hpp +212 -0
  320. mqt/core/include/mqt-core/zx/ZXDefinitions.hpp +93 -0
  321. mqt/core/include/mqt-core/zx/ZXDiagram.hpp +480 -0
  322. mqt/core/include/mqt-core/zx/mqt_core_zx_export.h +43 -0
  323. mqt/core/include/nlohmann/adl_serializer.hpp +55 -0
  324. mqt/core/include/nlohmann/byte_container_with_subtype.hpp +103 -0
  325. mqt/core/include/nlohmann/detail/abi_macros.hpp +111 -0
  326. mqt/core/include/nlohmann/detail/conversions/from_json.hpp +577 -0
  327. mqt/core/include/nlohmann/detail/conversions/to_chars.hpp +1118 -0
  328. mqt/core/include/nlohmann/detail/conversions/to_json.hpp +479 -0
  329. mqt/core/include/nlohmann/detail/exceptions.hpp +291 -0
  330. mqt/core/include/nlohmann/detail/hash.hpp +129 -0
  331. mqt/core/include/nlohmann/detail/input/binary_reader.hpp +3068 -0
  332. mqt/core/include/nlohmann/detail/input/input_adapters.hpp +549 -0
  333. mqt/core/include/nlohmann/detail/input/json_sax.hpp +986 -0
  334. mqt/core/include/nlohmann/detail/input/lexer.hpp +1643 -0
  335. mqt/core/include/nlohmann/detail/input/parser.hpp +519 -0
  336. mqt/core/include/nlohmann/detail/input/position_t.hpp +37 -0
  337. mqt/core/include/nlohmann/detail/iterators/internal_iterator.hpp +35 -0
  338. mqt/core/include/nlohmann/detail/iterators/iter_impl.hpp +760 -0
  339. mqt/core/include/nlohmann/detail/iterators/iteration_proxy.hpp +235 -0
  340. mqt/core/include/nlohmann/detail/iterators/iterator_traits.hpp +61 -0
  341. mqt/core/include/nlohmann/detail/iterators/json_reverse_iterator.hpp +130 -0
  342. mqt/core/include/nlohmann/detail/iterators/primitive_iterator.hpp +132 -0
  343. mqt/core/include/nlohmann/detail/json_custom_base_class.hpp +39 -0
  344. mqt/core/include/nlohmann/detail/json_pointer.hpp +988 -0
  345. mqt/core/include/nlohmann/detail/json_ref.hpp +78 -0
  346. mqt/core/include/nlohmann/detail/macro_scope.hpp +595 -0
  347. mqt/core/include/nlohmann/detail/macro_unscope.hpp +46 -0
  348. mqt/core/include/nlohmann/detail/meta/call_std/begin.hpp +17 -0
  349. mqt/core/include/nlohmann/detail/meta/call_std/end.hpp +17 -0
  350. mqt/core/include/nlohmann/detail/meta/cpp_future.hpp +171 -0
  351. mqt/core/include/nlohmann/detail/meta/detected.hpp +70 -0
  352. mqt/core/include/nlohmann/detail/meta/identity_tag.hpp +21 -0
  353. mqt/core/include/nlohmann/detail/meta/is_sax.hpp +159 -0
  354. mqt/core/include/nlohmann/detail/meta/std_fs.hpp +29 -0
  355. mqt/core/include/nlohmann/detail/meta/type_traits.hpp +795 -0
  356. mqt/core/include/nlohmann/detail/meta/void_t.hpp +24 -0
  357. mqt/core/include/nlohmann/detail/output/binary_writer.hpp +1850 -0
  358. mqt/core/include/nlohmann/detail/output/output_adapters.hpp +147 -0
  359. mqt/core/include/nlohmann/detail/output/serializer.hpp +988 -0
  360. mqt/core/include/nlohmann/detail/string_concat.hpp +146 -0
  361. mqt/core/include/nlohmann/detail/string_escape.hpp +72 -0
  362. mqt/core/include/nlohmann/detail/string_utils.hpp +37 -0
  363. mqt/core/include/nlohmann/detail/value_t.hpp +118 -0
  364. mqt/core/include/nlohmann/json.hpp +5306 -0
  365. mqt/core/include/nlohmann/json_fwd.hpp +75 -0
  366. mqt/core/include/nlohmann/ordered_map.hpp +359 -0
  367. mqt/core/include/nlohmann/thirdparty/hedley/hedley.hpp +2045 -0
  368. mqt/core/include/nlohmann/thirdparty/hedley/hedley_undef.hpp +158 -0
  369. mqt/core/include/qdmi/qdmi/client.h +990 -0
  370. mqt/core/include/qdmi/qdmi/constants.h +1139 -0
  371. mqt/core/include/qdmi/qdmi/device.h +602 -0
  372. mqt/core/include/qdmi/qdmi/types.h +78 -0
  373. mqt/core/include/spdlog/async.h +99 -0
  374. mqt/core/include/spdlog/async_logger-inl.h +84 -0
  375. mqt/core/include/spdlog/async_logger.h +74 -0
  376. mqt/core/include/spdlog/cfg/argv.h +40 -0
  377. mqt/core/include/spdlog/cfg/env.h +36 -0
  378. mqt/core/include/spdlog/cfg/helpers-inl.h +107 -0
  379. mqt/core/include/spdlog/cfg/helpers.h +29 -0
  380. mqt/core/include/spdlog/common-inl.h +68 -0
  381. mqt/core/include/spdlog/common.h +406 -0
  382. mqt/core/include/spdlog/details/backtracer-inl.h +63 -0
  383. mqt/core/include/spdlog/details/backtracer.h +45 -0
  384. mqt/core/include/spdlog/details/circular_q.h +115 -0
  385. mqt/core/include/spdlog/details/console_globals.h +28 -0
  386. mqt/core/include/spdlog/details/file_helper-inl.h +153 -0
  387. mqt/core/include/spdlog/details/file_helper.h +61 -0
  388. mqt/core/include/spdlog/details/fmt_helper.h +141 -0
  389. mqt/core/include/spdlog/details/log_msg-inl.h +44 -0
  390. mqt/core/include/spdlog/details/log_msg.h +40 -0
  391. mqt/core/include/spdlog/details/log_msg_buffer-inl.h +54 -0
  392. mqt/core/include/spdlog/details/log_msg_buffer.h +32 -0
  393. mqt/core/include/spdlog/details/mpmc_blocking_q.h +177 -0
  394. mqt/core/include/spdlog/details/null_mutex.h +35 -0
  395. mqt/core/include/spdlog/details/os-inl.h +606 -0
  396. mqt/core/include/spdlog/details/os.h +127 -0
  397. mqt/core/include/spdlog/details/periodic_worker-inl.h +26 -0
  398. mqt/core/include/spdlog/details/periodic_worker.h +58 -0
  399. mqt/core/include/spdlog/details/registry-inl.h +270 -0
  400. mqt/core/include/spdlog/details/registry.h +131 -0
  401. mqt/core/include/spdlog/details/synchronous_factory.h +22 -0
  402. mqt/core/include/spdlog/details/tcp_client-windows.h +135 -0
  403. mqt/core/include/spdlog/details/tcp_client.h +127 -0
  404. mqt/core/include/spdlog/details/thread_pool-inl.h +126 -0
  405. mqt/core/include/spdlog/details/thread_pool.h +117 -0
  406. mqt/core/include/spdlog/details/udp_client-windows.h +98 -0
  407. mqt/core/include/spdlog/details/udp_client.h +81 -0
  408. mqt/core/include/spdlog/details/windows_include.h +11 -0
  409. mqt/core/include/spdlog/fmt/bin_to_hex.h +224 -0
  410. mqt/core/include/spdlog/fmt/bundled/args.h +220 -0
  411. mqt/core/include/spdlog/fmt/bundled/base.h +2989 -0
  412. mqt/core/include/spdlog/fmt/bundled/chrono.h +2330 -0
  413. mqt/core/include/spdlog/fmt/bundled/color.h +637 -0
  414. mqt/core/include/spdlog/fmt/bundled/compile.h +539 -0
  415. mqt/core/include/spdlog/fmt/bundled/core.h +5 -0
  416. mqt/core/include/spdlog/fmt/bundled/fmt.license.rst +27 -0
  417. mqt/core/include/spdlog/fmt/bundled/format-inl.h +1948 -0
  418. mqt/core/include/spdlog/fmt/bundled/format.h +4244 -0
  419. mqt/core/include/spdlog/fmt/bundled/os.h +427 -0
  420. mqt/core/include/spdlog/fmt/bundled/ostream.h +167 -0
  421. mqt/core/include/spdlog/fmt/bundled/printf.h +633 -0
  422. mqt/core/include/spdlog/fmt/bundled/ranges.h +850 -0
  423. mqt/core/include/spdlog/fmt/bundled/std.h +728 -0
  424. mqt/core/include/spdlog/fmt/bundled/xchar.h +369 -0
  425. mqt/core/include/spdlog/fmt/chrono.h +23 -0
  426. mqt/core/include/spdlog/fmt/compile.h +23 -0
  427. mqt/core/include/spdlog/fmt/fmt.h +30 -0
  428. mqt/core/include/spdlog/fmt/ostr.h +23 -0
  429. mqt/core/include/spdlog/fmt/ranges.h +23 -0
  430. mqt/core/include/spdlog/fmt/std.h +24 -0
  431. mqt/core/include/spdlog/fmt/xchar.h +23 -0
  432. mqt/core/include/spdlog/formatter.h +17 -0
  433. mqt/core/include/spdlog/fwd.h +18 -0
  434. mqt/core/include/spdlog/logger-inl.h +198 -0
  435. mqt/core/include/spdlog/logger.h +379 -0
  436. mqt/core/include/spdlog/mdc.h +52 -0
  437. mqt/core/include/spdlog/pattern_formatter-inl.h +1340 -0
  438. mqt/core/include/spdlog/pattern_formatter.h +118 -0
  439. mqt/core/include/spdlog/sinks/android_sink.h +137 -0
  440. mqt/core/include/spdlog/sinks/ansicolor_sink-inl.h +142 -0
  441. mqt/core/include/spdlog/sinks/ansicolor_sink.h +116 -0
  442. mqt/core/include/spdlog/sinks/base_sink-inl.h +59 -0
  443. mqt/core/include/spdlog/sinks/base_sink.h +51 -0
  444. mqt/core/include/spdlog/sinks/basic_file_sink-inl.h +48 -0
  445. mqt/core/include/spdlog/sinks/basic_file_sink.h +66 -0
  446. mqt/core/include/spdlog/sinks/callback_sink.h +56 -0
  447. mqt/core/include/spdlog/sinks/daily_file_sink.h +254 -0
  448. mqt/core/include/spdlog/sinks/dist_sink.h +81 -0
  449. mqt/core/include/spdlog/sinks/dup_filter_sink.h +91 -0
  450. mqt/core/include/spdlog/sinks/hourly_file_sink.h +193 -0
  451. mqt/core/include/spdlog/sinks/kafka_sink.h +119 -0
  452. mqt/core/include/spdlog/sinks/mongo_sink.h +108 -0
  453. mqt/core/include/spdlog/sinks/msvc_sink.h +68 -0
  454. mqt/core/include/spdlog/sinks/null_sink.h +41 -0
  455. mqt/core/include/spdlog/sinks/ostream_sink.h +43 -0
  456. mqt/core/include/spdlog/sinks/qt_sinks.h +304 -0
  457. mqt/core/include/spdlog/sinks/ringbuffer_sink.h +67 -0
  458. mqt/core/include/spdlog/sinks/rotating_file_sink-inl.h +179 -0
  459. mqt/core/include/spdlog/sinks/rotating_file_sink.h +93 -0
  460. mqt/core/include/spdlog/sinks/sink-inl.h +22 -0
  461. mqt/core/include/spdlog/sinks/sink.h +34 -0
  462. mqt/core/include/spdlog/sinks/stdout_color_sinks-inl.h +38 -0
  463. mqt/core/include/spdlog/sinks/stdout_color_sinks.h +49 -0
  464. mqt/core/include/spdlog/sinks/stdout_sinks-inl.h +127 -0
  465. mqt/core/include/spdlog/sinks/stdout_sinks.h +84 -0
  466. mqt/core/include/spdlog/sinks/syslog_sink.h +104 -0
  467. mqt/core/include/spdlog/sinks/systemd_sink.h +121 -0
  468. mqt/core/include/spdlog/sinks/tcp_sink.h +75 -0
  469. mqt/core/include/spdlog/sinks/udp_sink.h +69 -0
  470. mqt/core/include/spdlog/sinks/win_eventlog_sink.h +260 -0
  471. mqt/core/include/spdlog/sinks/wincolor_sink-inl.h +172 -0
  472. mqt/core/include/spdlog/sinks/wincolor_sink.h +82 -0
  473. mqt/core/include/spdlog/spdlog-inl.h +96 -0
  474. mqt/core/include/spdlog/spdlog.h +357 -0
  475. mqt/core/include/spdlog/stopwatch.h +66 -0
  476. mqt/core/include/spdlog/tweakme.h +148 -0
  477. mqt/core/include/spdlog/version.h +11 -0
  478. mqt/core/ir/__init__.pyi +2078 -0
  479. mqt/core/ir/operations.pyi +1011 -0
  480. mqt/core/ir/registers.pyi +91 -0
  481. mqt/core/ir/symbolic.pyi +177 -0
  482. mqt/core/ir.cp312-win_amd64.pyd +0 -0
  483. mqt/core/lib/mqt-core-algorithms.lib +0 -0
  484. mqt/core/lib/mqt-core-circuit-optimizer.lib +0 -0
  485. mqt/core/lib/mqt-core-dd.lib +0 -0
  486. mqt/core/lib/mqt-core-ds.lib +0 -0
  487. mqt/core/lib/mqt-core-fomac.lib +0 -0
  488. mqt/core/lib/mqt-core-ir.lib +0 -0
  489. mqt/core/lib/mqt-core-na-fomac.lib +0 -0
  490. mqt/core/lib/mqt-core-na.lib +0 -0
  491. mqt/core/lib/mqt-core-qasm.lib +0 -0
  492. mqt/core/lib/mqt-core-qdmi-driver.lib +0 -0
  493. mqt/core/lib/mqt-core-qdmi-na-device-gen.lib +0 -0
  494. mqt/core/lib/mqt-core-qdmi-na-device.lib +0 -0
  495. mqt/core/lib/mqt-core-zx.lib +0 -0
  496. mqt/core/lib/pkgconfig/spdlog.pc +13 -0
  497. mqt/core/lib/spdlog.lib +0 -0
  498. mqt/core/na/__init__.py +12 -0
  499. mqt/core/na/fomac.cp312-win_amd64.pyd +0 -0
  500. mqt/core/na/fomac.pyi +117 -0
  501. mqt/core/nlohmann_json.natvis +278 -0
  502. mqt/core/plugins/__init__.py +9 -0
  503. mqt/core/plugins/qiskit/__init__.py +19 -0
  504. mqt/core/plugins/qiskit/mqt_to_qiskit.py +420 -0
  505. mqt/core/plugins/qiskit/qiskit_to_mqt.py +562 -0
  506. mqt/core/py.typed +2 -0
  507. mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +55 -0
  508. mqt/core/share/cmake/mqt-core/Cache.cmake +33 -0
  509. mqt/core/share/cmake/mqt-core/FindGMP.cmake +103 -0
  510. mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +46 -0
  511. mqt/core/share/cmake/mqt-core/PreventInSourceBuilds.cmake +25 -0
  512. mqt/core/share/cmake/mqt-core/StandardProjectSettings.cmake +87 -0
  513. mqt/core/share/cmake/mqt-core/mqt-core-config-version.cmake +85 -0
  514. mqt/core/share/cmake/mqt-core/mqt-core-config.cmake +52 -0
  515. mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +141 -0
  516. mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +445 -0
  517. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfig.cmake +15 -0
  518. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfigVersion.cmake +20 -0
  519. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonTargets.cmake +110 -0
  520. mqt/core/share/cmake/qdmi/Cache.cmake +44 -0
  521. mqt/core/share/cmake/qdmi/PrefixHandling.cmake +78 -0
  522. mqt/core/share/cmake/qdmi/prefix_defs.txt +26 -0
  523. mqt/core/share/cmake/qdmi/qdmi-config-version.cmake +85 -0
  524. mqt/core/share/cmake/qdmi/qdmi-config.cmake +42 -0
  525. mqt/core/share/cmake/qdmi/qdmi-targets.cmake +129 -0
  526. mqt/core/share/cmake/spdlog/spdlogConfig.cmake +44 -0
  527. mqt/core/share/cmake/spdlog/spdlogConfigTargets-release.cmake +19 -0
  528. mqt/core/share/cmake/spdlog/spdlogConfigTargets.cmake +121 -0
  529. mqt/core/share/cmake/spdlog/spdlogConfigVersion.cmake +65 -0
  530. mqt/core/share/pkgconfig/nlohmann_json.pc +7 -0
  531. mqt_core-3.3.2.dist-info/DELVEWHEEL +2 -0
  532. mqt_core-3.3.2.dist-info/METADATA +210 -0
  533. mqt_core-3.3.2.dist-info/RECORD +537 -0
  534. mqt_core-3.3.2.dist-info/WHEEL +5 -0
  535. mqt_core-3.3.2.dist-info/entry_points.txt +4 -0
  536. mqt_core-3.3.2.dist-info/licenses/LICENSE.md +22 -0
  537. mqt_core.libs/msvcp140.dll +0 -0
@@ -0,0 +1,562 @@
1
+ # Copyright (c) 2023 - 2025 Chair for Design Automation, TUM
2
+ # Copyright (c) 2025 Munich Quantum Software Company GmbH
3
+ # All rights reserved.
4
+ #
5
+ # SPDX-License-Identifier: MIT
6
+ #
7
+ # Licensed under the MIT License
8
+
9
+ """Functionality for translating from Qiskit to the MQT."""
10
+
11
+ from __future__ import annotations
12
+
13
+ import re
14
+ import warnings
15
+ from typing import TYPE_CHECKING, cast
16
+
17
+ from qiskit.circuit import AncillaRegister, Clbit
18
+ from qiskit.circuit import ClassicalRegister as QiskitClassicalRegister
19
+ from qiskit.circuit.classical import expr
20
+
21
+ from ...ir import QuantumComputation
22
+ from ...ir.operations import (
23
+ ComparisonKind,
24
+ CompoundOperation,
25
+ Control,
26
+ IfElseOperation,
27
+ NonUnitaryOperation,
28
+ OpType,
29
+ StandardOperation,
30
+ SymbolicOperation,
31
+ )
32
+ from ...ir.symbolic import Expression, Term, Variable
33
+
34
+ if TYPE_CHECKING:
35
+ from collections.abc import Mapping, Sequence
36
+
37
+ from qiskit.circuit import IfElseOp, Instruction, ParameterExpression, QuantumCircuit, Qubit
38
+
39
+ from ...ir.operations import Operation
40
+ from ...ir.registers import ClassicalRegister
41
+
42
+
43
+ __all__ = ["qiskit_to_mqt"]
44
+
45
+
46
+ def __dir__() -> list[str]:
47
+ return __all__
48
+
49
+
50
+ def qiskit_to_mqt(circ: QuantumCircuit) -> QuantumComputation:
51
+ """Convert a Qiskit :class:`~qiskit.circuit.QuantumCircuit` to a :class:`~mqt.core.ir.QuantumComputation` object.
52
+
53
+ Args:
54
+ circ: The Qiskit circuit to convert.
55
+
56
+ Returns:
57
+ The converted circuit.
58
+ """
59
+ qc = QuantumComputation()
60
+
61
+ if circ.name is not None:
62
+ qc.name = circ.name
63
+
64
+ qubit_index = 0
65
+ qubit_map: dict[Qubit, int] = {}
66
+ for reg in circ.qregs:
67
+ size = reg.size
68
+ if size == 0:
69
+ continue
70
+ if isinstance(reg, AncillaRegister):
71
+ qc.add_ancillary_register(size, reg.name)
72
+ else:
73
+ qc.add_qubit_register(size, reg.name)
74
+ for qubit in reg:
75
+ qubit_map[qubit] = qubit_index
76
+ qubit_index += 1
77
+
78
+ clbit_index = 0
79
+ clbit_map: dict[Clbit, int] = {}
80
+ for reg in circ.cregs:
81
+ size = reg.size
82
+ if size == 0:
83
+ continue
84
+ qc.add_classical_register(size, reg.name)
85
+ for bit in reg:
86
+ clbit_map[bit] = clbit_index
87
+ clbit_index += 1
88
+
89
+ try:
90
+ qc.global_phase = circ.global_phase
91
+ except TypeError:
92
+ warnings.warn(
93
+ "Symbolic global phase values are not supported yet. Setting global phase to 0.",
94
+ RuntimeWarning,
95
+ stacklevel=2,
96
+ )
97
+ qc.global_phase = 0
98
+
99
+ for instruction in circ.data:
100
+ symb_params = _emplace_operation(
101
+ qc,
102
+ instruction.operation,
103
+ instruction.qubits,
104
+ instruction.clbits,
105
+ instruction.operation.params,
106
+ qubit_map,
107
+ clbit_map,
108
+ qc.cregs,
109
+ )
110
+ for symb_param in symb_params:
111
+ qc.add_variable(symb_param)
112
+
113
+ # import initial layout and output permutation if available
114
+ if circ.layout is not None:
115
+ _import_layouts(qc, circ)
116
+
117
+ qc.initialize_io_mapping()
118
+ return qc
119
+
120
+
121
+ _NATIVELY_SUPPORTED_GATES = frozenset({
122
+ "i",
123
+ "id",
124
+ "iden",
125
+ "x",
126
+ "y",
127
+ "z",
128
+ "h",
129
+ "s",
130
+ "sdg",
131
+ "t",
132
+ "tdg",
133
+ "p",
134
+ "u1",
135
+ "r",
136
+ "rx",
137
+ "ry",
138
+ "rz",
139
+ "u2",
140
+ "u",
141
+ "u3",
142
+ "cx",
143
+ "cy",
144
+ "cz",
145
+ "cs",
146
+ "csdg",
147
+ "cp",
148
+ "cu1",
149
+ "ch",
150
+ "crx",
151
+ "cry",
152
+ "crz",
153
+ "cu3",
154
+ "ccx",
155
+ "swap",
156
+ "cswap",
157
+ "iswap",
158
+ "sx",
159
+ "sxdg",
160
+ "csx",
161
+ "mcx",
162
+ # we keep the "mcx_*" variants here for compatibility with Qiskit 1.x
163
+ "mcx_gray",
164
+ "mcx_recursive",
165
+ "mcx_vchain",
166
+ "mcphase",
167
+ "mcrx",
168
+ "mcry",
169
+ "mcrz",
170
+ "dcx",
171
+ "ecr",
172
+ "rxx",
173
+ "ryy",
174
+ "rzx",
175
+ "rzz",
176
+ "xx_minus_yy",
177
+ "xx_plus_yy",
178
+ "if_else",
179
+ "reset",
180
+ "barrier",
181
+ "measure",
182
+ })
183
+
184
+
185
+ def _emplace_operation(
186
+ qc: QuantumComputation | CompoundOperation,
187
+ instr: Instruction,
188
+ qargs: Sequence[Qubit],
189
+ cargs: Sequence[Clbit],
190
+ params: Sequence[float | ParameterExpression],
191
+ qubit_map: Mapping[Qubit, int],
192
+ clbit_map: Mapping[Clbit, int],
193
+ cregs: Mapping[str, ClassicalRegister],
194
+ ) -> list[float | ParameterExpression]:
195
+ name = instr.name
196
+
197
+ if name not in _NATIVELY_SUPPORTED_GATES:
198
+ try:
199
+ return _import_definition(qc, instr.definition, qargs, cargs, qubit_map, clbit_map, cregs)
200
+ except Exception as ex: # PRAGMA: NO COVER
201
+ msg = f"Unsupported gate {name} with definition {instr.definition}"
202
+ raise NotImplementedError(msg) from ex
203
+
204
+ qubits = [qubit_map[qubit] for qubit in qargs]
205
+
206
+ if name == "measure":
207
+ clbits = [clbit_map[clbit] for clbit in cargs]
208
+ qc.append(NonUnitaryOperation(qubits, clbits))
209
+ return []
210
+
211
+ if name == "reset":
212
+ qc.append(NonUnitaryOperation(qubits))
213
+ return []
214
+
215
+ if name == "barrier":
216
+ qc.append(StandardOperation(qubits, OpType.barrier))
217
+ return []
218
+
219
+ if name in {"i", "id", "iden"}:
220
+ return _add_operation(qc, OpType.i, qargs, params, qubit_map)
221
+
222
+ # we keep "mcx_gray" here for compatibility reasons with older Qiskit versions, e.g., 1.0.0 where "noancilla"
223
+ # is the default for the argument "mode" which leads to the gate name "gray_code"
224
+ if name in {"x", "cx", "ccx", "mcx", "mcx_gray"}:
225
+ return _add_operation(qc, OpType.x, qargs, params, qubit_map)
226
+
227
+ if name in {"y", "cy"}:
228
+ return _add_operation(qc, OpType.y, qargs, params, qubit_map)
229
+
230
+ if name in {"z", "cz"}:
231
+ return _add_operation(qc, OpType.z, qargs, params, qubit_map)
232
+
233
+ if name in {"h", "ch"}:
234
+ return _add_operation(qc, OpType.h, qargs, params, qubit_map)
235
+
236
+ if name in {"s", "cs"}:
237
+ return _add_operation(qc, OpType.s, qargs, params, qubit_map)
238
+
239
+ if name in {"sdg", "csdg"}:
240
+ return _add_operation(qc, OpType.sdg, qargs, params, qubit_map)
241
+
242
+ if name == "t":
243
+ return _add_operation(qc, OpType.t, qargs, params, qubit_map)
244
+
245
+ if name == "tdg":
246
+ return _add_operation(qc, OpType.tdg, qargs, params, qubit_map)
247
+
248
+ if name in {"sx", "csx"}:
249
+ return _add_operation(qc, OpType.sx, qargs, params, qubit_map)
250
+
251
+ if name == "sxdg":
252
+ return _add_operation(qc, OpType.sxdg, qargs, params, qubit_map)
253
+
254
+ if name == "mcx_recursive":
255
+ if len(qargs) <= 5:
256
+ return _add_operation(qc, OpType.x, qargs, params, qubit_map)
257
+ # reconfigure controls and targets (drops the last qubit as ancilla)
258
+ qargs = qargs[:-1]
259
+ return _add_operation(qc, OpType.x, qargs, params, qubit_map)
260
+
261
+ if name == "mcx_vchain":
262
+ size = len(qargs)
263
+ num_controls = (size + 1) // 2
264
+ # reconfigure controls and targets (drops the last num_controls - 2 qubits as ancilla)
265
+ if num_controls > 2:
266
+ qargs = qargs[: -num_controls + 2]
267
+ return _add_operation(qc, OpType.x, qargs, params, qubit_map)
268
+
269
+ if name in {"r", "prx"}:
270
+ return _add_operation(qc, OpType.r, qargs, params, qubit_map)
271
+
272
+ if name in {"rx", "crx", "mcrx"}:
273
+ return _add_operation(qc, OpType.rx, qargs, params, qubit_map)
274
+
275
+ if name in {"ry", "cry", "mcry"}:
276
+ return _add_operation(qc, OpType.ry, qargs, params, qubit_map)
277
+
278
+ if name in {"rz", "crz", "mcrz"}:
279
+ return _add_operation(qc, OpType.rz, qargs, params, qubit_map)
280
+
281
+ if name in {"p", "u1", "cp", "cu1", "mcphase"}:
282
+ return _add_operation(qc, OpType.p, qargs, params, qubit_map)
283
+
284
+ if name == "u2":
285
+ return _add_operation(qc, OpType.u2, qargs, params, qubit_map)
286
+
287
+ if name in {"u", "u3", "cu3"}:
288
+ return _add_operation(qc, OpType.u, qargs, params, qubit_map)
289
+
290
+ if name in {"swap", "cswap"}:
291
+ return _add_two_target_operation(qc, OpType.swap, qargs, params, qubit_map)
292
+
293
+ if name == "iswap":
294
+ return _add_two_target_operation(qc, OpType.iswap, qargs, params, qubit_map)
295
+
296
+ if name == "dcx":
297
+ return _add_two_target_operation(qc, OpType.dcx, qargs, params, qubit_map)
298
+
299
+ if name == "ecr":
300
+ return _add_two_target_operation(qc, OpType.ecr, qargs, params, qubit_map)
301
+
302
+ if name == "rxx":
303
+ return _add_two_target_operation(qc, OpType.rxx, qargs, params, qubit_map)
304
+
305
+ if name == "ryy":
306
+ return _add_two_target_operation(qc, OpType.ryy, qargs, params, qubit_map)
307
+
308
+ if name == "rzz":
309
+ return _add_two_target_operation(qc, OpType.rzz, qargs, params, qubit_map)
310
+
311
+ if name == "rzx":
312
+ return _add_two_target_operation(qc, OpType.rzx, qargs, params, qubit_map)
313
+
314
+ if name == "xx_minus_yy":
315
+ return _add_two_target_operation(qc, OpType.xx_minus_yy, qargs, params, qubit_map)
316
+
317
+ if name == "xx_plus_yy":
318
+ return _add_two_target_operation(qc, OpType.xx_plus_yy, qargs, params, qubit_map)
319
+
320
+ if name == "if_else":
321
+ return _add_if_else_operation(qc, instr, qargs, cargs, qubit_map, clbit_map, cregs)
322
+
323
+ msg = f"Unsupported gate {name}" # pragma: no cover
324
+ raise NotImplementedError(msg)
325
+
326
+
327
+ _SUM_REGEX = re.compile(r"[+|-]?[^+-]+")
328
+ _PROD_REGEX = re.compile(r"[*/]?[^*/]+")
329
+
330
+
331
+ def _parse_symbolic_expression(qiskit_expr: ParameterExpression | float) -> float | Expression:
332
+ if isinstance(qiskit_expr, float):
333
+ return qiskit_expr
334
+
335
+ expr_str = str(qiskit_expr).strip()
336
+ expr = Expression()
337
+ is_const = True
338
+ for summand in _SUM_REGEX.findall(expr_str):
339
+ sign = 1
340
+ summand_no_operator = summand
341
+ if summand[0] == "+":
342
+ summand_no_operator = summand[1:]
343
+ elif summand[0] == "-":
344
+ summand_no_operator = summand[1:]
345
+ sign = -1
346
+
347
+ coeff = 1.0
348
+ var = ""
349
+ for factor in _PROD_REGEX.findall(summand_no_operator):
350
+ is_div = False
351
+ factor_no_operator = factor
352
+ if factor[0] == "*":
353
+ factor_no_operator = factor[1:]
354
+ elif factor[0] == "/":
355
+ factor_no_operator = factor[1:]
356
+ is_div = True
357
+
358
+ factor_no_operator = factor_no_operator.strip()
359
+ if factor_no_operator.replace(".", "").isnumeric():
360
+ f = float(factor_no_operator)
361
+ coeff *= 1.0 / f if is_div else f
362
+ else:
363
+ var = factor_no_operator
364
+
365
+ if not var:
366
+ expr += coeff
367
+ else:
368
+ is_const = False
369
+ expr += Term(Variable(var), sign * coeff)
370
+
371
+ if is_const:
372
+ return expr.constant
373
+ return expr
374
+
375
+
376
+ def _add_operation(
377
+ qc: QuantumComputation | CompoundOperation,
378
+ type_: OpType,
379
+ qargs: Sequence[Qubit],
380
+ params: Sequence[float | ParameterExpression],
381
+ qubit_map: Mapping[Qubit, int],
382
+ ) -> list[float | ParameterExpression]:
383
+ qubits = [qubit_map[qubit] for qubit in qargs]
384
+ target = qubits.pop()
385
+ controls = {Control(qubit) for qubit in qubits}
386
+ parameters = [_parse_symbolic_expression(param) for param in params]
387
+ if any(isinstance(parameter, Expression) for parameter in parameters):
388
+ qc.append(SymbolicOperation(controls, target, type_, parameters))
389
+ else:
390
+ qc.append(StandardOperation(controls, target, type_, cast("list[float]", parameters)))
391
+ return parameters
392
+
393
+
394
+ def _add_two_target_operation(
395
+ qc: QuantumComputation | CompoundOperation,
396
+ type_: OpType,
397
+ qargs: Sequence[Qubit],
398
+ params: Sequence[float | ParameterExpression],
399
+ qubit_map: Mapping[Qubit, int],
400
+ ) -> list[float | ParameterExpression]:
401
+ qubits = [qubit_map[qubit] for qubit in qargs]
402
+ target2 = qubits.pop()
403
+ target1 = qubits.pop()
404
+ controls = {Control(qubit) for qubit in qubits}
405
+ parameters = [_parse_symbolic_expression(param) for param in params]
406
+ if any(isinstance(parameter, Expression) for parameter in parameters):
407
+ qc.append(SymbolicOperation(controls, target1, target2, type_, parameters))
408
+ else:
409
+ qc.append(StandardOperation(controls, target1, target2, type_, cast("list[float]", parameters)))
410
+ return parameters
411
+
412
+
413
+ def _add_if_else_operation(
414
+ qc: QuantumComputation | CompoundOperation,
415
+ if_else_op: IfElseOp,
416
+ qargs: Sequence[Qubit],
417
+ cargs: Sequence[Clbit],
418
+ qubit_map: Mapping[Qubit, int],
419
+ clbit_map: Mapping[Clbit, int],
420
+ cregs: Mapping[str, ClassicalRegister],
421
+ ) -> list[float | ParameterExpression]:
422
+ then_operation_compound = CompoundOperation()
423
+ then_params = _import_definition(
424
+ then_operation_compound,
425
+ if_else_op.params[0],
426
+ qargs,
427
+ cargs,
428
+ qubit_map,
429
+ clbit_map,
430
+ cregs,
431
+ )
432
+ then_operation: Operation = then_operation_compound[0]
433
+ if isinstance(then_operation, CompoundOperation) and len(then_operation) == 1:
434
+ then_operation = then_operation[0]
435
+
436
+ else_operation: Operation | None = None
437
+ else_params: list[float | ParameterExpression] = []
438
+ if if_else_op.params[1] is not None:
439
+ else_operation_compound = CompoundOperation()
440
+ else_params = _import_definition(
441
+ else_operation_compound,
442
+ if_else_op.params[1],
443
+ qargs,
444
+ cargs,
445
+ qubit_map,
446
+ clbit_map,
447
+ cregs,
448
+ )
449
+ else_operation = else_operation_compound[0]
450
+ if isinstance(else_operation, CompoundOperation) and len(else_operation) == 1:
451
+ else_operation = else_operation[0]
452
+
453
+ condition = if_else_op.condition
454
+ if isinstance(condition, tuple):
455
+ assert len(condition) == 2
456
+ classical_control = condition[0]
457
+ expected_value = condition[1]
458
+ comparison_kind = ComparisonKind.eq
459
+ else:
460
+ assert isinstance(condition, expr.Binary)
461
+ classical_control = condition.left.var
462
+ expected_value = condition.right.value
463
+ if condition.op == expr.Binary.Op.EQUAL:
464
+ comparison_kind = ComparisonKind.eq
465
+ elif condition.op == expr.Binary.Op.NOT_EQUAL:
466
+ comparison_kind = ComparisonKind.neq
467
+ elif condition.op == expr.Binary.Op.LESS:
468
+ comparison_kind = ComparisonKind.lt
469
+ elif condition.op == expr.Binary.Op.LESS_EQUAL:
470
+ comparison_kind = ComparisonKind.leq
471
+ elif condition.op == expr.Binary.Op.GREATER:
472
+ comparison_kind = ComparisonKind.gt
473
+ elif condition.op == expr.Binary.Op.GREATER_EQUAL:
474
+ comparison_kind = ComparisonKind.geq
475
+ else:
476
+ msg = f"Unsupported binary operation {condition.op}"
477
+ raise TypeError(msg)
478
+
479
+ if isinstance(classical_control, Clbit):
480
+ if_else_operation = IfElseOperation(
481
+ then_operation,
482
+ else_operation,
483
+ clbit_map[classical_control],
484
+ bool(expected_value),
485
+ comparison_kind,
486
+ )
487
+ else:
488
+ assert isinstance(classical_control, QiskitClassicalRegister)
489
+ if_else_operation = IfElseOperation(
490
+ then_operation,
491
+ else_operation,
492
+ cregs[classical_control.name],
493
+ int(expected_value),
494
+ comparison_kind,
495
+ )
496
+ qc.append(if_else_operation)
497
+
498
+ return then_params + else_params
499
+
500
+
501
+ def _import_layouts(qc: QuantumComputation, circ: QuantumCircuit) -> None:
502
+ qc.initial_layout.clear()
503
+ initial_index_layout = circ.layout.initial_index_layout()
504
+ for virtual, physical in enumerate(initial_index_layout):
505
+ qc.initial_layout[physical] = virtual
506
+
507
+ # Properly mark ancillary qubits
508
+ for register in circ.layout.initial_layout.get_registers():
509
+ if register.name != "ancilla" and not isinstance(register, AncillaRegister):
510
+ continue
511
+ for qubit in reversed(register):
512
+ physical_qubit = circ.layout.initial_layout[qubit]
513
+ virtual_qubit = qc.initial_layout[physical_qubit]
514
+ qc.set_circuit_qubit_ancillary(virtual_qubit)
515
+
516
+ if circ.layout.final_layout is None:
517
+ qc.output_permutation = qc.initial_layout
518
+ return
519
+
520
+ qc.output_permutation.clear()
521
+ final_index_layout = circ.layout.final_index_layout()
522
+ for virtual, physical in enumerate(final_index_layout):
523
+ qc.output_permutation[physical] = virtual
524
+
525
+ # Properly mark garbage qubits
526
+ # Any qubit in the initial layout that is not in the final layout is garbage
527
+ for virtual_qubit in range(len(final_index_layout), len(initial_index_layout)):
528
+ qc.set_circuit_qubit_garbage(virtual_qubit)
529
+
530
+
531
+ def _import_definition(
532
+ qc: QuantumComputation | CompoundOperation,
533
+ circ: QuantumCircuit,
534
+ qargs: Sequence[Qubit],
535
+ cargs: Sequence[Clbit],
536
+ qubit_map: Mapping[Qubit, int],
537
+ clbit_map: Mapping[Clbit, int],
538
+ cregs: Mapping[str, ClassicalRegister],
539
+ ) -> list[float | ParameterExpression]:
540
+ qarg_map = dict(zip(circ.qubits, qargs, strict=False))
541
+ carg_map = dict(zip(circ.clbits, cargs, strict=False))
542
+
543
+ qc.append(CompoundOperation())
544
+ comp_op = cast("CompoundOperation", qc[-1])
545
+
546
+ params = []
547
+ for instruction in circ.data:
548
+ mapped_qargs = [qarg_map[qarg] for qarg in instruction.qubits]
549
+ mapped_cargs = [carg_map[carg] for carg in instruction.clbits]
550
+ operation = instruction.operation
551
+ new_params = _emplace_operation(
552
+ comp_op,
553
+ operation,
554
+ mapped_qargs,
555
+ mapped_cargs,
556
+ operation.params,
557
+ qubit_map,
558
+ clbit_map,
559
+ cregs,
560
+ )
561
+ params.extend(new_params)
562
+ return params
mqt/core/py.typed ADDED
@@ -0,0 +1,2 @@
1
+ # Instruct type checkers to look for inline type annotations in this package.
2
+ # See PEP 561.
@@ -0,0 +1,55 @@
1
+ # Copyright (c) 2023 - 2025 Chair for Design Automation, TUM
2
+ # Copyright (c) 2025 Munich Quantum Software Company GmbH
3
+ # All rights reserved.
4
+ #
5
+ # SPDX-License-Identifier: MIT
6
+ #
7
+ # Licensed under the MIT License
8
+
9
+ function(add_mqt_python_binding package_name target_name)
10
+ # parse the arguments
11
+ cmake_parse_arguments(ARG "" "MODULE_NAME;INSTALL_DIR" "LINK_LIBS" ${ARGN})
12
+ set(SOURCES ${ARG_UNPARSED_ARGUMENTS})
13
+
14
+ # declare the Python module
15
+ pybind11_add_module(
16
+ # name of the extension
17
+ ${target_name}
18
+ # Pprefer thin LTO if available
19
+ THIN_LTO
20
+ # optimize the bindings for size
21
+ OPT_SIZE
22
+ # source code goes here
23
+ ${SOURCES})
24
+
25
+ # set default "." for INSTALL_DIR
26
+ if(NOT ARG_INSTALL_DIR)
27
+ set(ARG_INSTALL_DIR ".")
28
+ endif()
29
+
30
+ if(ARG_MODULE_NAME)
31
+ # the library name must be the same as the module name
32
+ set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${ARG_MODULE_NAME})
33
+ target_compile_definitions(${target_name}
34
+ PRIVATE MQT_${package_name}_MODULE_NAME=${ARG_MODULE_NAME})
35
+ else()
36
+ # use the target name as the module name
37
+ target_compile_definitions(${target_name}
38
+ PRIVATE MQT_${package_name}_MODULE_NAME=${target_name})
39
+ endif()
40
+
41
+ # add project libraries to the link libraries
42
+ list(APPEND ARG_LINK_LIBS MQT::ProjectOptions MQT::ProjectWarnings)
43
+
44
+ # Set c++ standard
45
+ target_compile_features(${target_name} PRIVATE cxx_std_20)
46
+
47
+ # link the required libraries
48
+ target_link_libraries(${target_name} PRIVATE ${ARG_LINK_LIBS})
49
+
50
+ # install directive for scikit-build-core
51
+ install(
52
+ TARGETS ${target_name}
53
+ DESTINATION ${ARG_INSTALL_DIR}
54
+ COMPONENT ${MQT_${package_name}_TARGET_NAME}_Python)
55
+ endfunction()
@@ -0,0 +1,33 @@
1
+ # Copyright (c) 2023 - 2025 Chair for Design Automation, TUM
2
+ # Copyright (c) 2025 Munich Quantum Software Company GmbH
3
+ # All rights reserved.
4
+ #
5
+ # SPDX-License-Identifier: MIT
6
+ #
7
+ # Licensed under the MIT License
8
+
9
+ option(ENABLE_CACHE "Enable compiler cache if available" ON)
10
+ if(NOT ENABLE_CACHE)
11
+ return()
12
+ endif()
13
+
14
+ # Check for available cache programs, preferring sccache
15
+ find_program(SCCACHE_BINARY sccache)
16
+ find_program(CCACHE_BINARY ccache)
17
+
18
+ if(SCCACHE_BINARY)
19
+ set(CACHE_OPTION "sccache")
20
+ set(CACHE_BINARY ${SCCACHE_BINARY})
21
+ message(STATUS "Compiler cache 'sccache' found and enabled")
22
+ elseif(CCACHE_BINARY)
23
+ set(CACHE_OPTION "ccache")
24
+ set(CACHE_BINARY ${CCACHE_BINARY})
25
+ message(STATUS "Compiler cache 'ccache' found and enabled")
26
+ else()
27
+ set(CACHE_OPTION_VALUES "ccache" "sccache")
28
+ message(NOTICE "No compiler cache found. Checked for: ${CACHE_OPTION_VALUES}")
29
+ return()
30
+ endif()
31
+
32
+ set(CMAKE_C_COMPILER_LAUNCHER ${CACHE_BINARY})
33
+ set(CMAKE_CXX_COMPILER_LAUNCHER ${CACHE_BINARY})