mqt-core 3.3.0__cp314-cp314-macosx_11_0_x86_64.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.

Potentially problematic release.


This version of mqt-core might be problematic. Click here for more details.

Files changed (546) hide show
  1. mqt/core/__init__.py +77 -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/dd.cpython-314-darwin.so +0 -0
  9. mqt/core/dd.pyi +1016 -0
  10. mqt/core/dd_evaluation.py +368 -0
  11. mqt/core/fomac.cpython-314-darwin.so +0 -0
  12. mqt/core/fomac.pyi +125 -0
  13. mqt/core/include/mqt-core/algorithms/BernsteinVazirani.hpp +39 -0
  14. mqt/core/include/mqt-core/algorithms/GHZState.hpp +18 -0
  15. mqt/core/include/mqt-core/algorithms/Grover.hpp +33 -0
  16. mqt/core/include/mqt-core/algorithms/QFT.hpp +21 -0
  17. mqt/core/include/mqt-core/algorithms/QPE.hpp +30 -0
  18. mqt/core/include/mqt-core/algorithms/RandomCliffordCircuit.hpp +22 -0
  19. mqt/core/include/mqt-core/algorithms/StatePreparation.hpp +43 -0
  20. mqt/core/include/mqt-core/algorithms/WState.hpp +18 -0
  21. mqt/core/include/mqt-core/algorithms/mqt_core_algorithms_export.h +43 -0
  22. mqt/core/include/mqt-core/boost/config/abi/borland_prefix.hpp +27 -0
  23. mqt/core/include/mqt-core/boost/config/abi/borland_suffix.hpp +12 -0
  24. mqt/core/include/mqt-core/boost/config/abi/msvc_prefix.hpp +22 -0
  25. mqt/core/include/mqt-core/boost/config/abi/msvc_suffix.hpp +8 -0
  26. mqt/core/include/mqt-core/boost/config/abi_prefix.hpp +25 -0
  27. mqt/core/include/mqt-core/boost/config/abi_suffix.hpp +25 -0
  28. mqt/core/include/mqt-core/boost/config/assert_cxx03.hpp +211 -0
  29. mqt/core/include/mqt-core/boost/config/assert_cxx11.hpp +212 -0
  30. mqt/core/include/mqt-core/boost/config/assert_cxx14.hpp +47 -0
  31. mqt/core/include/mqt-core/boost/config/assert_cxx17.hpp +65 -0
  32. mqt/core/include/mqt-core/boost/config/assert_cxx20.hpp +59 -0
  33. mqt/core/include/mqt-core/boost/config/assert_cxx23.hpp +41 -0
  34. mqt/core/include/mqt-core/boost/config/assert_cxx98.hpp +23 -0
  35. mqt/core/include/mqt-core/boost/config/auto_link.hpp +525 -0
  36. mqt/core/include/mqt-core/boost/config/compiler/borland.hpp +342 -0
  37. mqt/core/include/mqt-core/boost/config/compiler/clang.hpp +370 -0
  38. mqt/core/include/mqt-core/boost/config/compiler/clang_version.hpp +89 -0
  39. mqt/core/include/mqt-core/boost/config/compiler/codegear.hpp +389 -0
  40. mqt/core/include/mqt-core/boost/config/compiler/comeau.hpp +59 -0
  41. mqt/core/include/mqt-core/boost/config/compiler/common_edg.hpp +185 -0
  42. mqt/core/include/mqt-core/boost/config/compiler/compaq_cxx.hpp +19 -0
  43. mqt/core/include/mqt-core/boost/config/compiler/cray.hpp +446 -0
  44. mqt/core/include/mqt-core/boost/config/compiler/diab.hpp +26 -0
  45. mqt/core/include/mqt-core/boost/config/compiler/digitalmars.hpp +146 -0
  46. mqt/core/include/mqt-core/boost/config/compiler/gcc.hpp +386 -0
  47. mqt/core/include/mqt-core/boost/config/compiler/gcc_xml.hpp +115 -0
  48. mqt/core/include/mqt-core/boost/config/compiler/greenhills.hpp +28 -0
  49. mqt/core/include/mqt-core/boost/config/compiler/hp_acc.hpp +153 -0
  50. mqt/core/include/mqt-core/boost/config/compiler/intel.hpp +577 -0
  51. mqt/core/include/mqt-core/boost/config/compiler/kai.hpp +33 -0
  52. mqt/core/include/mqt-core/boost/config/compiler/metrowerks.hpp +201 -0
  53. mqt/core/include/mqt-core/boost/config/compiler/mpw.hpp +143 -0
  54. mqt/core/include/mqt-core/boost/config/compiler/nvcc.hpp +64 -0
  55. mqt/core/include/mqt-core/boost/config/compiler/pathscale.hpp +141 -0
  56. mqt/core/include/mqt-core/boost/config/compiler/pgi.hpp +23 -0
  57. mqt/core/include/mqt-core/boost/config/compiler/sgi_mipspro.hpp +29 -0
  58. mqt/core/include/mqt-core/boost/config/compiler/sunpro_cc.hpp +225 -0
  59. mqt/core/include/mqt-core/boost/config/compiler/vacpp.hpp +189 -0
  60. mqt/core/include/mqt-core/boost/config/compiler/visualc.hpp +398 -0
  61. mqt/core/include/mqt-core/boost/config/compiler/xlcpp.hpp +303 -0
  62. mqt/core/include/mqt-core/boost/config/compiler/xlcpp_zos.hpp +174 -0
  63. mqt/core/include/mqt-core/boost/config/detail/cxx_composite.hpp +218 -0
  64. mqt/core/include/mqt-core/boost/config/detail/posix_features.hpp +95 -0
  65. mqt/core/include/mqt-core/boost/config/detail/select_compiler_config.hpp +157 -0
  66. mqt/core/include/mqt-core/boost/config/detail/select_platform_config.hpp +147 -0
  67. mqt/core/include/mqt-core/boost/config/detail/select_stdlib_config.hpp +121 -0
  68. mqt/core/include/mqt-core/boost/config/detail/suffix.hpp +1334 -0
  69. mqt/core/include/mqt-core/boost/config/header_deprecated.hpp +26 -0
  70. mqt/core/include/mqt-core/boost/config/helper_macros.hpp +37 -0
  71. mqt/core/include/mqt-core/boost/config/no_tr1/cmath.hpp +28 -0
  72. mqt/core/include/mqt-core/boost/config/no_tr1/complex.hpp +28 -0
  73. mqt/core/include/mqt-core/boost/config/no_tr1/functional.hpp +28 -0
  74. mqt/core/include/mqt-core/boost/config/no_tr1/memory.hpp +28 -0
  75. mqt/core/include/mqt-core/boost/config/no_tr1/utility.hpp +28 -0
  76. mqt/core/include/mqt-core/boost/config/platform/aix.hpp +33 -0
  77. mqt/core/include/mqt-core/boost/config/platform/amigaos.hpp +15 -0
  78. mqt/core/include/mqt-core/boost/config/platform/beos.hpp +26 -0
  79. mqt/core/include/mqt-core/boost/config/platform/bsd.hpp +83 -0
  80. mqt/core/include/mqt-core/boost/config/platform/cloudabi.hpp +18 -0
  81. mqt/core/include/mqt-core/boost/config/platform/cray.hpp +18 -0
  82. mqt/core/include/mqt-core/boost/config/platform/cygwin.hpp +71 -0
  83. mqt/core/include/mqt-core/boost/config/platform/haiku.hpp +31 -0
  84. mqt/core/include/mqt-core/boost/config/platform/hpux.hpp +87 -0
  85. mqt/core/include/mqt-core/boost/config/platform/irix.hpp +31 -0
  86. mqt/core/include/mqt-core/boost/config/platform/linux.hpp +106 -0
  87. mqt/core/include/mqt-core/boost/config/platform/macos.hpp +87 -0
  88. mqt/core/include/mqt-core/boost/config/platform/qnxnto.hpp +31 -0
  89. mqt/core/include/mqt-core/boost/config/platform/solaris.hpp +31 -0
  90. mqt/core/include/mqt-core/boost/config/platform/symbian.hpp +97 -0
  91. mqt/core/include/mqt-core/boost/config/platform/vms.hpp +25 -0
  92. mqt/core/include/mqt-core/boost/config/platform/vxworks.hpp +422 -0
  93. mqt/core/include/mqt-core/boost/config/platform/wasm.hpp +23 -0
  94. mqt/core/include/mqt-core/boost/config/platform/win32.hpp +90 -0
  95. mqt/core/include/mqt-core/boost/config/platform/zos.hpp +32 -0
  96. mqt/core/include/mqt-core/boost/config/pragma_message.hpp +31 -0
  97. mqt/core/include/mqt-core/boost/config/requires_threads.hpp +92 -0
  98. mqt/core/include/mqt-core/boost/config/stdlib/dinkumware.hpp +324 -0
  99. mqt/core/include/mqt-core/boost/config/stdlib/libcomo.hpp +93 -0
  100. mqt/core/include/mqt-core/boost/config/stdlib/libcpp.hpp +180 -0
  101. mqt/core/include/mqt-core/boost/config/stdlib/libstdcpp3.hpp +482 -0
  102. mqt/core/include/mqt-core/boost/config/stdlib/modena.hpp +79 -0
  103. mqt/core/include/mqt-core/boost/config/stdlib/msl.hpp +98 -0
  104. mqt/core/include/mqt-core/boost/config/stdlib/roguewave.hpp +208 -0
  105. mqt/core/include/mqt-core/boost/config/stdlib/sgi.hpp +168 -0
  106. mqt/core/include/mqt-core/boost/config/stdlib/stlport.hpp +258 -0
  107. mqt/core/include/mqt-core/boost/config/stdlib/vacpp.hpp +74 -0
  108. mqt/core/include/mqt-core/boost/config/stdlib/xlcpp_zos.hpp +61 -0
  109. mqt/core/include/mqt-core/boost/config/user.hpp +133 -0
  110. mqt/core/include/mqt-core/boost/config/warning_disable.hpp +47 -0
  111. mqt/core/include/mqt-core/boost/config/workaround.hpp +305 -0
  112. mqt/core/include/mqt-core/boost/config.hpp +67 -0
  113. mqt/core/include/mqt-core/boost/cstdint.hpp +556 -0
  114. mqt/core/include/mqt-core/boost/cxx11_char_types.hpp +70 -0
  115. mqt/core/include/mqt-core/boost/detail/workaround.hpp +10 -0
  116. mqt/core/include/mqt-core/boost/limits.hpp +146 -0
  117. mqt/core/include/mqt-core/boost/multiprecision/complex128.hpp +24 -0
  118. mqt/core/include/mqt-core/boost/multiprecision/complex_adaptor.hpp +1046 -0
  119. mqt/core/include/mqt-core/boost/multiprecision/concepts/mp_number_archetypes.hpp +257 -0
  120. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/io.hpp +698 -0
  121. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/transcendental.hpp +157 -0
  122. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float.hpp +2297 -0
  123. mqt/core/include/mqt-core/boost/multiprecision/cpp_complex.hpp +12 -0
  124. mqt/core/include/mqt-core/boost/multiprecision/cpp_dec_float.hpp +3690 -0
  125. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add.hpp +368 -0
  126. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add_unsigned.hpp +387 -0
  127. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/bitwise.hpp +889 -0
  128. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/checked.hpp +178 -0
  129. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/comparison.hpp +374 -0
  130. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/cpp_int_config.hpp +161 -0
  131. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/divide.hpp +703 -0
  132. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/import_export.hpp +248 -0
  133. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/intel_intrinsics.hpp +138 -0
  134. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/limits.hpp +282 -0
  135. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/literals.hpp +295 -0
  136. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/misc.hpp +1457 -0
  137. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/multiply.hpp +848 -0
  138. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/serialize.hpp +211 -0
  139. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/value_pack.hpp +42 -0
  140. mqt/core/include/mqt-core/boost/multiprecision/cpp_int.hpp +2360 -0
  141. mqt/core/include/mqt-core/boost/multiprecision/debug_adaptor.hpp +760 -0
  142. mqt/core/include/mqt-core/boost/multiprecision/detail/assert.hpp +29 -0
  143. mqt/core/include/mqt-core/boost/multiprecision/detail/atomic.hpp +62 -0
  144. mqt/core/include/mqt-core/boost/multiprecision/detail/bitscan.hpp +317 -0
  145. mqt/core/include/mqt-core/boost/multiprecision/detail/check_cpp11_config.hpp +64 -0
  146. mqt/core/include/mqt-core/boost/multiprecision/detail/constexpr.hpp +88 -0
  147. mqt/core/include/mqt-core/boost/multiprecision/detail/default_ops.hpp +4052 -0
  148. mqt/core/include/mqt-core/boost/multiprecision/detail/digits.hpp +49 -0
  149. mqt/core/include/mqt-core/boost/multiprecision/detail/dynamic_array.hpp +44 -0
  150. mqt/core/include/mqt-core/boost/multiprecision/detail/empty_value.hpp +87 -0
  151. mqt/core/include/mqt-core/boost/multiprecision/detail/endian.hpp +35 -0
  152. mqt/core/include/mqt-core/boost/multiprecision/detail/et_ops.hpp +1831 -0
  153. mqt/core/include/mqt-core/boost/multiprecision/detail/float128_functions.hpp +95 -0
  154. mqt/core/include/mqt-core/boost/multiprecision/detail/float_string_cvt.hpp +333 -0
  155. mqt/core/include/mqt-core/boost/multiprecision/detail/fpclassify.hpp +101 -0
  156. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/constants.hpp +288 -0
  157. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/pow.hpp +905 -0
  158. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trig.hpp +1058 -0
  159. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trunc.hpp +82 -0
  160. mqt/core/include/mqt-core/boost/multiprecision/detail/generic_interconvert.hpp +687 -0
  161. mqt/core/include/mqt-core/boost/multiprecision/detail/hash.hpp +56 -0
  162. mqt/core/include/mqt-core/boost/multiprecision/detail/integer_ops.hpp +474 -0
  163. mqt/core/include/mqt-core/boost/multiprecision/detail/itos.hpp +39 -0
  164. mqt/core/include/mqt-core/boost/multiprecision/detail/min_max.hpp +106 -0
  165. mqt/core/include/mqt-core/boost/multiprecision/detail/no_et_ops.hpp +661 -0
  166. mqt/core/include/mqt-core/boost/multiprecision/detail/no_exceptions_support.hpp +55 -0
  167. mqt/core/include/mqt-core/boost/multiprecision/detail/number_base.hpp +1656 -0
  168. mqt/core/include/mqt-core/boost/multiprecision/detail/number_compare.hpp +848 -0
  169. mqt/core/include/mqt-core/boost/multiprecision/detail/precision.hpp +313 -0
  170. mqt/core/include/mqt-core/boost/multiprecision/detail/rebind.hpp +19 -0
  171. mqt/core/include/mqt-core/boost/multiprecision/detail/standalone_config.hpp +148 -0
  172. mqt/core/include/mqt-core/boost/multiprecision/detail/static_array.hpp +42 -0
  173. mqt/core/include/mqt-core/boost/multiprecision/detail/string_helpers.hpp +48 -0
  174. mqt/core/include/mqt-core/boost/multiprecision/detail/tables.hpp +80 -0
  175. mqt/core/include/mqt-core/boost/multiprecision/detail/ublas_interop.hpp +75 -0
  176. mqt/core/include/mqt-core/boost/multiprecision/detail/uniform_int_distribution.hpp +212 -0
  177. mqt/core/include/mqt-core/boost/multiprecision/detail/utype_helper.hpp +374 -0
  178. mqt/core/include/mqt-core/boost/multiprecision/eigen.hpp +248 -0
  179. mqt/core/include/mqt-core/boost/multiprecision/float128.hpp +920 -0
  180. mqt/core/include/mqt-core/boost/multiprecision/fwd.hpp +268 -0
  181. mqt/core/include/mqt-core/boost/multiprecision/gmp.hpp +4060 -0
  182. mqt/core/include/mqt-core/boost/multiprecision/integer.hpp +363 -0
  183. mqt/core/include/mqt-core/boost/multiprecision/logged_adaptor.hpp +834 -0
  184. mqt/core/include/mqt-core/boost/multiprecision/miller_rabin.hpp +221 -0
  185. mqt/core/include/mqt-core/boost/multiprecision/mpc.hpp +1721 -0
  186. mqt/core/include/mqt-core/boost/multiprecision/mpfi.hpp +2559 -0
  187. mqt/core/include/mqt-core/boost/multiprecision/mpfr.hpp +3644 -0
  188. mqt/core/include/mqt-core/boost/multiprecision/number.hpp +2500 -0
  189. mqt/core/include/mqt-core/boost/multiprecision/random.hpp +23 -0
  190. mqt/core/include/mqt-core/boost/multiprecision/rational_adaptor.hpp +1289 -0
  191. mqt/core/include/mqt-core/boost/multiprecision/tommath.hpp +1034 -0
  192. mqt/core/include/mqt-core/boost/multiprecision/traits/explicit_conversion.hpp +67 -0
  193. mqt/core/include/mqt-core/boost/multiprecision/traits/extract_exponent_type.hpp +28 -0
  194. mqt/core/include/mqt-core/boost/multiprecision/traits/is_backend.hpp +91 -0
  195. mqt/core/include/mqt-core/boost/multiprecision/traits/is_byte_container.hpp +51 -0
  196. mqt/core/include/mqt-core/boost/multiprecision/traits/is_complex.hpp +22 -0
  197. mqt/core/include/mqt-core/boost/multiprecision/traits/is_convertible_arithmetic.hpp +51 -0
  198. mqt/core/include/mqt-core/boost/multiprecision/traits/is_restricted_conversion.hpp +47 -0
  199. mqt/core/include/mqt-core/boost/multiprecision/traits/is_variable_precision.hpp +25 -0
  200. mqt/core/include/mqt-core/boost/multiprecision/traits/max_digits10.hpp +79 -0
  201. mqt/core/include/mqt-core/boost/multiprecision/traits/std_integer_traits.hpp +90 -0
  202. mqt/core/include/mqt-core/boost/multiprecision/traits/transcendental_reduction_type.hpp +21 -0
  203. mqt/core/include/mqt-core/boost/version.hpp +32 -0
  204. mqt/core/include/mqt-core/circuit_optimizer/CircuitOptimizer.hpp +119 -0
  205. mqt/core/include/mqt-core/circuit_optimizer/mqt_core_circuit_optimizer_export.h +43 -0
  206. mqt/core/include/mqt-core/datastructures/DirectedAcyclicGraph.hpp +117 -0
  207. mqt/core/include/mqt-core/datastructures/DirectedGraph.hpp +158 -0
  208. mqt/core/include/mqt-core/datastructures/DisjointSet.hpp +50 -0
  209. mqt/core/include/mqt-core/datastructures/Layer.hpp +172 -0
  210. mqt/core/include/mqt-core/datastructures/SymmetricMatrix.hpp +57 -0
  211. mqt/core/include/mqt-core/datastructures/UndirectedGraph.hpp +227 -0
  212. mqt/core/include/mqt-core/datastructures/mqt_core_ds_export.h +43 -0
  213. mqt/core/include/mqt-core/dd/Approximation.hpp +45 -0
  214. mqt/core/include/mqt-core/dd/CachedEdge.hpp +174 -0
  215. mqt/core/include/mqt-core/dd/Complex.hpp +165 -0
  216. mqt/core/include/mqt-core/dd/ComplexNumbers.hpp +150 -0
  217. mqt/core/include/mqt-core/dd/ComplexValue.hpp +184 -0
  218. mqt/core/include/mqt-core/dd/ComputeTable.hpp +183 -0
  219. mqt/core/include/mqt-core/dd/DDDefinitions.hpp +139 -0
  220. mqt/core/include/mqt-core/dd/DDpackageConfig.hpp +104 -0
  221. mqt/core/include/mqt-core/dd/DensityNoiseTable.hpp +114 -0
  222. mqt/core/include/mqt-core/dd/Edge.hpp +416 -0
  223. mqt/core/include/mqt-core/dd/Export.hpp +438 -0
  224. mqt/core/include/mqt-core/dd/FunctionalityConstruction.hpp +75 -0
  225. mqt/core/include/mqt-core/dd/GateMatrixDefinitions.hpp +43 -0
  226. mqt/core/include/mqt-core/dd/LinkedListBase.hpp +45 -0
  227. mqt/core/include/mqt-core/dd/MemoryManager.hpp +193 -0
  228. mqt/core/include/mqt-core/dd/Node.hpp +223 -0
  229. mqt/core/include/mqt-core/dd/NoiseFunctionality.hpp +144 -0
  230. mqt/core/include/mqt-core/dd/Operations.hpp +306 -0
  231. mqt/core/include/mqt-core/dd/Package.hpp +2036 -0
  232. mqt/core/include/mqt-core/dd/Package_fwd.hpp +22 -0
  233. mqt/core/include/mqt-core/dd/RealNumber.hpp +255 -0
  234. mqt/core/include/mqt-core/dd/RealNumberUniqueTable.hpp +217 -0
  235. mqt/core/include/mqt-core/dd/Simulation.hpp +98 -0
  236. mqt/core/include/mqt-core/dd/StateGeneration.hpp +143 -0
  237. mqt/core/include/mqt-core/dd/StochasticNoiseOperationTable.hpp +88 -0
  238. mqt/core/include/mqt-core/dd/UnaryComputeTable.hpp +121 -0
  239. mqt/core/include/mqt-core/dd/UniqueTable.hpp +243 -0
  240. mqt/core/include/mqt-core/dd/mqt_core_dd_export.h +43 -0
  241. mqt/core/include/mqt-core/dd/statistics/MemoryManagerStatistics.hpp +84 -0
  242. mqt/core/include/mqt-core/dd/statistics/PackageStatistics.hpp +55 -0
  243. mqt/core/include/mqt-core/dd/statistics/Statistics.hpp +48 -0
  244. mqt/core/include/mqt-core/dd/statistics/TableStatistics.hpp +79 -0
  245. mqt/core/include/mqt-core/dd/statistics/UniqueTableStatistics.hpp +31 -0
  246. mqt/core/include/mqt-core/fomac/FoMaC.hpp +568 -0
  247. mqt/core/include/mqt-core/ir/Definitions.hpp +108 -0
  248. mqt/core/include/mqt-core/ir/Permutation.hpp +213 -0
  249. mqt/core/include/mqt-core/ir/QuantumComputation.hpp +595 -0
  250. mqt/core/include/mqt-core/ir/Register.hpp +125 -0
  251. mqt/core/include/mqt-core/ir/mqt_core_ir_export.h +43 -0
  252. mqt/core/include/mqt-core/ir/operations/AodOperation.hpp +92 -0
  253. mqt/core/include/mqt-core/ir/operations/CompoundOperation.hpp +212 -0
  254. mqt/core/include/mqt-core/ir/operations/Control.hpp +142 -0
  255. mqt/core/include/mqt-core/ir/operations/Expression.hpp +847 -0
  256. mqt/core/include/mqt-core/ir/operations/IfElseOperation.hpp +169 -0
  257. mqt/core/include/mqt-core/ir/operations/NonUnitaryOperation.hpp +118 -0
  258. mqt/core/include/mqt-core/ir/operations/OpType.hpp +118 -0
  259. mqt/core/include/mqt-core/ir/operations/OpType.inc +75 -0
  260. mqt/core/include/mqt-core/ir/operations/Operation.hpp +247 -0
  261. mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +140 -0
  262. mqt/core/include/mqt-core/ir/operations/SymbolicOperation.hpp +144 -0
  263. mqt/core/include/mqt-core/mqt_na_qdmi/device.h +602 -0
  264. mqt/core/include/mqt-core/mqt_na_qdmi/types.h +78 -0
  265. mqt/core/include/mqt-core/na/NAComputation.hpp +185 -0
  266. mqt/core/include/mqt-core/na/device/Device.hpp +410 -0
  267. mqt/core/include/mqt-core/na/device/DeviceMemberInitializers.hpp +724 -0
  268. mqt/core/include/mqt-core/na/device/Generator.hpp +447 -0
  269. mqt/core/include/mqt-core/na/entities/Atom.hpp +62 -0
  270. mqt/core/include/mqt-core/na/entities/Location.hpp +154 -0
  271. mqt/core/include/mqt-core/na/entities/Zone.hpp +95 -0
  272. mqt/core/include/mqt-core/na/fomac/Device.hpp +169 -0
  273. mqt/core/include/mqt-core/na/mqt_core_na_export.h +43 -0
  274. mqt/core/include/mqt-core/na/operations/GlobalCZOp.hpp +38 -0
  275. mqt/core/include/mqt-core/na/operations/GlobalOp.hpp +58 -0
  276. mqt/core/include/mqt-core/na/operations/GlobalRYOp.hpp +42 -0
  277. mqt/core/include/mqt-core/na/operations/LoadOp.hpp +89 -0
  278. mqt/core/include/mqt-core/na/operations/LocalOp.hpp +56 -0
  279. mqt/core/include/mqt-core/na/operations/LocalRZOp.hpp +42 -0
  280. mqt/core/include/mqt-core/na/operations/LocalUOp.hpp +49 -0
  281. mqt/core/include/mqt-core/na/operations/MoveOp.hpp +66 -0
  282. mqt/core/include/mqt-core/na/operations/Op.hpp +62 -0
  283. mqt/core/include/mqt-core/na/operations/ShuttlingOp.hpp +51 -0
  284. mqt/core/include/mqt-core/na/operations/StoreOp.hpp +87 -0
  285. mqt/core/include/mqt-core/qasm3/Exception.hpp +85 -0
  286. mqt/core/include/mqt-core/qasm3/Gate.hpp +65 -0
  287. mqt/core/include/mqt-core/qasm3/Importer.hpp +192 -0
  288. mqt/core/include/mqt-core/qasm3/InstVisitor.hpp +145 -0
  289. mqt/core/include/mqt-core/qasm3/NestedEnvironment.hpp +41 -0
  290. mqt/core/include/mqt-core/qasm3/Parser.hpp +170 -0
  291. mqt/core/include/mqt-core/qasm3/Scanner.hpp +73 -0
  292. mqt/core/include/mqt-core/qasm3/Statement.hpp +486 -0
  293. mqt/core/include/mqt-core/qasm3/Statement_fwd.hpp +39 -0
  294. mqt/core/include/mqt-core/qasm3/StdGates.hpp +123 -0
  295. mqt/core/include/mqt-core/qasm3/Token.hpp +198 -0
  296. mqt/core/include/mqt-core/qasm3/Types.hpp +238 -0
  297. mqt/core/include/mqt-core/qasm3/Types_fwd.hpp +22 -0
  298. mqt/core/include/mqt-core/qasm3/mqt_core_qasm_export.h +43 -0
  299. mqt/core/include/mqt-core/qasm3/passes/CompilerPass.hpp +22 -0
  300. mqt/core/include/mqt-core/qasm3/passes/ConstEvalPass.hpp +102 -0
  301. mqt/core/include/mqt-core/qasm3/passes/TypeCheckPass.hpp +124 -0
  302. mqt/core/include/mqt-core/qdmi/Driver.hpp +431 -0
  303. mqt/core/include/mqt-core/zx/FunctionalityConstruction.hpp +125 -0
  304. mqt/core/include/mqt-core/zx/Rational.hpp +318 -0
  305. mqt/core/include/mqt-core/zx/Rules.hpp +132 -0
  306. mqt/core/include/mqt-core/zx/Simplify.hpp +182 -0
  307. mqt/core/include/mqt-core/zx/Utils.hpp +212 -0
  308. mqt/core/include/mqt-core/zx/ZXDefinitions.hpp +93 -0
  309. mqt/core/include/mqt-core/zx/ZXDiagram.hpp +480 -0
  310. mqt/core/include/mqt-core/zx/mqt_core_zx_export.h +43 -0
  311. mqt/core/include/nlohmann/adl_serializer.hpp +55 -0
  312. mqt/core/include/nlohmann/byte_container_with_subtype.hpp +103 -0
  313. mqt/core/include/nlohmann/detail/abi_macros.hpp +111 -0
  314. mqt/core/include/nlohmann/detail/conversions/from_json.hpp +577 -0
  315. mqt/core/include/nlohmann/detail/conversions/to_chars.hpp +1118 -0
  316. mqt/core/include/nlohmann/detail/conversions/to_json.hpp +479 -0
  317. mqt/core/include/nlohmann/detail/exceptions.hpp +291 -0
  318. mqt/core/include/nlohmann/detail/hash.hpp +129 -0
  319. mqt/core/include/nlohmann/detail/input/binary_reader.hpp +3068 -0
  320. mqt/core/include/nlohmann/detail/input/input_adapters.hpp +549 -0
  321. mqt/core/include/nlohmann/detail/input/json_sax.hpp +986 -0
  322. mqt/core/include/nlohmann/detail/input/lexer.hpp +1643 -0
  323. mqt/core/include/nlohmann/detail/input/parser.hpp +519 -0
  324. mqt/core/include/nlohmann/detail/input/position_t.hpp +37 -0
  325. mqt/core/include/nlohmann/detail/iterators/internal_iterator.hpp +35 -0
  326. mqt/core/include/nlohmann/detail/iterators/iter_impl.hpp +760 -0
  327. mqt/core/include/nlohmann/detail/iterators/iteration_proxy.hpp +235 -0
  328. mqt/core/include/nlohmann/detail/iterators/iterator_traits.hpp +61 -0
  329. mqt/core/include/nlohmann/detail/iterators/json_reverse_iterator.hpp +130 -0
  330. mqt/core/include/nlohmann/detail/iterators/primitive_iterator.hpp +132 -0
  331. mqt/core/include/nlohmann/detail/json_custom_base_class.hpp +39 -0
  332. mqt/core/include/nlohmann/detail/json_pointer.hpp +988 -0
  333. mqt/core/include/nlohmann/detail/json_ref.hpp +78 -0
  334. mqt/core/include/nlohmann/detail/macro_scope.hpp +595 -0
  335. mqt/core/include/nlohmann/detail/macro_unscope.hpp +46 -0
  336. mqt/core/include/nlohmann/detail/meta/call_std/begin.hpp +17 -0
  337. mqt/core/include/nlohmann/detail/meta/call_std/end.hpp +17 -0
  338. mqt/core/include/nlohmann/detail/meta/cpp_future.hpp +171 -0
  339. mqt/core/include/nlohmann/detail/meta/detected.hpp +70 -0
  340. mqt/core/include/nlohmann/detail/meta/identity_tag.hpp +21 -0
  341. mqt/core/include/nlohmann/detail/meta/is_sax.hpp +159 -0
  342. mqt/core/include/nlohmann/detail/meta/std_fs.hpp +29 -0
  343. mqt/core/include/nlohmann/detail/meta/type_traits.hpp +795 -0
  344. mqt/core/include/nlohmann/detail/meta/void_t.hpp +24 -0
  345. mqt/core/include/nlohmann/detail/output/binary_writer.hpp +1850 -0
  346. mqt/core/include/nlohmann/detail/output/output_adapters.hpp +147 -0
  347. mqt/core/include/nlohmann/detail/output/serializer.hpp +988 -0
  348. mqt/core/include/nlohmann/detail/string_concat.hpp +146 -0
  349. mqt/core/include/nlohmann/detail/string_escape.hpp +72 -0
  350. mqt/core/include/nlohmann/detail/string_utils.hpp +37 -0
  351. mqt/core/include/nlohmann/detail/value_t.hpp +118 -0
  352. mqt/core/include/nlohmann/json.hpp +5306 -0
  353. mqt/core/include/nlohmann/json_fwd.hpp +75 -0
  354. mqt/core/include/nlohmann/ordered_map.hpp +359 -0
  355. mqt/core/include/nlohmann/thirdparty/hedley/hedley.hpp +2045 -0
  356. mqt/core/include/nlohmann/thirdparty/hedley/hedley_undef.hpp +158 -0
  357. mqt/core/include/qdmi/qdmi/client.h +990 -0
  358. mqt/core/include/qdmi/qdmi/constants.h +1139 -0
  359. mqt/core/include/qdmi/qdmi/device.h +602 -0
  360. mqt/core/include/qdmi/qdmi/types.h +78 -0
  361. mqt/core/include/spdlog/async.h +99 -0
  362. mqt/core/include/spdlog/async_logger-inl.h +84 -0
  363. mqt/core/include/spdlog/async_logger.h +74 -0
  364. mqt/core/include/spdlog/cfg/argv.h +40 -0
  365. mqt/core/include/spdlog/cfg/env.h +36 -0
  366. mqt/core/include/spdlog/cfg/helpers-inl.h +107 -0
  367. mqt/core/include/spdlog/cfg/helpers.h +29 -0
  368. mqt/core/include/spdlog/common-inl.h +68 -0
  369. mqt/core/include/spdlog/common.h +406 -0
  370. mqt/core/include/spdlog/details/backtracer-inl.h +63 -0
  371. mqt/core/include/spdlog/details/backtracer.h +45 -0
  372. mqt/core/include/spdlog/details/circular_q.h +115 -0
  373. mqt/core/include/spdlog/details/console_globals.h +28 -0
  374. mqt/core/include/spdlog/details/file_helper-inl.h +153 -0
  375. mqt/core/include/spdlog/details/file_helper.h +61 -0
  376. mqt/core/include/spdlog/details/fmt_helper.h +141 -0
  377. mqt/core/include/spdlog/details/log_msg-inl.h +44 -0
  378. mqt/core/include/spdlog/details/log_msg.h +40 -0
  379. mqt/core/include/spdlog/details/log_msg_buffer-inl.h +54 -0
  380. mqt/core/include/spdlog/details/log_msg_buffer.h +32 -0
  381. mqt/core/include/spdlog/details/mpmc_blocking_q.h +177 -0
  382. mqt/core/include/spdlog/details/null_mutex.h +35 -0
  383. mqt/core/include/spdlog/details/os-inl.h +606 -0
  384. mqt/core/include/spdlog/details/os.h +127 -0
  385. mqt/core/include/spdlog/details/periodic_worker-inl.h +26 -0
  386. mqt/core/include/spdlog/details/periodic_worker.h +58 -0
  387. mqt/core/include/spdlog/details/registry-inl.h +270 -0
  388. mqt/core/include/spdlog/details/registry.h +131 -0
  389. mqt/core/include/spdlog/details/synchronous_factory.h +22 -0
  390. mqt/core/include/spdlog/details/tcp_client-windows.h +135 -0
  391. mqt/core/include/spdlog/details/tcp_client.h +127 -0
  392. mqt/core/include/spdlog/details/thread_pool-inl.h +126 -0
  393. mqt/core/include/spdlog/details/thread_pool.h +117 -0
  394. mqt/core/include/spdlog/details/udp_client-windows.h +98 -0
  395. mqt/core/include/spdlog/details/udp_client.h +81 -0
  396. mqt/core/include/spdlog/details/windows_include.h +11 -0
  397. mqt/core/include/spdlog/fmt/bin_to_hex.h +224 -0
  398. mqt/core/include/spdlog/fmt/bundled/args.h +220 -0
  399. mqt/core/include/spdlog/fmt/bundled/base.h +2989 -0
  400. mqt/core/include/spdlog/fmt/bundled/chrono.h +2330 -0
  401. mqt/core/include/spdlog/fmt/bundled/color.h +637 -0
  402. mqt/core/include/spdlog/fmt/bundled/compile.h +539 -0
  403. mqt/core/include/spdlog/fmt/bundled/core.h +5 -0
  404. mqt/core/include/spdlog/fmt/bundled/fmt.license.rst +27 -0
  405. mqt/core/include/spdlog/fmt/bundled/format-inl.h +1948 -0
  406. mqt/core/include/spdlog/fmt/bundled/format.h +4244 -0
  407. mqt/core/include/spdlog/fmt/bundled/os.h +427 -0
  408. mqt/core/include/spdlog/fmt/bundled/ostream.h +167 -0
  409. mqt/core/include/spdlog/fmt/bundled/printf.h +633 -0
  410. mqt/core/include/spdlog/fmt/bundled/ranges.h +850 -0
  411. mqt/core/include/spdlog/fmt/bundled/std.h +728 -0
  412. mqt/core/include/spdlog/fmt/bundled/xchar.h +369 -0
  413. mqt/core/include/spdlog/fmt/chrono.h +23 -0
  414. mqt/core/include/spdlog/fmt/compile.h +23 -0
  415. mqt/core/include/spdlog/fmt/fmt.h +30 -0
  416. mqt/core/include/spdlog/fmt/ostr.h +23 -0
  417. mqt/core/include/spdlog/fmt/ranges.h +23 -0
  418. mqt/core/include/spdlog/fmt/std.h +24 -0
  419. mqt/core/include/spdlog/fmt/xchar.h +23 -0
  420. mqt/core/include/spdlog/formatter.h +17 -0
  421. mqt/core/include/spdlog/fwd.h +18 -0
  422. mqt/core/include/spdlog/logger-inl.h +198 -0
  423. mqt/core/include/spdlog/logger.h +379 -0
  424. mqt/core/include/spdlog/mdc.h +52 -0
  425. mqt/core/include/spdlog/pattern_formatter-inl.h +1340 -0
  426. mqt/core/include/spdlog/pattern_formatter.h +118 -0
  427. mqt/core/include/spdlog/sinks/android_sink.h +137 -0
  428. mqt/core/include/spdlog/sinks/ansicolor_sink-inl.h +142 -0
  429. mqt/core/include/spdlog/sinks/ansicolor_sink.h +116 -0
  430. mqt/core/include/spdlog/sinks/base_sink-inl.h +59 -0
  431. mqt/core/include/spdlog/sinks/base_sink.h +51 -0
  432. mqt/core/include/spdlog/sinks/basic_file_sink-inl.h +48 -0
  433. mqt/core/include/spdlog/sinks/basic_file_sink.h +66 -0
  434. mqt/core/include/spdlog/sinks/callback_sink.h +56 -0
  435. mqt/core/include/spdlog/sinks/daily_file_sink.h +254 -0
  436. mqt/core/include/spdlog/sinks/dist_sink.h +81 -0
  437. mqt/core/include/spdlog/sinks/dup_filter_sink.h +91 -0
  438. mqt/core/include/spdlog/sinks/hourly_file_sink.h +193 -0
  439. mqt/core/include/spdlog/sinks/kafka_sink.h +119 -0
  440. mqt/core/include/spdlog/sinks/mongo_sink.h +108 -0
  441. mqt/core/include/spdlog/sinks/msvc_sink.h +68 -0
  442. mqt/core/include/spdlog/sinks/null_sink.h +41 -0
  443. mqt/core/include/spdlog/sinks/ostream_sink.h +43 -0
  444. mqt/core/include/spdlog/sinks/qt_sinks.h +304 -0
  445. mqt/core/include/spdlog/sinks/ringbuffer_sink.h +67 -0
  446. mqt/core/include/spdlog/sinks/rotating_file_sink-inl.h +179 -0
  447. mqt/core/include/spdlog/sinks/rotating_file_sink.h +93 -0
  448. mqt/core/include/spdlog/sinks/sink-inl.h +22 -0
  449. mqt/core/include/spdlog/sinks/sink.h +34 -0
  450. mqt/core/include/spdlog/sinks/stdout_color_sinks-inl.h +38 -0
  451. mqt/core/include/spdlog/sinks/stdout_color_sinks.h +49 -0
  452. mqt/core/include/spdlog/sinks/stdout_sinks-inl.h +127 -0
  453. mqt/core/include/spdlog/sinks/stdout_sinks.h +84 -0
  454. mqt/core/include/spdlog/sinks/syslog_sink.h +104 -0
  455. mqt/core/include/spdlog/sinks/systemd_sink.h +121 -0
  456. mqt/core/include/spdlog/sinks/tcp_sink.h +75 -0
  457. mqt/core/include/spdlog/sinks/udp_sink.h +69 -0
  458. mqt/core/include/spdlog/sinks/win_eventlog_sink.h +260 -0
  459. mqt/core/include/spdlog/sinks/wincolor_sink-inl.h +172 -0
  460. mqt/core/include/spdlog/sinks/wincolor_sink.h +82 -0
  461. mqt/core/include/spdlog/spdlog-inl.h +96 -0
  462. mqt/core/include/spdlog/spdlog.h +357 -0
  463. mqt/core/include/spdlog/stopwatch.h +66 -0
  464. mqt/core/include/spdlog/tweakme.h +148 -0
  465. mqt/core/include/spdlog/version.h +11 -0
  466. mqt/core/ir/__init__.pyi +2036 -0
  467. mqt/core/ir/operations.pyi +1004 -0
  468. mqt/core/ir/registers.pyi +91 -0
  469. mqt/core/ir/symbolic.pyi +177 -0
  470. mqt/core/ir.cpython-314-darwin.so +0 -0
  471. mqt/core/lib/cmake/spdlog/spdlogConfig.cmake +44 -0
  472. mqt/core/lib/cmake/spdlog/spdlogConfigTargets-release.cmake +19 -0
  473. mqt/core/lib/cmake/spdlog/spdlogConfigTargets.cmake +116 -0
  474. mqt/core/lib/cmake/spdlog/spdlogConfigVersion.cmake +65 -0
  475. mqt/core/lib/libmqt-core-algorithms.3.3.0.dylib +0 -0
  476. mqt/core/lib/libmqt-core-algorithms.3.3.dylib +0 -0
  477. mqt/core/lib/libmqt-core-algorithms.dylib +0 -0
  478. mqt/core/lib/libmqt-core-circuit-optimizer.3.3.0.dylib +0 -0
  479. mqt/core/lib/libmqt-core-circuit-optimizer.3.3.dylib +0 -0
  480. mqt/core/lib/libmqt-core-circuit-optimizer.dylib +0 -0
  481. mqt/core/lib/libmqt-core-dd.3.3.0.dylib +0 -0
  482. mqt/core/lib/libmqt-core-dd.3.3.dylib +0 -0
  483. mqt/core/lib/libmqt-core-dd.dylib +0 -0
  484. mqt/core/lib/libmqt-core-ds.3.3.0.dylib +0 -0
  485. mqt/core/lib/libmqt-core-ds.3.3.dylib +0 -0
  486. mqt/core/lib/libmqt-core-ds.dylib +0 -0
  487. mqt/core/lib/libmqt-core-fomac.3.3.0.dylib +0 -0
  488. mqt/core/lib/libmqt-core-fomac.3.3.dylib +0 -0
  489. mqt/core/lib/libmqt-core-fomac.dylib +0 -0
  490. mqt/core/lib/libmqt-core-ir.3.3.0.dylib +0 -0
  491. mqt/core/lib/libmqt-core-ir.3.3.dylib +0 -0
  492. mqt/core/lib/libmqt-core-ir.dylib +0 -0
  493. mqt/core/lib/libmqt-core-na-fomac.3.3.0.dylib +0 -0
  494. mqt/core/lib/libmqt-core-na-fomac.3.3.dylib +0 -0
  495. mqt/core/lib/libmqt-core-na-fomac.dylib +0 -0
  496. mqt/core/lib/libmqt-core-na.3.3.0.dylib +0 -0
  497. mqt/core/lib/libmqt-core-na.3.3.dylib +0 -0
  498. mqt/core/lib/libmqt-core-na.dylib +0 -0
  499. mqt/core/lib/libmqt-core-qasm.3.3.0.dylib +0 -0
  500. mqt/core/lib/libmqt-core-qasm.3.3.dylib +0 -0
  501. mqt/core/lib/libmqt-core-qasm.dylib +0 -0
  502. mqt/core/lib/libmqt-core-qdmi-driver.3.3.0.dylib +0 -0
  503. mqt/core/lib/libmqt-core-qdmi-driver.3.3.dylib +0 -0
  504. mqt/core/lib/libmqt-core-qdmi-driver.dylib +0 -0
  505. mqt/core/lib/libmqt-core-qdmi-na-device-gen.a +0 -0
  506. mqt/core/lib/libmqt-core-qdmi-na-device.3.3.0.dylib +0 -0
  507. mqt/core/lib/libmqt-core-qdmi-na-device.3.3.dylib +0 -0
  508. mqt/core/lib/libmqt-core-qdmi-na-device.dylib +0 -0
  509. mqt/core/lib/libmqt-core-zx.3.3.0.dylib +0 -0
  510. mqt/core/lib/libmqt-core-zx.3.3.dylib +0 -0
  511. mqt/core/lib/libmqt-core-zx.dylib +0 -0
  512. mqt/core/lib/libspdlog.a +0 -0
  513. mqt/core/lib/pkgconfig/spdlog.pc +13 -0
  514. mqt/core/na/__init__.py +12 -0
  515. mqt/core/na/fomac.cpython-314-darwin.so +0 -0
  516. mqt/core/na/fomac.pyi +117 -0
  517. mqt/core/plugins/__init__.py +9 -0
  518. mqt/core/plugins/qiskit/__init__.py +19 -0
  519. mqt/core/plugins/qiskit/mqt_to_qiskit.py +418 -0
  520. mqt/core/plugins/qiskit/qiskit_to_mqt.py +558 -0
  521. mqt/core/py.typed +2 -0
  522. mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +55 -0
  523. mqt/core/share/cmake/mqt-core/Cache.cmake +33 -0
  524. mqt/core/share/cmake/mqt-core/FindGMP.cmake +103 -0
  525. mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +46 -0
  526. mqt/core/share/cmake/mqt-core/PreventInSourceBuilds.cmake +25 -0
  527. mqt/core/share/cmake/mqt-core/StandardProjectSettings.cmake +87 -0
  528. mqt/core/share/cmake/mqt-core/mqt-core-config-version.cmake +85 -0
  529. mqt/core/share/cmake/mqt-core/mqt-core-config.cmake +52 -0
  530. mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +141 -0
  531. mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +446 -0
  532. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfig.cmake +15 -0
  533. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfigVersion.cmake +20 -0
  534. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonTargets.cmake +109 -0
  535. mqt/core/share/cmake/qdmi/Cache.cmake +44 -0
  536. mqt/core/share/cmake/qdmi/PrefixHandling.cmake +78 -0
  537. mqt/core/share/cmake/qdmi/prefix_defs.txt +26 -0
  538. mqt/core/share/cmake/qdmi/qdmi-config-version.cmake +85 -0
  539. mqt/core/share/cmake/qdmi/qdmi-config.cmake +42 -0
  540. mqt/core/share/cmake/qdmi/qdmi-targets.cmake +129 -0
  541. mqt/core/share/pkgconfig/nlohmann_json.pc +7 -0
  542. mqt_core-3.3.0.dist-info/METADATA +210 -0
  543. mqt_core-3.3.0.dist-info/RECORD +546 -0
  544. mqt_core-3.3.0.dist-info/WHEEL +6 -0
  545. mqt_core-3.3.0.dist-info/entry_points.txt +4 -0
  546. mqt_core-3.3.0.dist-info/licenses/LICENSE.md +22 -0
