mqt-core 3.1.0__cp313-cp313-win_arm64.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 (343) 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 +21 -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-ir.dll +0 -0
  13. mqt/core/bin/mqt-core-na.dll +0 -0
  14. mqt/core/bin/mqt-core-qasm.dll +0 -0
  15. mqt/core/bin/mqt-core-zx.dll +0 -0
  16. mqt/core/dd.cp313-win_arm64.pyd +0 -0
  17. mqt/core/dd.pyi +1031 -0
  18. mqt/core/dd_evaluation.py +368 -0
  19. mqt/core/include/mqt-core/algorithms/BernsteinVazirani.hpp +39 -0
  20. mqt/core/include/mqt-core/algorithms/GHZState.hpp +18 -0
  21. mqt/core/include/mqt-core/algorithms/Grover.hpp +33 -0
  22. mqt/core/include/mqt-core/algorithms/QFT.hpp +21 -0
  23. mqt/core/include/mqt-core/algorithms/QPE.hpp +30 -0
  24. mqt/core/include/mqt-core/algorithms/RandomCliffordCircuit.hpp +22 -0
  25. mqt/core/include/mqt-core/algorithms/StatePreparation.hpp +43 -0
  26. mqt/core/include/mqt-core/algorithms/WState.hpp +18 -0
  27. mqt/core/include/mqt-core/algorithms/mqt_core_algorithms_export.h +43 -0
  28. mqt/core/include/mqt-core/boost/config/abi/borland_prefix.hpp +27 -0
  29. mqt/core/include/mqt-core/boost/config/abi/borland_suffix.hpp +12 -0
  30. mqt/core/include/mqt-core/boost/config/abi/msvc_prefix.hpp +22 -0
  31. mqt/core/include/mqt-core/boost/config/abi/msvc_suffix.hpp +8 -0
  32. mqt/core/include/mqt-core/boost/config/abi_prefix.hpp +25 -0
  33. mqt/core/include/mqt-core/boost/config/abi_suffix.hpp +25 -0
  34. mqt/core/include/mqt-core/boost/config/assert_cxx03.hpp +211 -0
  35. mqt/core/include/mqt-core/boost/config/assert_cxx11.hpp +212 -0
  36. mqt/core/include/mqt-core/boost/config/assert_cxx14.hpp +47 -0
  37. mqt/core/include/mqt-core/boost/config/assert_cxx17.hpp +65 -0
  38. mqt/core/include/mqt-core/boost/config/assert_cxx20.hpp +59 -0
  39. mqt/core/include/mqt-core/boost/config/assert_cxx23.hpp +41 -0
  40. mqt/core/include/mqt-core/boost/config/assert_cxx98.hpp +23 -0
  41. mqt/core/include/mqt-core/boost/config/auto_link.hpp +525 -0
  42. mqt/core/include/mqt-core/boost/config/compiler/borland.hpp +342 -0
  43. mqt/core/include/mqt-core/boost/config/compiler/clang.hpp +370 -0
  44. mqt/core/include/mqt-core/boost/config/compiler/clang_version.hpp +89 -0
  45. mqt/core/include/mqt-core/boost/config/compiler/codegear.hpp +389 -0
  46. mqt/core/include/mqt-core/boost/config/compiler/comeau.hpp +59 -0
  47. mqt/core/include/mqt-core/boost/config/compiler/common_edg.hpp +185 -0
  48. mqt/core/include/mqt-core/boost/config/compiler/compaq_cxx.hpp +19 -0
  49. mqt/core/include/mqt-core/boost/config/compiler/cray.hpp +446 -0
  50. mqt/core/include/mqt-core/boost/config/compiler/diab.hpp +26 -0
  51. mqt/core/include/mqt-core/boost/config/compiler/digitalmars.hpp +146 -0
  52. mqt/core/include/mqt-core/boost/config/compiler/gcc.hpp +386 -0
  53. mqt/core/include/mqt-core/boost/config/compiler/gcc_xml.hpp +115 -0
  54. mqt/core/include/mqt-core/boost/config/compiler/greenhills.hpp +28 -0
  55. mqt/core/include/mqt-core/boost/config/compiler/hp_acc.hpp +153 -0
  56. mqt/core/include/mqt-core/boost/config/compiler/intel.hpp +577 -0
  57. mqt/core/include/mqt-core/boost/config/compiler/kai.hpp +33 -0
  58. mqt/core/include/mqt-core/boost/config/compiler/metrowerks.hpp +201 -0
  59. mqt/core/include/mqt-core/boost/config/compiler/mpw.hpp +143 -0
  60. mqt/core/include/mqt-core/boost/config/compiler/nvcc.hpp +64 -0
  61. mqt/core/include/mqt-core/boost/config/compiler/pathscale.hpp +141 -0
  62. mqt/core/include/mqt-core/boost/config/compiler/pgi.hpp +23 -0
  63. mqt/core/include/mqt-core/boost/config/compiler/sgi_mipspro.hpp +29 -0
  64. mqt/core/include/mqt-core/boost/config/compiler/sunpro_cc.hpp +225 -0
  65. mqt/core/include/mqt-core/boost/config/compiler/vacpp.hpp +189 -0
  66. mqt/core/include/mqt-core/boost/config/compiler/visualc.hpp +398 -0
  67. mqt/core/include/mqt-core/boost/config/compiler/xlcpp.hpp +303 -0
  68. mqt/core/include/mqt-core/boost/config/compiler/xlcpp_zos.hpp +174 -0
  69. mqt/core/include/mqt-core/boost/config/detail/cxx_composite.hpp +218 -0
  70. mqt/core/include/mqt-core/boost/config/detail/posix_features.hpp +95 -0
  71. mqt/core/include/mqt-core/boost/config/detail/select_compiler_config.hpp +157 -0
  72. mqt/core/include/mqt-core/boost/config/detail/select_platform_config.hpp +147 -0
  73. mqt/core/include/mqt-core/boost/config/detail/select_stdlib_config.hpp +121 -0
  74. mqt/core/include/mqt-core/boost/config/detail/suffix.hpp +1334 -0
  75. mqt/core/include/mqt-core/boost/config/header_deprecated.hpp +26 -0
  76. mqt/core/include/mqt-core/boost/config/helper_macros.hpp +37 -0
  77. mqt/core/include/mqt-core/boost/config/no_tr1/cmath.hpp +28 -0
  78. mqt/core/include/mqt-core/boost/config/no_tr1/complex.hpp +28 -0
  79. mqt/core/include/mqt-core/boost/config/no_tr1/functional.hpp +28 -0
  80. mqt/core/include/mqt-core/boost/config/no_tr1/memory.hpp +28 -0
  81. mqt/core/include/mqt-core/boost/config/no_tr1/utility.hpp +28 -0
  82. mqt/core/include/mqt-core/boost/config/platform/aix.hpp +33 -0
  83. mqt/core/include/mqt-core/boost/config/platform/amigaos.hpp +15 -0
  84. mqt/core/include/mqt-core/boost/config/platform/beos.hpp +26 -0
  85. mqt/core/include/mqt-core/boost/config/platform/bsd.hpp +83 -0
  86. mqt/core/include/mqt-core/boost/config/platform/cloudabi.hpp +18 -0
  87. mqt/core/include/mqt-core/boost/config/platform/cray.hpp +18 -0
  88. mqt/core/include/mqt-core/boost/config/platform/cygwin.hpp +71 -0
  89. mqt/core/include/mqt-core/boost/config/platform/haiku.hpp +31 -0
  90. mqt/core/include/mqt-core/boost/config/platform/hpux.hpp +87 -0
  91. mqt/core/include/mqt-core/boost/config/platform/irix.hpp +31 -0
  92. mqt/core/include/mqt-core/boost/config/platform/linux.hpp +106 -0
  93. mqt/core/include/mqt-core/boost/config/platform/macos.hpp +87 -0
  94. mqt/core/include/mqt-core/boost/config/platform/qnxnto.hpp +31 -0
  95. mqt/core/include/mqt-core/boost/config/platform/solaris.hpp +31 -0
  96. mqt/core/include/mqt-core/boost/config/platform/symbian.hpp +97 -0
  97. mqt/core/include/mqt-core/boost/config/platform/vms.hpp +25 -0
  98. mqt/core/include/mqt-core/boost/config/platform/vxworks.hpp +422 -0
  99. mqt/core/include/mqt-core/boost/config/platform/wasm.hpp +23 -0
  100. mqt/core/include/mqt-core/boost/config/platform/win32.hpp +90 -0
  101. mqt/core/include/mqt-core/boost/config/platform/zos.hpp +32 -0
  102. mqt/core/include/mqt-core/boost/config/pragma_message.hpp +31 -0
  103. mqt/core/include/mqt-core/boost/config/requires_threads.hpp +92 -0
  104. mqt/core/include/mqt-core/boost/config/stdlib/dinkumware.hpp +324 -0
  105. mqt/core/include/mqt-core/boost/config/stdlib/libcomo.hpp +93 -0
  106. mqt/core/include/mqt-core/boost/config/stdlib/libcpp.hpp +180 -0
  107. mqt/core/include/mqt-core/boost/config/stdlib/libstdcpp3.hpp +482 -0
  108. mqt/core/include/mqt-core/boost/config/stdlib/modena.hpp +79 -0
  109. mqt/core/include/mqt-core/boost/config/stdlib/msl.hpp +98 -0
  110. mqt/core/include/mqt-core/boost/config/stdlib/roguewave.hpp +208 -0
  111. mqt/core/include/mqt-core/boost/config/stdlib/sgi.hpp +168 -0
  112. mqt/core/include/mqt-core/boost/config/stdlib/stlport.hpp +258 -0
  113. mqt/core/include/mqt-core/boost/config/stdlib/vacpp.hpp +74 -0
  114. mqt/core/include/mqt-core/boost/config/stdlib/xlcpp_zos.hpp +61 -0
  115. mqt/core/include/mqt-core/boost/config/user.hpp +133 -0
  116. mqt/core/include/mqt-core/boost/config/warning_disable.hpp +47 -0
  117. mqt/core/include/mqt-core/boost/config/workaround.hpp +305 -0
  118. mqt/core/include/mqt-core/boost/config.hpp +67 -0
  119. mqt/core/include/mqt-core/boost/cstdint.hpp +556 -0
  120. mqt/core/include/mqt-core/boost/cxx11_char_types.hpp +70 -0
  121. mqt/core/include/mqt-core/boost/detail/workaround.hpp +10 -0
  122. mqt/core/include/mqt-core/boost/limits.hpp +146 -0
  123. mqt/core/include/mqt-core/boost/multiprecision/complex128.hpp +24 -0
  124. mqt/core/include/mqt-core/boost/multiprecision/complex_adaptor.hpp +1046 -0
  125. mqt/core/include/mqt-core/boost/multiprecision/concepts/mp_number_archetypes.hpp +257 -0
  126. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/io.hpp +698 -0
  127. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/transcendental.hpp +157 -0
  128. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float.hpp +2297 -0
  129. mqt/core/include/mqt-core/boost/multiprecision/cpp_complex.hpp +12 -0
  130. mqt/core/include/mqt-core/boost/multiprecision/cpp_dec_float.hpp +3690 -0
  131. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add.hpp +368 -0
  132. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add_unsigned.hpp +387 -0
  133. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/bitwise.hpp +889 -0
  134. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/checked.hpp +178 -0
  135. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/comparison.hpp +374 -0
  136. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/cpp_int_config.hpp +161 -0
  137. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/divide.hpp +703 -0
  138. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/import_export.hpp +248 -0
  139. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/intel_intrinsics.hpp +138 -0
  140. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/limits.hpp +282 -0
  141. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/literals.hpp +295 -0
  142. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/misc.hpp +1457 -0
  143. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/multiply.hpp +848 -0
  144. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/serialize.hpp +211 -0
  145. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/value_pack.hpp +42 -0
  146. mqt/core/include/mqt-core/boost/multiprecision/cpp_int.hpp +2360 -0
  147. mqt/core/include/mqt-core/boost/multiprecision/debug_adaptor.hpp +760 -0
  148. mqt/core/include/mqt-core/boost/multiprecision/detail/assert.hpp +29 -0
  149. mqt/core/include/mqt-core/boost/multiprecision/detail/atomic.hpp +62 -0
  150. mqt/core/include/mqt-core/boost/multiprecision/detail/bitscan.hpp +317 -0
  151. mqt/core/include/mqt-core/boost/multiprecision/detail/check_cpp11_config.hpp +64 -0
  152. mqt/core/include/mqt-core/boost/multiprecision/detail/constexpr.hpp +88 -0
  153. mqt/core/include/mqt-core/boost/multiprecision/detail/default_ops.hpp +4052 -0
  154. mqt/core/include/mqt-core/boost/multiprecision/detail/digits.hpp +49 -0
  155. mqt/core/include/mqt-core/boost/multiprecision/detail/dynamic_array.hpp +44 -0
  156. mqt/core/include/mqt-core/boost/multiprecision/detail/empty_value.hpp +87 -0
  157. mqt/core/include/mqt-core/boost/multiprecision/detail/endian.hpp +35 -0
  158. mqt/core/include/mqt-core/boost/multiprecision/detail/et_ops.hpp +1831 -0
  159. mqt/core/include/mqt-core/boost/multiprecision/detail/float128_functions.hpp +95 -0
  160. mqt/core/include/mqt-core/boost/multiprecision/detail/float_string_cvt.hpp +333 -0
  161. mqt/core/include/mqt-core/boost/multiprecision/detail/fpclassify.hpp +101 -0
  162. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/constants.hpp +288 -0
  163. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/pow.hpp +905 -0
  164. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trig.hpp +1058 -0
  165. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trunc.hpp +82 -0
  166. mqt/core/include/mqt-core/boost/multiprecision/detail/generic_interconvert.hpp +687 -0
  167. mqt/core/include/mqt-core/boost/multiprecision/detail/hash.hpp +56 -0
  168. mqt/core/include/mqt-core/boost/multiprecision/detail/integer_ops.hpp +474 -0
  169. mqt/core/include/mqt-core/boost/multiprecision/detail/itos.hpp +39 -0
  170. mqt/core/include/mqt-core/boost/multiprecision/detail/min_max.hpp +106 -0
  171. mqt/core/include/mqt-core/boost/multiprecision/detail/no_et_ops.hpp +661 -0
  172. mqt/core/include/mqt-core/boost/multiprecision/detail/no_exceptions_support.hpp +55 -0
  173. mqt/core/include/mqt-core/boost/multiprecision/detail/number_base.hpp +1656 -0
  174. mqt/core/include/mqt-core/boost/multiprecision/detail/number_compare.hpp +848 -0
  175. mqt/core/include/mqt-core/boost/multiprecision/detail/precision.hpp +313 -0
  176. mqt/core/include/mqt-core/boost/multiprecision/detail/rebind.hpp +19 -0
  177. mqt/core/include/mqt-core/boost/multiprecision/detail/standalone_config.hpp +148 -0
  178. mqt/core/include/mqt-core/boost/multiprecision/detail/static_array.hpp +42 -0
  179. mqt/core/include/mqt-core/boost/multiprecision/detail/string_helpers.hpp +48 -0
  180. mqt/core/include/mqt-core/boost/multiprecision/detail/tables.hpp +80 -0
  181. mqt/core/include/mqt-core/boost/multiprecision/detail/ublas_interop.hpp +75 -0
  182. mqt/core/include/mqt-core/boost/multiprecision/detail/uniform_int_distribution.hpp +212 -0
  183. mqt/core/include/mqt-core/boost/multiprecision/detail/utype_helper.hpp +374 -0
  184. mqt/core/include/mqt-core/boost/multiprecision/eigen.hpp +248 -0
  185. mqt/core/include/mqt-core/boost/multiprecision/float128.hpp +920 -0
  186. mqt/core/include/mqt-core/boost/multiprecision/fwd.hpp +268 -0
  187. mqt/core/include/mqt-core/boost/multiprecision/gmp.hpp +4060 -0
  188. mqt/core/include/mqt-core/boost/multiprecision/integer.hpp +363 -0
  189. mqt/core/include/mqt-core/boost/multiprecision/logged_adaptor.hpp +834 -0
  190. mqt/core/include/mqt-core/boost/multiprecision/miller_rabin.hpp +221 -0
  191. mqt/core/include/mqt-core/boost/multiprecision/mpc.hpp +1721 -0
  192. mqt/core/include/mqt-core/boost/multiprecision/mpfi.hpp +2559 -0
  193. mqt/core/include/mqt-core/boost/multiprecision/mpfr.hpp +3644 -0
  194. mqt/core/include/mqt-core/boost/multiprecision/number.hpp +2500 -0
  195. mqt/core/include/mqt-core/boost/multiprecision/random.hpp +23 -0
  196. mqt/core/include/mqt-core/boost/multiprecision/rational_adaptor.hpp +1289 -0
  197. mqt/core/include/mqt-core/boost/multiprecision/tommath.hpp +1034 -0
  198. mqt/core/include/mqt-core/boost/multiprecision/traits/explicit_conversion.hpp +67 -0
  199. mqt/core/include/mqt-core/boost/multiprecision/traits/extract_exponent_type.hpp +28 -0
  200. mqt/core/include/mqt-core/boost/multiprecision/traits/is_backend.hpp +91 -0
  201. mqt/core/include/mqt-core/boost/multiprecision/traits/is_byte_container.hpp +51 -0
  202. mqt/core/include/mqt-core/boost/multiprecision/traits/is_complex.hpp +22 -0
  203. mqt/core/include/mqt-core/boost/multiprecision/traits/is_convertible_arithmetic.hpp +51 -0
  204. mqt/core/include/mqt-core/boost/multiprecision/traits/is_restricted_conversion.hpp +47 -0
  205. mqt/core/include/mqt-core/boost/multiprecision/traits/is_variable_precision.hpp +25 -0
  206. mqt/core/include/mqt-core/boost/multiprecision/traits/max_digits10.hpp +79 -0
  207. mqt/core/include/mqt-core/boost/multiprecision/traits/std_integer_traits.hpp +90 -0
  208. mqt/core/include/mqt-core/boost/multiprecision/traits/transcendental_reduction_type.hpp +21 -0
  209. mqt/core/include/mqt-core/boost/version.hpp +32 -0
  210. mqt/core/include/mqt-core/circuit_optimizer/CircuitOptimizer.hpp +106 -0
  211. mqt/core/include/mqt-core/circuit_optimizer/mqt_core_circuit_optimizer_export.h +43 -0
  212. mqt/core/include/mqt-core/datastructures/DirectedAcyclicGraph.hpp +117 -0
  213. mqt/core/include/mqt-core/datastructures/DirectedGraph.hpp +158 -0
  214. mqt/core/include/mqt-core/datastructures/DisjointSet.hpp +50 -0
  215. mqt/core/include/mqt-core/datastructures/Layer.hpp +172 -0
  216. mqt/core/include/mqt-core/datastructures/SymmetricMatrix.hpp +57 -0
  217. mqt/core/include/mqt-core/datastructures/UndirectedGraph.hpp +227 -0
  218. mqt/core/include/mqt-core/datastructures/mqt_core_ds_export.h +43 -0
  219. mqt/core/include/mqt-core/dd/Approximation.hpp +45 -0
  220. mqt/core/include/mqt-core/dd/CachedEdge.hpp +167 -0
  221. mqt/core/include/mqt-core/dd/Complex.hpp +165 -0
  222. mqt/core/include/mqt-core/dd/ComplexNumbers.hpp +150 -0
  223. mqt/core/include/mqt-core/dd/ComplexValue.hpp +184 -0
  224. mqt/core/include/mqt-core/dd/ComputeTable.hpp +183 -0
  225. mqt/core/include/mqt-core/dd/DDDefinitions.hpp +139 -0
  226. mqt/core/include/mqt-core/dd/DDpackageConfig.hpp +104 -0
  227. mqt/core/include/mqt-core/dd/DensityNoiseTable.hpp +114 -0
  228. mqt/core/include/mqt-core/dd/Edge.hpp +416 -0
  229. mqt/core/include/mqt-core/dd/Export.hpp +438 -0
  230. mqt/core/include/mqt-core/dd/FunctionalityConstruction.hpp +75 -0
  231. mqt/core/include/mqt-core/dd/GateMatrixDefinitions.hpp +43 -0
  232. mqt/core/include/mqt-core/dd/LinkedListBase.hpp +45 -0
  233. mqt/core/include/mqt-core/dd/MemoryManager.hpp +193 -0
  234. mqt/core/include/mqt-core/dd/Node.hpp +223 -0
  235. mqt/core/include/mqt-core/dd/NoiseFunctionality.hpp +144 -0
  236. mqt/core/include/mqt-core/dd/Operations.hpp +308 -0
  237. mqt/core/include/mqt-core/dd/Package.hpp +2036 -0
  238. mqt/core/include/mqt-core/dd/Package_fwd.hpp +22 -0
  239. mqt/core/include/mqt-core/dd/RealNumber.hpp +255 -0
  240. mqt/core/include/mqt-core/dd/RealNumberUniqueTable.hpp +217 -0
  241. mqt/core/include/mqt-core/dd/Simulation.hpp +98 -0
  242. mqt/core/include/mqt-core/dd/StateGeneration.hpp +143 -0
  243. mqt/core/include/mqt-core/dd/StochasticNoiseOperationTable.hpp +88 -0
  244. mqt/core/include/mqt-core/dd/UnaryComputeTable.hpp +121 -0
  245. mqt/core/include/mqt-core/dd/UniqueTable.hpp +243 -0
  246. mqt/core/include/mqt-core/dd/mqt_core_dd_export.h +43 -0
  247. mqt/core/include/mqt-core/dd/statistics/MemoryManagerStatistics.hpp +84 -0
  248. mqt/core/include/mqt-core/dd/statistics/PackageStatistics.hpp +55 -0
  249. mqt/core/include/mqt-core/dd/statistics/Statistics.hpp +48 -0
  250. mqt/core/include/mqt-core/dd/statistics/TableStatistics.hpp +79 -0
  251. mqt/core/include/mqt-core/dd/statistics/UniqueTableStatistics.hpp +31 -0
  252. mqt/core/include/mqt-core/ir/Definitions.hpp +108 -0
  253. mqt/core/include/mqt-core/ir/Permutation.hpp +213 -0
  254. mqt/core/include/mqt-core/ir/QuantumComputation.hpp +594 -0
  255. mqt/core/include/mqt-core/ir/Register.hpp +125 -0
  256. mqt/core/include/mqt-core/ir/mqt_core_ir_export.h +43 -0
  257. mqt/core/include/mqt-core/ir/operations/AodOperation.hpp +92 -0
  258. mqt/core/include/mqt-core/ir/operations/ClassicControlledOperation.hpp +156 -0
  259. mqt/core/include/mqt-core/ir/operations/CompoundOperation.hpp +210 -0
  260. mqt/core/include/mqt-core/ir/operations/Control.hpp +142 -0
  261. mqt/core/include/mqt-core/ir/operations/Expression.hpp +847 -0
  262. mqt/core/include/mqt-core/ir/operations/NonUnitaryOperation.hpp +118 -0
  263. mqt/core/include/mqt-core/ir/operations/OpType.hpp +115 -0
  264. mqt/core/include/mqt-core/ir/operations/OpType.inc +75 -0
  265. mqt/core/include/mqt-core/ir/operations/Operation.hpp +245 -0
  266. mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +138 -0
  267. mqt/core/include/mqt-core/ir/operations/SymbolicOperation.hpp +144 -0
  268. mqt/core/include/mqt-core/na/NAComputation.hpp +185 -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/mqt_core_na_export.h +43 -0
  273. mqt/core/include/mqt-core/na/operations/GlobalCZOp.hpp +38 -0
  274. mqt/core/include/mqt-core/na/operations/GlobalOp.hpp +58 -0
  275. mqt/core/include/mqt-core/na/operations/GlobalRYOp.hpp +42 -0
  276. mqt/core/include/mqt-core/na/operations/LoadOp.hpp +89 -0
  277. mqt/core/include/mqt-core/na/operations/LocalOp.hpp +56 -0
  278. mqt/core/include/mqt-core/na/operations/LocalRZOp.hpp +42 -0
  279. mqt/core/include/mqt-core/na/operations/LocalUOp.hpp +49 -0
  280. mqt/core/include/mqt-core/na/operations/MoveOp.hpp +66 -0
  281. mqt/core/include/mqt-core/na/operations/Op.hpp +62 -0
  282. mqt/core/include/mqt-core/na/operations/ShuttlingOp.hpp +51 -0
  283. mqt/core/include/mqt-core/na/operations/StoreOp.hpp +87 -0
  284. mqt/core/include/mqt-core/qasm3/Exception.hpp +85 -0
  285. mqt/core/include/mqt-core/qasm3/Gate.hpp +65 -0
  286. mqt/core/include/mqt-core/qasm3/Importer.hpp +192 -0
  287. mqt/core/include/mqt-core/qasm3/InstVisitor.hpp +145 -0
  288. mqt/core/include/mqt-core/qasm3/NestedEnvironment.hpp +41 -0
  289. mqt/core/include/mqt-core/qasm3/Parser.hpp +170 -0
  290. mqt/core/include/mqt-core/qasm3/Scanner.hpp +73 -0
  291. mqt/core/include/mqt-core/qasm3/Statement.hpp +486 -0
  292. mqt/core/include/mqt-core/qasm3/Statement_fwd.hpp +39 -0
  293. mqt/core/include/mqt-core/qasm3/StdGates.hpp +123 -0
  294. mqt/core/include/mqt-core/qasm3/Token.hpp +198 -0
  295. mqt/core/include/mqt-core/qasm3/Types.hpp +238 -0
  296. mqt/core/include/mqt-core/qasm3/Types_fwd.hpp +22 -0
  297. mqt/core/include/mqt-core/qasm3/mqt_core_qasm_export.h +43 -0
  298. mqt/core/include/mqt-core/qasm3/passes/CompilerPass.hpp +22 -0
  299. mqt/core/include/mqt-core/qasm3/passes/ConstEvalPass.hpp +102 -0
  300. mqt/core/include/mqt-core/qasm3/passes/TypeCheckPass.hpp +124 -0
  301. mqt/core/include/mqt-core/zx/FunctionalityConstruction.hpp +125 -0
  302. mqt/core/include/mqt-core/zx/Rational.hpp +318 -0
  303. mqt/core/include/mqt-core/zx/Rules.hpp +132 -0
  304. mqt/core/include/mqt-core/zx/Simplify.hpp +182 -0
  305. mqt/core/include/mqt-core/zx/Utils.hpp +212 -0
  306. mqt/core/include/mqt-core/zx/ZXDefinitions.hpp +93 -0
  307. mqt/core/include/mqt-core/zx/ZXDiagram.hpp +480 -0
  308. mqt/core/include/mqt-core/zx/mqt_core_zx_export.h +43 -0
  309. mqt/core/ir/__init__.pyi +1998 -0
  310. mqt/core/ir/operations.pyi +1019 -0
  311. mqt/core/ir/registers.pyi +91 -0
  312. mqt/core/ir/symbolic.pyi +177 -0
  313. mqt/core/ir.cp313-win_arm64.pyd +0 -0
  314. mqt/core/lib/mqt-core-algorithms.lib +0 -0
  315. mqt/core/lib/mqt-core-circuit-optimizer.lib +0 -0
  316. mqt/core/lib/mqt-core-dd.lib +0 -0
  317. mqt/core/lib/mqt-core-ds.lib +0 -0
  318. mqt/core/lib/mqt-core-ir.lib +0 -0
  319. mqt/core/lib/mqt-core-na.lib +0 -0
  320. mqt/core/lib/mqt-core-qasm.lib +0 -0
  321. mqt/core/lib/mqt-core-zx.lib +0 -0
  322. mqt/core/plugins/__init__.py +9 -0
  323. mqt/core/plugins/qiskit/__init__.py +19 -0
  324. mqt/core/plugins/qiskit/mqt_to_qiskit.py +354 -0
  325. mqt/core/plugins/qiskit/qiskit_to_mqt.py +455 -0
  326. mqt/core/py.typed +2 -0
  327. mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +52 -0
  328. mqt/core/share/cmake/mqt-core/Cache.cmake +32 -0
  329. mqt/core/share/cmake/mqt-core/FindGMP.cmake +103 -0
  330. mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +40 -0
  331. mqt/core/share/cmake/mqt-core/PreventInSourceBuilds.cmake +25 -0
  332. mqt/core/share/cmake/mqt-core/StandardProjectSettings.cmake +87 -0
  333. mqt/core/share/cmake/mqt-core/mqt-core-config-version.cmake +85 -0
  334. mqt/core/share/cmake/mqt-core/mqt-core-config.cmake +49 -0
  335. mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +90 -0
  336. mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +324 -0
  337. mqt_core-3.1.0.dist-info/DELVEWHEEL +2 -0
  338. mqt_core-3.1.0.dist-info/METADATA +168 -0
  339. mqt_core-3.1.0.dist-info/RECORD +343 -0
  340. mqt_core-3.1.0.dist-info/WHEEL +5 -0
  341. mqt_core-3.1.0.dist-info/entry_points.txt +4 -0
  342. mqt_core-3.1.0.dist-info/licenses/LICENSE.md +22 -0
  343. mqt_core.libs/msvcp140.dll +0 -0
