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,73 @@
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 "Token.hpp"
14
+
15
+ #include <cstddef>
16
+ #include <cstdint>
17
+ #include <iosfwd>
18
+ #include <optional>
19
+ #include <string>
20
+ #include <unordered_map>
21
+
22
+ namespace qasm3 {
23
+ class Scanner {
24
+ std::istream* is;
25
+ std::unordered_map<std::string, Token::Kind> keywords;
26
+ char ch = 0;
27
+ size_t line = 1;
28
+ size_t col = 0;
29
+
30
+ [[nodiscard]] static bool isSpace(char c);
31
+
32
+ [[nodiscard]] static bool isFirstIdChar(char c);
33
+
34
+ [[nodiscard]] static bool isNum(char c);
35
+
36
+ [[nodiscard]] static bool isHex(char c);
37
+
38
+ [[nodiscard]] static bool hasTimingSuffix(char first, char second);
39
+
40
+ static char readUtf8Codepoint(std::istream* in);
41
+
42
+ void nextCh();
43
+
44
+ [[nodiscard]] char peek() const;
45
+
46
+ std::optional<Token> consumeWhitespaceAndComments();
47
+
48
+ static bool isValidDigit(uint8_t base, char c);
49
+
50
+ std::string consumeNumberLiteral(uint8_t base);
51
+
52
+ static uint64_t parseIntegerLiteral(const std::string& str, uint8_t base);
53
+
54
+ Token consumeNumberLiteral();
55
+
56
+ Token consumeHardwareQubit();
57
+
58
+ Token consumeString();
59
+
60
+ Token consumeName();
61
+
62
+ void error(const std::string& msg) const;
63
+
64
+ void expect(char expected);
65
+
66
+ public:
67
+ explicit Scanner(std::istream* in);
68
+
69
+ ~Scanner() = default;
70
+
71
+ Token next();
72
+ };
73
+ } // namespace qasm3
@@ -0,0 +1,486 @@
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 "Statement_fwd.hpp" // IWYU pragma: export
14
+ #include "Types_fwd.hpp"
15
+ #include "ir/Permutation.hpp"
16
+
17
+ #include <cstddef>
18
+ #include <cstdint>
19
+ #include <memory>
20
+ #include <optional>
21
+ #include <string>
22
+ #include <utility>
23
+ #include <variant>
24
+ #include <vector>
25
+
26
+ namespace qc {
27
+ // forward declarations
28
+ enum ComparisonKind : std::uint8_t;
29
+ } // namespace qc
30
+
31
+ namespace qasm3 {
32
+ class InstVisitor;
33
+
34
+ struct DebugInfo {
35
+ size_t line;
36
+ size_t column;
37
+ std::string filename;
38
+ std::shared_ptr<DebugInfo> parent;
39
+
40
+ DebugInfo(const size_t l, const size_t c, std::string file,
41
+ std::shared_ptr<DebugInfo> parentDebugInfo = nullptr)
42
+ : line(l), column(c), filename(std::move(std::move(file))),
43
+ parent(std::move(parentDebugInfo)) {}
44
+
45
+ [[nodiscard]] std::string toString() const {
46
+ return filename + ":" + std::to_string(line) + ":" + std::to_string(column);
47
+ }
48
+ };
49
+
50
+ // Expressions
51
+ class Expression {
52
+ public:
53
+ virtual ~Expression() = default;
54
+
55
+ [[nodiscard]] virtual std::string getName() const = 0;
56
+ };
57
+
58
+ class DeclarationExpression final {
59
+ public:
60
+ std::shared_ptr<Expression> expression;
61
+
62
+ explicit DeclarationExpression(std::shared_ptr<Expression> expr)
63
+ : expression(std::move(expr)) {}
64
+
65
+ ~DeclarationExpression() = default;
66
+ };
67
+
68
+ class Constant final : public Expression {
69
+ std::variant<int64_t, double, bool> val;
70
+ bool isSigned;
71
+ bool isFp;
72
+ bool isBoolean;
73
+
74
+ public:
75
+ Constant(int64_t value, const bool valueIsSigned)
76
+ : val(value), isSigned(valueIsSigned), isFp(false), isBoolean(false) {}
77
+
78
+ explicit Constant(double value)
79
+ : val(value), isSigned(true), isFp(true), isBoolean(false) {}
80
+ explicit Constant(bool value)
81
+ : val(value), isSigned(false), isFp(false), isBoolean(true) {}
82
+
83
+ [[nodiscard]] bool isInt() const { return !isFp; }
84
+ [[nodiscard]] bool isSInt() const { return !isFp && isSigned; }
85
+ [[nodiscard]] bool isUInt() const { return !isFp && !isSigned; }
86
+ [[nodiscard]] bool isFP() const { return isFp; }
87
+ [[nodiscard]] bool isBool() const { return isBoolean; }
88
+ [[nodiscard]] int64_t getSInt() const { return std::get<0>(val); }
89
+ [[nodiscard]] uint64_t getUInt() const {
90
+ return static_cast<uint64_t>(std::get<0>(val));
91
+ }
92
+ [[nodiscard]] double getFP() const { return std::get<1>(val); }
93
+ [[nodiscard]] double asFP() const {
94
+ if (isFp) {
95
+ return getFP();
96
+ }
97
+ if (isSigned) {
98
+ return static_cast<double>(getSInt());
99
+ }
100
+ return static_cast<double>(getUInt());
101
+ }
102
+ [[nodiscard]] bool getBool() const { return std::get<2>(val); }
103
+
104
+ [[nodiscard]] std::string getName() const override { return "Constant"; }
105
+ };
106
+
107
+ class BinaryExpression final
108
+ : public Expression,
109
+ public std::enable_shared_from_this<BinaryExpression> {
110
+ public:
111
+ enum Op : uint8_t {
112
+ Power,
113
+ Add,
114
+ Subtract,
115
+ Multiply,
116
+ Divide,
117
+ Modulo,
118
+ LeftShift,
119
+ RightShift,
120
+ LessThan,
121
+ LessThanOrEqual,
122
+ GreaterThan,
123
+ GreaterThanOrEqual,
124
+ Equal,
125
+ NotEqual,
126
+ BitwiseAnd,
127
+ BitwiseXor,
128
+ BitwiseOr,
129
+ LogicalAnd,
130
+ LogicalOr,
131
+ };
132
+
133
+ Op op;
134
+ std::shared_ptr<Expression> lhs;
135
+ std::shared_ptr<Expression> rhs;
136
+
137
+ BinaryExpression(const Op opcode, std::shared_ptr<Expression> l,
138
+ std::shared_ptr<Expression> r)
139
+ : op(opcode), lhs(std::move(l)), rhs(std::move(r)) {}
140
+
141
+ [[nodiscard]] std::string getName() const override { return "BinaryExpr"; }
142
+ };
143
+
144
+ std::optional<qc::ComparisonKind> getComparisonKind(BinaryExpression::Op op);
145
+
146
+ class UnaryExpression final
147
+ : public Expression,
148
+ public std::enable_shared_from_this<UnaryExpression> {
149
+ public:
150
+ enum Op : uint8_t {
151
+ BitwiseNot,
152
+ LogicalNot,
153
+ Negate,
154
+ DurationOf,
155
+ Sin,
156
+ Cos,
157
+ Tan,
158
+ Exp,
159
+ Ln,
160
+ Sqrt,
161
+ };
162
+
163
+ std::shared_ptr<Expression> operand;
164
+ Op op;
165
+
166
+ UnaryExpression(const Op opcode, std::shared_ptr<Expression> expr)
167
+ : operand(std::move(expr)), op(opcode) {}
168
+
169
+ [[nodiscard]] std::string getName() const override { return "UnaryExpr"; }
170
+ };
171
+
172
+ class IdentifierExpression final
173
+ : public Expression,
174
+ public std::enable_shared_from_this<IdentifierExpression> {
175
+ public:
176
+ std::string identifier;
177
+
178
+ explicit IdentifierExpression(std::string id) : identifier(std::move(id)) {}
179
+
180
+ [[nodiscard]] std::string getName() const override {
181
+ return std::string{"IdentifierExpr ("} + identifier + ")";
182
+ }
183
+ };
184
+
185
+ class IdentifierList final
186
+ : public Expression,
187
+ public std::enable_shared_from_this<IdentifierList> {
188
+ public:
189
+ std::vector<std::shared_ptr<IdentifierExpression>> identifiers;
190
+
191
+ explicit IdentifierList(
192
+ std::vector<std::shared_ptr<IdentifierExpression>> ids)
193
+ : identifiers(std::move(ids)) {}
194
+
195
+ explicit IdentifierList() = default;
196
+
197
+ [[nodiscard]] std::string getName() const override {
198
+ return "IdentifierList";
199
+ }
200
+ };
201
+
202
+ class IndexOperator {
203
+ public:
204
+ std::vector<std::shared_ptr<Expression>> indexExpressions;
205
+
206
+ explicit IndexOperator(std::vector<std::shared_ptr<Expression>> indices)
207
+ : indexExpressions(std::move(indices)) {}
208
+ };
209
+
210
+ class IndexedIdentifier final
211
+ : public Expression,
212
+ public std::enable_shared_from_this<IndexedIdentifier> {
213
+ public:
214
+ std::string identifier;
215
+ std::vector<std::shared_ptr<IndexOperator>> indices;
216
+
217
+ explicit IndexedIdentifier(
218
+ std::string id, std::vector<std::shared_ptr<IndexOperator>> idxs = {})
219
+ : identifier(std::move(id)), indices(std::move(idxs)) {}
220
+
221
+ [[nodiscard]] std::string getName() const override {
222
+ return std::string{"IndexedIdentifier ("} + identifier + ")";
223
+ }
224
+ };
225
+
226
+ class GateOperand final : public Expression,
227
+ public std::enable_shared_from_this<GateOperand> {
228
+ public:
229
+ std::variant<std::shared_ptr<IndexedIdentifier>, uint64_t> operand;
230
+
231
+ explicit GateOperand(std::shared_ptr<IndexedIdentifier> id)
232
+ : operand(std::move(id)) {}
233
+
234
+ explicit GateOperand(const uint64_t qubit) : operand(qubit) {}
235
+
236
+ [[nodiscard]] bool isHardwareQubit() const {
237
+ return std::holds_alternative<uint64_t>(operand);
238
+ }
239
+
240
+ [[nodiscard]] uint64_t getHardwareQubit() const {
241
+ return std::get<uint64_t>(operand);
242
+ }
243
+
244
+ [[nodiscard]] const std::shared_ptr<IndexedIdentifier>&
245
+ getIdentifier() const {
246
+ return std::get<std::shared_ptr<IndexedIdentifier>>(operand);
247
+ }
248
+
249
+ [[nodiscard]] std::string getName() const override {
250
+ return isHardwareQubit() ? "$" + std::to_string(getHardwareQubit())
251
+ : getIdentifier()->getName();
252
+ }
253
+ };
254
+
255
+ class MeasureExpression final
256
+ : public Expression,
257
+ public std::enable_shared_from_this<MeasureExpression> {
258
+ public:
259
+ std::shared_ptr<GateOperand> gate;
260
+
261
+ explicit MeasureExpression(std::shared_ptr<GateOperand> gateOperand)
262
+ : gate(std::move(gateOperand)) {}
263
+
264
+ [[nodiscard]] std::string getName() const override {
265
+ return "MeasureExpression";
266
+ }
267
+ };
268
+
269
+ // Statements
270
+
271
+ class Statement {
272
+ public:
273
+ std::shared_ptr<DebugInfo> debugInfo;
274
+ explicit Statement(std::shared_ptr<DebugInfo> debug)
275
+ : debugInfo(std::move(debug)) {}
276
+ virtual ~Statement() = default;
277
+
278
+ virtual void accept(InstVisitor* visitor) = 0;
279
+ };
280
+
281
+ class QuantumStatement : public Statement {
282
+ protected:
283
+ explicit QuantumStatement(std::shared_ptr<DebugInfo> debug)
284
+ : Statement(std::move(debug)) {}
285
+ };
286
+
287
+ class GateDeclaration final
288
+ : public Statement,
289
+ public std::enable_shared_from_this<GateDeclaration> {
290
+ public:
291
+ std::string identifier;
292
+ std::shared_ptr<IdentifierList> parameters;
293
+ std::shared_ptr<IdentifierList> qubits;
294
+ std::vector<std::shared_ptr<QuantumStatement>> statements;
295
+ bool isOpaque;
296
+
297
+ explicit GateDeclaration(std::shared_ptr<DebugInfo> debug, std::string id,
298
+ std::shared_ptr<IdentifierList> params,
299
+ std::shared_ptr<IdentifierList> qbits,
300
+ std::vector<std::shared_ptr<QuantumStatement>> stmts,
301
+ bool opaque = false);
302
+
303
+ void accept(InstVisitor* visitor) override;
304
+ };
305
+
306
+ class VersionDeclaration final
307
+ : public Statement,
308
+ public std::enable_shared_from_this<VersionDeclaration> {
309
+ public:
310
+ double version;
311
+
312
+ explicit VersionDeclaration(std::shared_ptr<DebugInfo> debug,
313
+ const double versionNum)
314
+ : Statement(std::move(debug)), version(versionNum) {}
315
+
316
+ void accept(InstVisitor* visitor) override;
317
+ };
318
+
319
+ class InitialLayout final : public Statement,
320
+ public std::enable_shared_from_this<InitialLayout> {
321
+ public:
322
+ qc::Permutation permutation;
323
+
324
+ explicit InitialLayout(std::shared_ptr<DebugInfo> debug, qc::Permutation perm)
325
+ : Statement(std::move(debug)), permutation(std::move(perm)) {}
326
+
327
+ private:
328
+ void accept(InstVisitor* visitor) override;
329
+ };
330
+
331
+ class OutputPermutation final
332
+ : public Statement,
333
+ public std::enable_shared_from_this<OutputPermutation> {
334
+ public:
335
+ qc::Permutation permutation;
336
+
337
+ explicit OutputPermutation(std::shared_ptr<DebugInfo> debug,
338
+ qc::Permutation perm)
339
+ : Statement(std::move(debug)), permutation(std::move(perm)) {}
340
+
341
+ private:
342
+ void accept(InstVisitor* visitor) override;
343
+ };
344
+
345
+ class DeclarationStatement final
346
+ : public Statement,
347
+ public std::enable_shared_from_this<DeclarationStatement> {
348
+ public:
349
+ bool isConst;
350
+ std::variant<std::shared_ptr<TypeExpr>, std::shared_ptr<ResolvedType>> type;
351
+ std::string identifier;
352
+ std::shared_ptr<DeclarationExpression> expression;
353
+
354
+ DeclarationStatement(std::shared_ptr<DebugInfo> debug, const bool declIsConst,
355
+ std::shared_ptr<TypeExpr> ty, std::string id,
356
+ std::shared_ptr<DeclarationExpression> expr)
357
+ : Statement(std::move(debug)), isConst(declIsConst), type(ty),
358
+ identifier(std::move(id)), expression(std::move(expr)) {}
359
+
360
+ void accept(InstVisitor* visitor) override;
361
+ };
362
+
363
+ class GateModifier : public std::enable_shared_from_this<GateModifier> {
364
+ public:
365
+ virtual ~GateModifier() = default;
366
+ };
367
+
368
+ class InvGateModifier final
369
+ : public GateModifier,
370
+ public std::enable_shared_from_this<InvGateModifier> {};
371
+
372
+ class PowGateModifier final
373
+ : public GateModifier,
374
+ public std::enable_shared_from_this<PowGateModifier> {
375
+ public:
376
+ std::shared_ptr<Expression> expression;
377
+
378
+ explicit PowGateModifier(std::shared_ptr<Expression> expr)
379
+ : expression(std::move(expr)) {}
380
+ };
381
+
382
+ class CtrlGateModifier final
383
+ : public GateModifier,
384
+ public std::enable_shared_from_this<CtrlGateModifier> {
385
+ public:
386
+ bool ctrlType;
387
+ std::shared_ptr<Expression> expression;
388
+
389
+ explicit CtrlGateModifier(const bool ty, std::shared_ptr<Expression> expr)
390
+ : ctrlType(ty), expression(std::move(expr)) {}
391
+ };
392
+
393
+ class GateCallStatement final
394
+ : public QuantumStatement,
395
+ public std::enable_shared_from_this<GateCallStatement> {
396
+ public:
397
+ std::string identifier;
398
+ std::vector<std::shared_ptr<GateModifier>> modifiers;
399
+ std::vector<std::shared_ptr<Expression>> arguments;
400
+ std::vector<std::shared_ptr<GateOperand>> operands;
401
+
402
+ GateCallStatement(std::shared_ptr<DebugInfo> debug, std::string id,
403
+ std::vector<std::shared_ptr<GateModifier>> modifierList,
404
+ std::vector<std::shared_ptr<Expression>> argumentList,
405
+ std::vector<std::shared_ptr<GateOperand>> operandList)
406
+ : QuantumStatement(std::move(debug)), identifier(std::move(id)),
407
+ modifiers(std::move(modifierList)), arguments(std::move(argumentList)),
408
+ operands(std::move(operandList)) {}
409
+
410
+ void accept(InstVisitor* visitor) override;
411
+ };
412
+
413
+ class AssignmentStatement final
414
+ : public Statement,
415
+ public std::enable_shared_from_this<AssignmentStatement> {
416
+ public:
417
+ enum Type : uint8_t {
418
+ Assignment,
419
+ PlusAssignment,
420
+ MinusAssignment,
421
+ TimesAssignment,
422
+ DivAssignment,
423
+ BitwiseAndAssignment,
424
+ BitwiseOrAssignment,
425
+ BitwiseNotAssignment,
426
+ BitwiseXorAssignment,
427
+ LeftShiftAssignment,
428
+ RightShiftAssignment,
429
+ ModuloAssignment,
430
+ PowerAssignment,
431
+ } type;
432
+ std::shared_ptr<IndexedIdentifier> identifier;
433
+ std::shared_ptr<DeclarationExpression> expression;
434
+
435
+ AssignmentStatement(std::shared_ptr<DebugInfo> debug, const Type ty,
436
+ std::shared_ptr<IndexedIdentifier> id,
437
+ std::shared_ptr<DeclarationExpression> expr)
438
+ : Statement(std::move(debug)), type(ty), identifier(std::move(id)),
439
+ expression(std::move(expr)) {}
440
+
441
+ void accept(InstVisitor* visitor) override;
442
+ };
443
+
444
+ class BarrierStatement final
445
+ : public QuantumStatement,
446
+ public std::enable_shared_from_this<BarrierStatement> {
447
+ public:
448
+ std::vector<std::shared_ptr<GateOperand>> gates;
449
+
450
+ explicit BarrierStatement(std::shared_ptr<DebugInfo> debug,
451
+ std::vector<std::shared_ptr<GateOperand>> gateList)
452
+ : QuantumStatement(std::move(debug)), gates(std::move(gateList)) {}
453
+
454
+ void accept(InstVisitor* visitor) override;
455
+ };
456
+
457
+ class ResetStatement final
458
+ : public QuantumStatement,
459
+ public std::enable_shared_from_this<ResetStatement> {
460
+ public:
461
+ std::shared_ptr<GateOperand> gate;
462
+
463
+ explicit ResetStatement(std::shared_ptr<DebugInfo> debug,
464
+ std::shared_ptr<GateOperand> g)
465
+ : QuantumStatement(std::move(debug)), gate(std::move(g)) {}
466
+
467
+ void accept(InstVisitor* visitor) override;
468
+ };
469
+
470
+ class IfStatement final : public Statement,
471
+ public std::enable_shared_from_this<IfStatement> {
472
+ public:
473
+ std::shared_ptr<Expression> condition;
474
+ std::vector<std::shared_ptr<Statement>> thenStatements;
475
+ std::vector<std::shared_ptr<Statement>> elseStatements;
476
+
477
+ IfStatement(const std::shared_ptr<Expression>& cond,
478
+ const std::vector<std::shared_ptr<Statement>>& thenStmts,
479
+ const std::vector<std::shared_ptr<Statement>>& elseStmts,
480
+ std::shared_ptr<DebugInfo> debug)
481
+ : Statement(std::move(debug)), condition(cond), thenStatements(thenStmts),
482
+ elseStatements(elseStmts) {}
483
+
484
+ void accept(InstVisitor* visitor) override;
485
+ };
486
+ } // namespace qasm3
@@ -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
+ namespace qasm3 {
14
+ struct DebugInfo;
15
+ class Statement;
16
+ class IfStatement;
17
+ class IdentifierList;
18
+ class MeasureExpression;
19
+ class GateCallStatement;
20
+ class GateDeclaration;
21
+ class BarrierStatement;
22
+ class ResetStatement;
23
+ class AssignmentStatement;
24
+ class VersionDeclaration;
25
+ class DeclarationExpression;
26
+ class DeclarationStatement;
27
+ class IndexOperator;
28
+ class IndexedIdentifier;
29
+ class GateOperand;
30
+ class GateModifier;
31
+ class QuantumStatement;
32
+ class InitialLayout;
33
+ class OutputPermutation;
34
+ class Expression;
35
+ class Constant;
36
+ class BinaryExpression;
37
+ class UnaryExpression;
38
+ class IdentifierExpression;
39
+ } // namespace qasm3