mqt/core/na/fomac.pyi ADDED
@@ -0,0 +1,117 @@
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
+ """Reconstruction of NADevice from QDMI's Device class."""
10
+
11
+ from collections.abc import Iterable
12
+
13
+ from ..fomac import Device as GenericDevice
14
+
15
+ __all__ = ["Device"]
16
+
17
+ class Device(GenericDevice):
18
+ """Represents a device with a lattice of traps."""
19
+
20
+ class Vector:
21
+ """Represents a 2D vector."""
22
+
23
+ x: int
24
+ """
25
+ The x-coordinate of the vector.
26
+ """
27
+ y: int
28
+ """
29
+ The y-coordinate of the vector.
30
+ """
31
+ def __eq__(self, other: object) -> bool: ...
32
+ def __ne__(self, other: object) -> bool: ...
33
+
34
+ class Region:
35
+ """Represents a region in the device."""
36
+
37
+ origin: Device.Vector
38
+ """
39
+ The origin of the region.
40
+ """
41
+
42
+ class Size:
43
+ """Represents the size of a region."""
44
+
45
+ width: int
46
+ """
47
+ The width of the region.
48
+ """
49
+ height: int
50
+ """
51
+ The height of the region.
52
+ """
53
+ def __eq__(self, other: object) -> bool: ...
54
+ def __ne__(self, other: object) -> bool: ...
55
+
56
+ size: Size
57
+ """
58
+ The size of the region.
59
+ """
60
+
61
+ def __eq__(self, other: object) -> bool: ...
62
+ def __ne__(self, other: object) -> bool: ...
63
+
64
+ class Lattice:
65
+ """Represents a lattice of traps in the device."""
66
+
67
+ lattice_origin: Device.Vector
68
+ """
69
+ The origin of the lattice.
70
+ """
71
+ lattice_vector_1: Device.Vector
72
+ """
73
+ The first lattice vector.
74
+ """
75
+ lattice_vector_2: Device.Vector
76
+ """
77
+ The second lattice vector.
78
+ """
79
+ sublattice_offsets: Iterable[Device.Vector]
80
+ """
81
+ The offsets of the sublattices.
82
+ """
83
+ extent: Device.Region
84
+ """
85
+ The extent of the lattice.
86
+ """
87
+ def __eq__(self, other: object) -> bool: ...
88
+ def __ne__(self, other: object) -> bool: ...
89
+
90
+ traps: Iterable[Device.Lattice]
91
+ """
92
+ The list of trap positions in the device.
93
+ """
94
+ t1: int
95
+ """
96
+ The T1 time of the device.
97
+ """
98
+ t2: int
99
+ """
100
+ The T2 time of the device.
101
+ """
102
+
103
+ @classmethod
104
+ def try_create_from_device(cls, device: GenericDevice) -> Device | None:
105
+ """Create NA FoMaC Device from generic FoMaC Device.
106
+
107
+ Args:
108
+ device: The generic FoMaC Device to convert.
109
+
110
+ Returns:
111
+ The converted NA FoMaC Device or None if the conversion is not possible.
112
+ """
113
+ def __eq__(self, other: object) -> bool: ...
114
+ def __ne__(self, other: object) -> bool: ...
115
+
116
+ def devices() -> Iterable[Device]:
117
+ """Returns a list of available devices."""
@@ -0,0 +1,9 @@
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
+ """Plugins for the core package."""
@@ -0,0 +1,19 @@
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
+ """MQT Qiskit Plugin."""
10
+
11
+ from __future__ import annotations
12
+
13
+ from .mqt_to_qiskit import mqt_to_qiskit
14
+ from .qiskit_to_mqt import qiskit_to_mqt
15
+
16
+ __all__ = [
17
+ "mqt_to_qiskit",
18
+ "qiskit_to_mqt",
19
+ ]
@@ -0,0 +1,418 @@
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 the MQT to Qiskit."""
10
+
11
+ from __future__ import annotations
12
+
13
+ from typing import TYPE_CHECKING
14
+
15
+ from qiskit.circuit import (
16
+ AncillaRegister,
17
+ ClassicalRegister,
18
+ IfElseOp,
19
+ QuantumCircuit,
20
+ QuantumRegister,
21
+ )
22
+ from qiskit.circuit.classical import expr
23
+ from qiskit.circuit.library import (
24
+ DCXGate,
25
+ ECRGate,
26
+ HGate,
27
+ IGate,
28
+ PhaseGate,
29
+ RXGate,
30
+ RXXGate,
31
+ RYGate,
32
+ RYYGate,
33
+ RZGate,
34
+ RZXGate,
35
+ RZZGate,
36
+ SdgGate,
37
+ SGate,
38
+ SwapGate,
39
+ SXdgGate,
40
+ SXGate,
41
+ TdgGate,
42
+ TGate,
43
+ U2Gate,
44
+ U3Gate,
45
+ XGate,
46
+ XXMinusYYGate,
47
+ XXPlusYYGate,
48
+ YGate,
49
+ ZGate,
50
+ iSwapGate,
51
+ )
52
+ from qiskit.transpiler.layout import Layout, TranspileLayout
53
+
54
+ from ...ir import Permutation
55
+ from ...ir.operations import (
56
+ ComparisonKind,
57
+ CompoundOperation,
58
+ Control,
59
+ IfElseOperation,
60
+ NonUnitaryOperation,
61
+ OpType,
62
+ StandardOperation,
63
+ )
64
+
65
+ if TYPE_CHECKING:
66
+ from collections.abc import Mapping, Sequence
67
+
68
+ from qiskit.circuit import Clbit, Qubit
69
+ from qiskit.circuit.singleton import SingletonGate
70
+
71
+ from ...ir import QuantumComputation
72
+ from ...ir.operations import Operation
73
+
74
+ __all__ = ["mqt_to_qiskit"]
75
+
76
+
77
+ def __dir__() -> list[str]:
78
+ return __all__
79
+
80
+
81
+ def _translate_controls(controls: set[Control], qubit_map: Mapping[int, Qubit]) -> tuple[list[Qubit], str]:
82
+ """Translate a set of :class:`~mqt.core.ir.operations.Control` to Qiskit.
83
+
84
+ Args:
85
+ controls: The controls to translate.
86
+ qubit_map: A mapping from qubit indices to Qiskit :class:`~qiskit.circuit.Qubit`.
87
+
88
+ Returns:
89
+ A tuple containing the translated qubits and control states.
90
+ """
91
+ qubits: list[Qubit] = []
92
+ ctrl_state: str = ""
93
+ for control in controls:
94
+ qubit = qubit_map[control.qubit]
95
+ qubits.append(qubit)
96
+ # MSB to the left
97
+ ctrl_state = "1" + ctrl_state if control.type_ == Control.Type.Pos else "0" + ctrl_state
98
+ return qubits, ctrl_state
99
+
100
+
101
+ def _translate_targets(targets: Sequence[int], qubit_map: Mapping[int, Qubit]) -> list[Qubit]:
102
+ """Translate a sequence of target qubit indices to a list of Qiskit :class:`~qiskit.circuit.Qubit`.
103
+
104
+ Args:
105
+ targets: The target qubit indices to translate.
106
+ qubit_map: A mapping from qubit indices to Qiskit :class:`~qiskit.circuit.Qubit`.
107
+
108
+ Returns:
109
+ The translated qubits.
110
+ """
111
+ return [qubit_map[target] for target in targets]
112
+
113
+
114
+ def _add_standard_operation(circ: QuantumCircuit, op: StandardOperation, qubit_map: Mapping[int, Qubit]) -> None:
115
+ """Add a :class:`~mqt.core.ir.operations.StandardOperation`.
116
+
117
+ Args:
118
+ circ: The Qiskit circuit to add the operation to.
119
+ op: The MQT operation to add.
120
+ qubit_map: A mapping from qubit indices to Qiskit :class:`~qiskit.circuit.Qubit`.
121
+
122
+ Raises:
123
+ TypeError: If the operation type is not supported.
124
+ """
125
+ targets = _translate_targets(op.targets, qubit_map)
126
+
127
+ if op.type_ == OpType.barrier:
128
+ circ.barrier(targets)
129
+ return
130
+
131
+ controls, ctrl_state = _translate_controls(op.controls, qubit_map)
132
+
133
+ gate_map_singleton: dict[OpType, SingletonGate] = {
134
+ OpType.i: IGate(),
135
+ OpType.x: XGate(),
136
+ OpType.y: YGate(),
137
+ OpType.z: ZGate(),
138
+ OpType.h: HGate(),
139
+ OpType.s: SGate(),
140
+ OpType.sdg: SdgGate(),
141
+ OpType.t: TGate(),
142
+ OpType.tdg: TdgGate(),
143
+ OpType.sx: SXGate(),
144
+ OpType.sxdg: SXdgGate(),
145
+ OpType.dcx: DCXGate(),
146
+ OpType.ecr: ECRGate(),
147
+ OpType.swap: SwapGate(),
148
+ OpType.iswap: iSwapGate(),
149
+ }
150
+
151
+ if op.type_ in gate_map_singleton:
152
+ gate = gate_map_singleton[op.type_]
153
+ if len(controls) == 0:
154
+ circ.append(gate, targets)
155
+ else:
156
+ circ.append(gate.control(len(controls), ctrl_state=ctrl_state), [*controls, *targets])
157
+ return
158
+
159
+ gate_map_single_param: dict[OpType, type] = {
160
+ OpType.rx: RXGate,
161
+ OpType.ry: RYGate,
162
+ OpType.rz: RZGate,
163
+ OpType.p: PhaseGate,
164
+ OpType.rxx: RXXGate,
165
+ OpType.ryy: RYYGate,
166
+ OpType.rzz: RZZGate,
167
+ OpType.rzx: RZXGate,
168
+ }
169
+
170
+ if op.type_ in gate_map_single_param:
171
+ gate = gate_map_single_param[op.type_]
172
+ parameter = op.parameter[0]
173
+ if len(controls) == 0:
174
+ circ.append(gate(parameter), targets)
175
+ else:
176
+ circ.append(gate(parameter).control(len(controls), ctrl_state=ctrl_state), [*controls, *targets])
177
+ return
178
+
179
+ gate_map_two_param: dict[OpType, type] = {
180
+ OpType.u2: U2Gate,
181
+ OpType.xx_plus_yy: XXPlusYYGate,
182
+ OpType.xx_minus_yy: XXMinusYYGate,
183
+ }
184
+
185
+ if op.type_ in gate_map_two_param:
186
+ gate = gate_map_two_param[op.type_]
187
+ parameter1, parameter2 = op.parameter
188
+ if len(controls) == 0:
189
+ circ.append(gate(parameter1, parameter2), targets)
190
+ else:
191
+ circ.append(
192
+ gate(parameter1, parameter2).control(len(controls), ctrl_state=ctrl_state), [*controls, *targets]
193
+ )
194
+ return
195
+
196
+ gate_map_three_param: dict[OpType, type] = {
197
+ OpType.u: U3Gate,
198
+ }
199
+
200
+ if op.type_ in gate_map_three_param:
201
+ gate = gate_map_three_param[op.type_]
202
+ parameter1, parameter2, parameter3 = op.parameter
203
+ if len(controls) == 0:
204
+ circ.append(gate(parameter1, parameter2, parameter3), targets)
205
+ else:
206
+ circ.append(
207
+ gate(parameter1, parameter2, parameter3).control(len(controls), ctrl_state=ctrl_state),
208
+ [*controls, *targets],
209
+ )
210
+ return
211
+
212
+ msg = f"Unsupported operation type: {op.type_}"
213
+ raise TypeError(msg)
214
+
215
+
216
+ def _add_non_unitary_operation(
217
+ circ: QuantumCircuit,
218
+ op: NonUnitaryOperation,
219
+ qubit_map: Mapping[int, Qubit],
220
+ clbit_map: Mapping[int, Clbit],
221
+ ) -> None:
222
+ """Add a :class:`~mqt.core.ir.operations.NonUnitaryOperation`.
223
+
224
+ Args:
225
+ circ: The Qiskit circuit to add the operation to.
226
+ op: The MQT operation to add.
227
+ qubit_map: A mapping from qubit indices to Qiskit :class:`~qiskit.circuit.Qubit`.
228
+ clbit_map: A mapping from classical bit indices to Qiskit :class:`~qiskit.circuit.Clbit`.
229
+ """
230
+ if op.type_ == OpType.measure:
231
+ for qubit, clbit in zip(op.targets, op.classics, strict=False):
232
+ circ.measure(qubit_map[qubit], clbit_map[clbit])
233
+ return
234
+
235
+ if op.type_ == OpType.reset:
236
+ for qubit in op.targets:
237
+ circ.reset(qubit_map[qubit])
238
+ return
239
+
240
+
241
+ def _add_compound_operation(
242
+ circ: QuantumCircuit,
243
+ op: CompoundOperation,
244
+ qubit_map: Mapping[int, Qubit],
245
+ clbit_map: Mapping[int, Clbit],
246
+ ) -> None:
247
+ """Add a :class:`~mqt.core.ir.operations.CompoundOperation`.
248
+
249
+ Args:
250
+ circ: The Qiskit circuit to add the operation to.
251
+ op: The MQT operation to add.
252
+ qubit_map: A mapping from qubit indices to Qiskit :class:`~qiskit.circuit.Qubit`.
253
+ clbit_map: A mapping from classical bit indices to Qiskit :class:`~qiskit.circuit.Clbit`.
254
+ """
255
+ inner_circ = QuantumCircuit(*circ.qregs, *circ.cregs)
256
+ for inner_op in op:
257
+ _add_operation(inner_circ, inner_op, qubit_map, clbit_map)
258
+ circ.append(inner_circ.to_instruction(), circ.qubits, circ.clbits)
259
+
260
+
261
+ def _add_if_else_operation(
262
+ circ: QuantumCircuit,
263
+ op: IfElseOperation,
264
+ qubit_map: Mapping[int, Qubit],
265
+ clbit_map: Mapping[int, Clbit],
266
+ ) -> None:
267
+ """Add a :class:`~.IfElseOperation`.
268
+
269
+ Args:
270
+ circ: The Qiskit circuit to add the operation to.
271
+ op: The :class:`~.IfElseOperation` operation to add.
272
+ qubit_map: A mapping from qubit indices to Qiskit :class:`~qiskit.circuit.Qubit`.
273
+ clbit_map: A mapping from classical bit indices to Qiskit :class:`~qiskit.circuit.Clbit`.
274
+ """
275
+ if op.control_register is not None:
276
+ left_hand_side = next(reg for reg in circ.cregs if reg.name == op.control_register.name)
277
+ right_hand_side = op.expected_value_register
278
+ else:
279
+ assert op.control_bit is not None
280
+ left_hand_side = clbit_map[op.control_bit]
281
+ right_hand_side = op.expected_value_bit
282
+
283
+ condition: expr.Expr | tuple[ClassicalRegister | Clbit, int]
284
+ if op.comparison_kind == ComparisonKind.eq:
285
+ # directly handle equality conditions without expressions
286
+ condition = (left_hand_side, right_hand_side)
287
+ elif op.comparison_kind == ComparisonKind.neq:
288
+ condition = expr.not_equal(left_hand_side, right_hand_side)
289
+ elif op.comparison_kind == ComparisonKind.lt:
290
+ condition = expr.less(left_hand_side, right_hand_side)
291
+ elif op.comparison_kind == ComparisonKind.leq:
292
+ condition = expr.less_equal(left_hand_side, right_hand_side)
293
+ elif op.comparison_kind == ComparisonKind.gt:
294
+ condition = expr.greater(left_hand_side, right_hand_side)
295
+ elif op.comparison_kind == ComparisonKind.geq:
296
+ condition = expr.greater_equal(left_hand_side, right_hand_side)
297
+
298
+ then_circ = QuantumCircuit(*circ.qregs, *circ.cregs)
299
+ _add_operation(then_circ, op.then_operation, qubit_map, clbit_map)
300
+
301
+ else_circ: QuantumCircuit | None = None
302
+ if op.else_operation is not None:
303
+ else_circ = QuantumCircuit(*circ.qregs, *circ.cregs)
304
+ _add_operation(else_circ, op.else_operation, qubit_map, clbit_map)
305
+
306
+ circ.append(IfElseOp(condition, then_circ, else_circ), circ.qubits, circ.clbits)
307
+
308
+
309
+ def _add_operation(
310
+ circ: QuantumCircuit,
311
+ op: Operation,
312
+ qubit_map: Mapping[int, Qubit],
313
+ clbit_map: Mapping[int, Clbit],
314
+ ) -> None:
315
+ """Add an operation to a Qiskit circuit.
316
+
317
+ Args:
318
+ circ: The Qiskit circuit to add the operation to.
319
+ op: The MQT operation to add.
320
+ qubit_map: A mapping from qubit indices to Qiskit :class:`~qiskit.circuit.Qubit`.
321
+ clbit_map: A mapping from classical bit indices to Qiskit :class:`~qiskit.circuit.Clbit`.
322
+
323
+ Raises:
324
+ TypeError: If the operation type is not supported.
325
+ """
326
+ if isinstance(op, StandardOperation):
327
+ _add_standard_operation(circ, op, qubit_map)
328
+ elif isinstance(op, NonUnitaryOperation):
329
+ _add_non_unitary_operation(circ, op, qubit_map, clbit_map)
330
+ elif isinstance(op, CompoundOperation):
331
+ _add_compound_operation(circ, op, qubit_map, clbit_map)
332
+ elif isinstance(op, IfElseOperation):
333
+ _add_if_else_operation(circ, op, qubit_map, clbit_map)
334
+ else:
335
+ msg = f"Unsupported operation type: {type(op)}"
336
+ raise TypeError(msg)
337
+
338
+
339
+ def mqt_to_qiskit(qc: QuantumComputation, *, set_layout: bool = False) -> QuantumCircuit:
340
+ """Convert a :class:`~mqt.core.ir.QuantumComputation` to a Qiskit :class:`~qiskit.circuit.QuantumCircuit`.
341
+
342
+ Args:
343
+ qc: The MQT circuit to convert.
344
+ set_layout: If true, the :attr:`~qiskit.circuit.QuantumCircuit.layout` property is populated with the
345
+ initial layout and output permutation of the MQT circuit.
346
+
347
+ Returns:
348
+ The converted circuit.
349
+
350
+ Raises:
351
+ NotImplementedError: If the MQT circuit contains variables.
352
+ """
353
+ if not qc.is_variable_free():
354
+ msg = "Converting symbolic circuits with variables to Qiskit is not yet supported."
355
+ raise NotImplementedError(msg)
356
+
357
+ circ = QuantumCircuit()
358
+
359
+ if qc.name is not None:
360
+ circ.name = qc.name
361
+
362
+ qregs = sorted((qc.qregs | qc.ancregs).values(), key=lambda reg: reg.start)
363
+ qubit_map: dict[int, Qubit] = {}
364
+ for qreg in qregs:
365
+ qiskit_reg = (
366
+ QuantumRegister(size=qreg.size, name=qreg.name)
367
+ if qreg.name in qc.qregs
368
+ else AncillaRegister(size=qreg.size, name=qreg.name)
369
+ )
370
+ circ.add_register(qiskit_reg)
371
+ for i, qubit in enumerate(qiskit_reg):
372
+ qubit_map[qreg.start + i] = qubit
373
+
374
+ cregs = sorted(qc.cregs.values(), key=lambda reg: reg.start)
375
+ clbit_map: dict[int, Clbit] = {}
376
+ for creg in cregs:
377
+ qiskit_creg = ClassicalRegister(size=creg.size, name=creg.name)
378
+ circ.add_register(qiskit_creg)
379
+ for i, clbit in enumerate(qiskit_creg):
380
+ clbit_map[creg.start + i] = clbit
381
+
382
+ for op in qc:
383
+ _add_operation(circ, op, qubit_map, clbit_map)
384
+
385
+ if not set_layout:
386
+ return circ
387
+
388
+ # create a list of physical qubits initialized to none, but with the correct length
389
+ p2v: list[Qubit | None] = [None] * len(circ.qubits)
390
+ # fill the list with the correct virtual qubits
391
+ for virtual, physical in qc.initial_layout.items():
392
+ p2v[virtual] = qubit_map[physical]
393
+ initial_layout = Layout().from_qubit_list(p2v, *circ.qregs)
394
+
395
+ # reconstruct the final layout, which is the permutation between the initial layout and the output permutation
396
+ permutation = Permutation()
397
+ for physical, virtual in qc.output_permutation.items():
398
+ # find the virtual qubit in the initial layout and store the corresponding physical qubit
399
+ for p, v in qc.initial_layout.items():
400
+ if v == virtual:
401
+ permutation[p] = physical
402
+ continue
403
+
404
+ p2v = [None] * len(circ.qubits)
405
+ # fill the list with the correct virtual qubits
406
+ for physical, virtual in permutation.items():
407
+ p2v[virtual] = qubit_map[physical]
408
+ final_layout = Layout().from_qubit_list(p2v, *circ.qregs)
409
+
410
+ circ._layout = TranspileLayout( # noqa: SLF001
411
+ initial_layout=initial_layout,
412
+ input_qubit_mapping={qubit: idx for idx, qubit in qubit_map.items()},
413
+ final_layout=final_layout,
414
+ _input_qubit_count=qc.num_qubits,
415
+ _output_qubit_list=list(final_layout.get_virtual_bits()),
416
+ )
417
+
418
+ return circ