@@ -0,0 +1,368 @@
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
+ """Evaluating the json file generated by the benchmarking script."""
10
+
11
+ from __future__ import annotations
12
+
13
+ import argparse
14
+ import json
15
+ import math
16
+ from pathlib import Path
17
+ from typing import TYPE_CHECKING, Any, TypedDict
18
+
19
+ import pandas as pd
20
+
21
+ if TYPE_CHECKING:
22
+ from os import PathLike
23
+
24
+ # Avoid output truncation
25
+ pd.set_option("display.max_colwidth", None)
26
+ pd.set_option("display.max_rows", None)
27
+ pd.set_option("display.width", None)
28
+
29
+ __sort_options = ["ratio", "algorithm"]
30
+ __higher_better_metrics = ["hits", "hit_ratio"]
31
+
32
+
33
+ class _BColors:
34
+ """Class for colored output in the terminal."""
35
+
36
+ OKGREEN = "\033[92m"
37
+ FAIL = "\033[91m"
38
+ ENDC = "\033[0m"
39
+
40
+
41
+ def __flatten_dict(d: dict[Any, Any], parent_key: str = "", sep: str = ".") -> dict[str, Any]:
42
+ """Flatten a nested dictionary. Every value only has one key which is the path to the value.
43
+
44
+ Returns:
45
+ A dictionary with the flattened keys and the values.
46
+ """
47
+ items = {}
48
+ for key, value in d.items():
49
+ new_key = f"{parent_key}{sep}{key}" if parent_key else key
50
+ if isinstance(value, dict):
51
+ items.update(__flatten_dict(value, new_key, sep=sep))
52
+ else:
53
+ items[new_key] = value
54
+ return items
55
+
56
+
57
+ class _BenchmarkDict(TypedDict, total=False):
58
+ """A dictionary containing the data of one particular benchmark."""
59
+
60
+ algo: str
61
+ task: str
62
+ n: int
63
+ component: str
64
+ metric: str
65
+
66
+
67
+ def __post_processing(key: str) -> _BenchmarkDict:
68
+ """Postprocess the key of a flattened dictionary to get the metrics for the DataFrame columns.
69
+
70
+ Returns:
71
+ A dictionary containing the algorithm, task, number of qubits, component, and metric.
72
+
73
+ Raises:
74
+ ValueError: If the key is missing the algorithm, task, number of qubits, or metric.
75
+ """
76
+ metrics_divided = key.split(".")
77
+ result_metrics = _BenchmarkDict()
78
+ if len(metrics_divided) < 4:
79
+ raise ValueError("Benchmark " + key + " is missing algorithm, task, number of qubits or metric!")
80
+ result_metrics["algo"] = metrics_divided.pop(0)
81
+ result_metrics["task"] = metrics_divided.pop(0)
82
+ result_metrics["n"] = int(metrics_divided.pop(0))
83
+ num_remaining_benchmarks = len(metrics_divided)
84
+ if num_remaining_benchmarks == 1:
85
+ result_metrics["component"] = ""
86
+ result_metrics["metric"] = metrics_divided.pop(0)
87
+ elif num_remaining_benchmarks == 2:
88
+ if metrics_divided[0] == "dd":
89
+ result_metrics["component"] = "" if metrics_divided[0] == "dd" else metrics_divided.pop(0)
90
+ result_metrics["metric"] = metrics_divided[-1]
91
+ else:
92
+ separator = "_"
93
+ # if the second-to-last element is not "total" then only the last element is the metric and the rest component
94
+ if metrics_divided[-2] == "total":
95
+ metric = separator.join(metrics_divided[-2:])
96
+ result_metrics["metric"] = metric
97
+ component = separator.join(metrics_divided[:-2])
98
+ component = component.removeprefix("dd_")
99
+ result_metrics["component"] = component
100
+ else:
101
+ result_metrics["metric"] = metrics_divided[-1]
102
+ component = separator.join(metrics_divided[:-1])
103
+ component = component.removeprefix("dd_")
104
+ result_metrics["component"] = component
105
+
106
+ return result_metrics
107
+
108
+
109
+ class _DataDict(TypedDict):
110
+ """A dictionary containing the data for one entry in the DataFrame."""
111
+
112
+ before: float
113
+ after: float
114
+ ratio: float
115
+ algo: str
116
+ task: str
117
+ n: int
118
+ component: str
119
+ metric: str
120
+
121
+
122
+ def __aggregate(baseline_filepath: str | PathLike[str], feature_filepath: str | PathLike[str]) -> pd.DataFrame:
123
+ """Aggregate the data from the baseline and feature json files into one DataFrame for visualization.
124
+
125
+ Returns:
126
+ A DataFrame containing the aggregated data.
127
+ """
128
+ base_path = Path(baseline_filepath)
129
+ with base_path.open(mode="r", encoding="utf-8") as f:
130
+ d = json.load(f)
131
+ flattened_data = __flatten_dict(d)
132
+ feature_path = Path(feature_filepath)
133
+ with feature_path.open(mode="r", encoding="utf-8") as f:
134
+ d_feature = json.load(f)
135
+ flattened_feature = __flatten_dict(d_feature)
136
+
137
+ for k, v in flattened_data.items():
138
+ value = v
139
+ if value == "unused":
140
+ value = float("nan")
141
+ if k in flattened_feature:
142
+ ls = [value, flattened_feature[k]]
143
+ flattened_data[k] = ls
144
+ del flattened_feature[k]
145
+ else:
146
+ ls = [value, float("nan")]
147
+ flattened_data[k] = ls
148
+ # If a benchmark is in the feature file but not in the baseline file, it should be added with baseline marked as
149
+ # "skipped"
150
+ for k, v in flattened_feature.items():
151
+ value = v
152
+ if value == "unused":
153
+ value = float("nan")
154
+ ls = [float("nan"), value]
155
+ flattened_data[k] = ls
156
+
157
+ df_all_entries = [] # records individual entries
158
+
159
+ for k, v in flattened_data.items():
160
+ before = v[0]
161
+ after = v[1]
162
+ if math.isnan(before) or math.isnan(after):
163
+ ratio = float("nan")
164
+ else:
165
+ ratio = after / before if before != 0 else 1 if after == 0 else math.inf
166
+ key = k
167
+ if k.endswith(tuple(__higher_better_metrics)):
168
+ ratio = 1 / ratio if ratio != 0 else math.inf
169
+ key += "*"
170
+ before = round(before, 3) if isinstance(before, float) else before
171
+ after = round(after, 3) if isinstance(after, float) else after
172
+ ratio = round(ratio, 3)
173
+ # postprocessing
174
+ result_metrics = __post_processing(key)
175
+
176
+ df_all_entries.append(
177
+ _DataDict(
178
+ before=before,
179
+ after=after,
180
+ ratio=ratio,
181
+ algo=result_metrics["algo"],
182
+ task=result_metrics["task"],
183
+ n=result_metrics["n"],
184
+ component=result_metrics["component"],
185
+ metric=result_metrics["metric"],
186
+ ),
187
+ )
188
+
189
+ df_all = pd.DataFrame(df_all_entries)
190
+ df_all.index = pd.Index([""] * len(df_all.index))
191
+
192
+ return df_all
193
+
194
+
195
+ def __print_results(
196
+ *,
197
+ df: pd.DataFrame,
198
+ sort_indices: list[str],
199
+ factor: float,
200
+ no_split: bool,
201
+ only_changed: bool,
202
+ ) -> None:
203
+ """Print the results in a nice table."""
204
+ # after significantly smaller than before
205
+ m1 = df["ratio"] < 1 - factor
206
+ # after significantly larger than before
207
+ m2 = df["ratio"] > 1 + factor
208
+ # after is nan or before is nan or after is close to before
209
+ m3 = (df["ratio"] != df["ratio"]) | ((1 - factor <= df["ratio"]) & (df["ratio"] <= 1 + factor))
210
+
211
+ if no_split:
212
+ if only_changed:
213
+ print(df[m1 | m2].sort_values(by=sort_indices).to_markdown(index=False, stralign="right"))
214
+ print(df.sort_values(by=sort_indices).to_markdown(index=False, stralign="right"))
215
+ return
216
+
217
+ print(f"\n{_BColors.OKGREEN}Benchmarks that have improved:{_BColors.ENDC}\n")
218
+ print(df[m1].sort_values(by=sort_indices).to_markdown(index=False, stralign="right"))
219
+
220
+ print(f"\n{_BColors.FAIL}Benchmarks that have worsened:{_BColors.ENDC}\n")
221
+ print(df[m2].sort_values(by=sort_indices, ascending=False).to_markdown(index=False, stralign="right"))
222
+
223
+ if only_changed:
224
+ return
225
+
226
+ print("\nBenchmarks that have stayed the same:\n")
227
+ print(df[m3].sort_values(by=sort_indices).to_markdown(index=False, stralign="right"))
228
+
229
+
230
+ def compare(
231
+ baseline_filepath: str | PathLike[str],
232
+ feature_filepath: str | PathLike[str],
233
+ *,
234
+ factor: float = 0.1,
235
+ sort: str = "ratio",
236
+ dd: bool = False,
237
+ only_changed: bool = False,
238
+ no_split: bool = False,
239
+ algorithm: str | None = None,
240
+ task: str | None = None,
241
+ num_qubits: int | None = None,
242
+ ) -> None:
243
+ """Compare the results of two benchmarking runs from the generated json file.
244
+
245
+ Args:
246
+ baseline_filepath: Path to the baseline json file.
247
+ feature_filepath: Path to the feature json file.
248
+ factor: How much a result has to change to be considered significant.
249
+ sort: Sort the table by this column. Valid options are "ratio" and "algorithm".
250
+ dd: Whether to show the detailed DD benchmark results.
251
+ only_changed: Whether to only show results that changed significantly.
252
+ no_split: Whether to merge all results together in one table or to separate the results
253
+ into benchmarks that improved, stayed the same, or worsened.
254
+ algorithm: Only show results for this algorithm.
255
+ task: Only show results for this task.
256
+ num_qubits: Only show results for this number of qubits. Can only be used if algorithm is also specified.
257
+
258
+ Raises:
259
+ ValueError: If factor is negative or sort is invalid or if num_qubits is specified while algorithm is not.
260
+ """
261
+ if factor < 0:
262
+ msg = "Factor must be positive!"
263
+ raise ValueError(msg)
264
+ if sort not in __sort_options:
265
+ msg = "Invalid sort option! Valid options are 'ratio' and 'algorithm'."
266
+ raise ValueError(msg)
267
+ if algorithm is None and num_qubits is not None:
268
+ msg = "num_qubits can only be specified if algorithm is also specified!"
269
+ raise ValueError(msg)
270
+
271
+ df_all = __aggregate(baseline_filepath, feature_filepath)
272
+
273
+ if task is not None:
274
+ df_all = df_all[df_all["task"].str.contains(task, case=False)]
275
+ if algorithm is not None:
276
+ df_all = df_all[df_all["algo"].str.contains(algorithm, case=False)]
277
+ if num_qubits is not None:
278
+ df_all = df_all[df_all["n"] == num_qubits]
279
+
280
+ df_runtime = df_all[df_all["metric"] == "runtime"]
281
+ df_runtime = df_runtime.drop(columns=["component", "metric"])
282
+ print("\nRuntime:")
283
+ sort_indices = ["ratio"] if sort == "ratio" else ["algo", "task", "n"]
284
+ __print_results(
285
+ df=df_runtime, sort_indices=sort_indices, factor=factor, no_split=no_split, only_changed=only_changed
286
+ )
287
+
288
+ if not dd:
289
+ return
290
+
291
+ print("\nDD Package details:")
292
+ df_dd = df_all[df_all["metric"] != "runtime"]
293
+ sort_indices = ["ratio"] if sort == "ratio" else ["algo", "task", "n", "component", "metric"]
294
+ __print_results(df=df_dd, sort_indices=sort_indices, factor=factor, no_split=no_split, only_changed=only_changed)
295
+
296
+
297
+ def main() -> None:
298
+ """Main function for the command line interface.
299
+
300
+ This function is called when running the `mqt-core-compare` CLI command.
301
+
302
+ .. code-block:: bash
303
+
304
+ mqt-core-compare baseline.json feature.json [options]
305
+
306
+ In addition to the mandatory filepath arguments, it provides the following optional command line options:
307
+
308
+ - :code:`--factor <float>`: How much a result has to change to be considered significant.
309
+ - :code:`--sort`: Sort the table by this column. Valid options are 'ratio' and 'algorithm'.
310
+ - :code:`--dd`: Whether to show the detailed DD benchmark results.
311
+ - :code:`--only_changed`: Whether to only show results that changed significantly.
312
+ - :code:`--no_split`: Whether to merge all results together in one table or to separate the results into benchmarks
313
+ that improved, stayed the same, or worsened.
314
+ - :code:`--algorithm <str>`: Only show results for this algorithm.
315
+ - :code:`--task <str>`: Only show results for this task.
316
+ - :code:`--num_qubits <int>`: Only show results for this number of qubits.
317
+ Can only be used if algorithm is also specified.
318
+ """
319
+ parser = argparse.ArgumentParser(
320
+ description="Compare the results of two benchmarking runs from the generated json files.",
321
+ )
322
+ parser.add_argument("baseline_filepath", type=str, help="Path to the baseline json file.")
323
+ parser.add_argument("feature_filepath", type=str, help="Path to the feature json file.")
324
+ parser.add_argument(
325
+ "--factor",
326
+ type=float,
327
+ default=0.1,
328
+ help="How much a result has to change to be considered significant.",
329
+ )
330
+ parser.add_argument(
331
+ "--sort",
332
+ type=str,
333
+ default="ratio",
334
+ help="Sort the table by this column. Valid options are 'ratio' and 'algorithm'.",
335
+ )
336
+ parser.add_argument("--dd", action="store_true", help="Whether to show the detailed DD benchmark results.")
337
+ parser.add_argument(
338
+ "--only_changed",
339
+ action="store_true",
340
+ help="Whether to only show results that changed significantly.",
341
+ )
342
+ parser.add_argument(
343
+ "--no_split",
344
+ action="store_true",
345
+ help="Whether to merge all results together in one table or to separate the results into "
346
+ "benchmarks that improved, stayed the same, or worsened.",
347
+ )
348
+ parser.add_argument("--algorithm", type=str, help="Only show results for this algorithm.")
349
+ parser.add_argument("--task", type=str, help="Only show results for this task.")
350
+ parser.add_argument(
351
+ "--num_qubits",
352
+ type=int,
353
+ help="Only show results for this number of qubits. Can only be used if algorithm is also specified.",
354
+ )
355
+ args = parser.parse_args()
356
+ assert args is not None
357
+ compare(
358
+ args.baseline_filepath,
359
+ args.feature_filepath,
360
+ factor=args.factor,
361
+ sort=args.sort,
362
+ dd=args.dd,
363
+ only_changed=args.only_changed,
364
+ no_split=args.no_split,
365
+ algorithm=args.algorithm,
366
+ task=args.task,
367
+ num_qubits=args.num_qubits,
368
+ )
@@ -0,0 +1,39 @@
1
+ /*
2
+ * Copyright (c) 2023 - 2025 Chair for Design Automation, TUM
3
+ * Copyright (c) 2025 Munich Quantum Software Company GmbH
4
+ * All rights reserved.
5
+ *
6
+ * SPDX-License-Identifier: MIT
7
+ *
8
+ * Licensed under the MIT License
9
+ */
10
+
11
+ #pragma once
12
+
13
+ #include "ir/Definitions.hpp"
14
+ #include "ir/QuantumComputation.hpp"
15
+
16
+ #include <bitset>
17
+ #include <cstddef>
18
+
19
+ namespace qc {
20
+
21
+ using BVBitString = std::bitset<4096>;
22
+
23
+ [[nodiscard]] auto createBernsteinVazirani(const BVBitString& hiddenString)
24
+ -> QuantumComputation;
25
+ [[nodiscard]] auto createBernsteinVazirani(Qubit nq, std::size_t seed = 0)
26
+ -> QuantumComputation;
27
+ [[nodiscard]] auto createBernsteinVazirani(const BVBitString& hiddenString,
28
+ Qubit nq) -> QuantumComputation;
29
+
30
+ [[nodiscard]] auto
31
+ createIterativeBernsteinVazirani(const BVBitString& hiddenString)
32
+ -> QuantumComputation;
33
+ [[nodiscard]] auto createIterativeBernsteinVazirani(Qubit nq,
34
+ std::size_t seed = 0)
35
+ -> QuantumComputation;
36
+ [[nodiscard]] auto
37
+ createIterativeBernsteinVazirani(const BVBitString& hiddenString, Qubit nq)
38
+ -> QuantumComputation;
39
+ } // namespace qc
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Copyright (c) 2023 - 2025 Chair for Design Automation, TUM
3
+ * Copyright (c) 2025 Munich Quantum Software Company GmbH
4
+ * All rights reserved.
5
+ *
6
+ * SPDX-License-Identifier: MIT
7
+ *
8
+ * Licensed under the MIT License
9
+ */
10
+
11
+ #pragma once
12
+
13
+ #include "ir/Definitions.hpp"
14
+ #include "ir/QuantumComputation.hpp"
15
+
16
+ namespace qc {
17
+ [[nodiscard]] auto createGHZState(Qubit nq) -> QuantumComputation;
18
+ } // namespace qc
@@ -0,0 +1,33 @@
1
+ /*
2
+ * Copyright (c) 2023 - 2025 Chair for Design Automation, TUM
3
+ * Copyright (c) 2025 Munich Quantum Software Company GmbH
4
+ * All rights reserved.
5
+ *
6
+ * SPDX-License-Identifier: MIT
7
+ *
8
+ * Licensed under the MIT License
9
+ */
10
+
11
+ #pragma once
12
+
13
+ #include "ir/Definitions.hpp"
14
+ #include "ir/QuantumComputation.hpp"
15
+
16
+ #include <bitset>
17
+ #include <cstddef>
18
+
19
+ namespace qc {
20
+
21
+ using GroverBitString = std::bitset<128>;
22
+ auto appendGroverInitialization(QuantumComputation& qc) -> void;
23
+ auto appendGroverOracle(QuantumComputation& qc,
24
+ const GroverBitString& targetValue) -> void;
25
+ auto appendGroverDiffusion(QuantumComputation& qc) -> void;
26
+
27
+ [[nodiscard]] auto computeNumberOfIterations(Qubit nq) -> std::size_t;
28
+
29
+ [[nodiscard]] auto createGrover(Qubit nq, const GroverBitString& targetValue)
30
+ -> QuantumComputation;
31
+ [[nodiscard]] auto createGrover(Qubit nq, std::size_t seed = 0)
32
+ -> QuantumComputation;
33
+ } // namespace qc
@@ -0,0 +1,21 @@
1
+ /*
2
+ * Copyright (c) 2023 - 2025 Chair for Design Automation, TUM
3
+ * Copyright (c) 2025 Munich Quantum Software Company GmbH
4
+ * All rights reserved.
5
+ *
6
+ * SPDX-License-Identifier: MIT
7
+ *
8
+ * Licensed under the MIT License
9
+ */
10
+
11
+ #pragma once
12
+
13
+ #include "ir/Definitions.hpp"
14
+ #include "ir/QuantumComputation.hpp"
15
+
16
+ namespace qc {
17
+ [[nodiscard]] auto createQFT(Qubit nq, bool includeMeasurements = true)
18
+ -> QuantumComputation;
19
+
20
+ [[nodiscard]] auto createIterativeQFT(Qubit nq) -> QuantumComputation;
21
+ } // namespace qc
@@ -0,0 +1,30 @@
1
+ /*
2
+ * Copyright (c) 2023 - 2025 Chair for Design Automation, TUM
3
+ * Copyright (c) 2025 Munich Quantum Software Company GmbH
4
+ * All rights reserved.
5
+ *
6
+ * SPDX-License-Identifier: MIT
7
+ *
8
+ * Licensed under the MIT License
9
+ */
10
+
11
+ #pragma once
12
+
13
+ #include "ir/Definitions.hpp"
14
+ #include "ir/QuantumComputation.hpp"
15
+
16
+ #include <cstddef>
17
+
18
+ namespace qc {
19
+ [[nodiscard]] auto createQPE(Qubit nq, bool exact = true, std::size_t seed = 0)
20
+ -> QuantumComputation;
21
+
22
+ [[nodiscard]] auto createQPE(fp lambda, Qubit precision) -> QuantumComputation;
23
+
24
+ [[nodiscard]] auto createIterativeQPE(Qubit nq, bool exact = true,
25
+ std::size_t seed = 0)
26
+ -> QuantumComputation;
27
+
28
+ [[nodiscard]] auto createIterativeQPE(fp lambda, Qubit precision)
29
+ -> QuantumComputation;
30
+ } // namespace qc
@@ -0,0 +1,22 @@
1
+ /*
2
+ * Copyright (c) 2023 - 2025 Chair for Design Automation, TUM
3
+ * Copyright (c) 2025 Munich Quantum Software Company GmbH
4
+ * All rights reserved.
5
+ *
6
+ * SPDX-License-Identifier: MIT
7
+ *
8
+ * Licensed under the MIT License
9
+ */
10
+
11
+ #pragma once
12
+
13
+ #include "ir/Definitions.hpp"
14
+ #include "ir/QuantumComputation.hpp"
15
+
16
+ #include <cstddef>
17
+
18
+ namespace qc {
19
+ [[nodiscard]] auto createRandomCliffordCircuit(Qubit nq, std::size_t depth = 1,
20
+ std::size_t seed = 0)
21
+ -> QuantumComputation;
22
+ } // namespace qc
@@ -0,0 +1,43 @@
1
+ /*
2
+ * Copyright (c) 2023 - 2025 Chair for Design Automation, TUM
3
+ * Copyright (c) 2025 Munich Quantum Software Company GmbH
4
+ * All rights reserved.
5
+ *
6
+ * SPDX-License-Identifier: MIT
7
+ *
8
+ * Licensed under the MIT License
9
+ */
10
+
11
+ #pragma once
12
+
13
+ #include "ir/QuantumComputation.hpp"
14
+
15
+ #include <complex>
16
+ #include <vector>
17
+
18
+ namespace qc {
19
+ /**
20
+ * @brief Prepares a generic quantum state from a list of normalized
21
+ * complex amplitudes
22
+ *
23
+ * Adapted implementation of IBM Qiskit's State Preparation:
24
+ * https://github.com/Qiskit/qiskit/blob/e9ccd3f374fd5424214361d47febacfa5919e1e3/qiskit/circuit/library/data_preparation/state_preparation.py
25
+ * based on the following paper:
26
+ *
27
+ * V. V. Shende, S. S. Bullock and I. L. Markov,
28
+ * "Synthesis of quantum-logic circuits", in IEEE Transactions on
29
+ * Computer-Aided Design of Integrated Circuits and Systems,
30
+ * vol. 25, no. 6, pp. 1000-1010, June 2006,
31
+ * doi: 10.1109/TCAD.2005.855930.
32
+ *
33
+ * @param amplitudes State (vector) to prepare.
34
+ * Must be normalized and have a size that is a power of two.
35
+ * @param eps Precision wanted for computations, default 1e-10
36
+ * @return Quantum computation that prepares the state
37
+ * @throws invalid_argument If @p amplitudes is not normalized or its length is
38
+ * not a power of two.
39
+ **/
40
+ [[nodiscard]] auto createStatePreparationCircuit(
41
+ const std::vector<std::complex<double>>& amplitudes, double eps = 1e-10)
42
+ -> QuantumComputation;
43
+ } // namespace qc
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Copyright (c) 2023 - 2025 Chair for Design Automation, TUM
3
+ * Copyright (c) 2025 Munich Quantum Software Company GmbH
4
+ * All rights reserved.
5
+ *
6
+ * SPDX-License-Identifier: MIT
7
+ *
8
+ * Licensed under the MIT License
9
+ */
10
+
11
+ #pragma once
12
+
13
+ #include "ir/Definitions.hpp"
14
+ #include "ir/QuantumComputation.hpp"
15
+
16
+ namespace qc {
17
+ [[nodiscard]] auto createWState(Qubit nq) -> QuantumComputation;
18
+ } // namespace qc
@@ -0,0 +1,43 @@
1
+
2
+ #ifndef MQT_CORE_ALGORITHMS_EXPORT_H
3
+ #define MQT_CORE_ALGORITHMS_EXPORT_H
4
+
5
+ #ifdef MQT_CORE_ALGORITHMS_STATIC_DEFINE
6
+ # define MQT_CORE_ALGORITHMS_EXPORT
7
+ # define MQT_CORE_ALGORITHMS_NO_EXPORT
8
+ #else
9
+ # ifndef MQT_CORE_ALGORITHMS_EXPORT
10
+ # ifdef mqt_core_algorithms_EXPORTS
11
+ /* We are building this library */
12
+ # define MQT_CORE_ALGORITHMS_EXPORT __declspec(dllexport)
13
+ # else
14
+ /* We are using this library */
15
+ # define MQT_CORE_ALGORITHMS_EXPORT __declspec(dllimport)
16
+ # endif
17
+ # endif
18
+
19
+ # ifndef MQT_CORE_ALGORITHMS_NO_EXPORT
20
+ # define MQT_CORE_ALGORITHMS_NO_EXPORT
21
+ # endif
22
+ #endif
23
+
24
+ #ifndef MQT_CORE_ALGORITHMS_DEPRECATED
25
+ # define MQT_CORE_ALGORITHMS_DEPRECATED __declspec(deprecated)
26
+ #endif
27
+
28
+ #ifndef MQT_CORE_ALGORITHMS_DEPRECATED_EXPORT
29
+ # define MQT_CORE_ALGORITHMS_DEPRECATED_EXPORT MQT_CORE_ALGORITHMS_EXPORT MQT_CORE_ALGORITHMS_DEPRECATED
30
+ #endif
31
+
32
+ #ifndef MQT_CORE_ALGORITHMS_DEPRECATED_NO_EXPORT
33
+ # define MQT_CORE_ALGORITHMS_DEPRECATED_NO_EXPORT MQT_CORE_ALGORITHMS_NO_EXPORT MQT_CORE_ALGORITHMS_DEPRECATED
34
+ #endif
35
+
36
+ /* NOLINTNEXTLINE(readability-avoid-unconditional-preprocessor-if) */
37
+ #if 0 /* DEFINE_NO_DEPRECATED */
38
+ # ifndef MQT_CORE_ALGORITHMS_NO_DEPRECATED
39
+ # define MQT_CORE_ALGORITHMS_NO_DEPRECATED
40
+ # endif
41
+ #endif
42
+
43
+ #endif /* MQT_CORE_ALGORITHMS_EXPORT_H */
@@ -0,0 +1,27 @@
1
+ // (C) Copyright John Maddock 2003.
2
+ // Use, modification and distribution are subject to the
3
+ // Boost Software License, Version 1.0. (See accompanying file
4
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
+
6
+ // for C++ Builder the following options effect the ABI:
7
+ //
8
+ // -b (on or off - effect emum sizes)
9
+ // -Vx (on or off - empty members)
10
+ // -Ve (on or off - empty base classes)
11
+ // -aX (alignment - 5 options).
12
+ // -pX (Calling convention - 4 options)
13
+ // -VmX (member pointer size and layout - 5 options)
14
+ // -VC (on or off, changes name mangling)
15
+ // -Vl (on or off, changes struct layout).
16
+
17
+ // In addition the following warnings are sufficiently annoying (and
18
+ // unfixable) to have them turned off by default:
19
+ //
20
+ // 8027 - functions containing [for|while] loops are not expanded inline
21
+ // 8026 - functions taking class by value arguments are not expanded inline
22
+
23
+ #pragma nopushoptwarn
24
+ # pragma option push -a8 -Vx- -Ve- -b- -pc -Vmv -VC- -Vl- -w-8027 -w-8026
25
+
26
+
27
+
@@ -0,0 +1,12 @@
1
+ // (C) Copyright John Maddock 2003.
2
+ // Use, modification and distribution are subject to the
3
+ // Boost Software License, Version 1.0. (See accompanying file
4
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
+
6
+ # pragma option pop
7
+ #pragma nopushoptwarn
8
+
9
+
10
+
11
+
12
+