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.
- mqt/core/__init__.py +89 -0
- mqt/core/__main__.py +55 -0
- mqt/core/_commands.py +52 -0
- mqt/core/_compat/__init__.py +11 -0
- mqt/core/_compat/typing.py +29 -0
- mqt/core/_version.py +21 -0
- mqt/core/_version.pyi +12 -0
- mqt/core/bin/mqt-core-algorithms.dll +0 -0
- mqt/core/bin/mqt-core-circuit-optimizer.dll +0 -0
- mqt/core/bin/mqt-core-dd.dll +0 -0
- mqt/core/bin/mqt-core-ds.dll +0 -0
- mqt/core/bin/mqt-core-ir.dll +0 -0
- mqt/core/bin/mqt-core-na.dll +0 -0
- mqt/core/bin/mqt-core-qasm.dll +0 -0
- mqt/core/bin/mqt-core-zx.dll +0 -0
- mqt/core/dd.cp313-win_arm64.pyd +0 -0
- mqt/core/dd.pyi +1031 -0
- mqt/core/dd_evaluation.py +368 -0
- mqt/core/include/mqt-core/algorithms/BernsteinVazirani.hpp +39 -0
- mqt/core/include/mqt-core/algorithms/GHZState.hpp +18 -0
- mqt/core/include/mqt-core/algorithms/Grover.hpp +33 -0
- mqt/core/include/mqt-core/algorithms/QFT.hpp +21 -0
- mqt/core/include/mqt-core/algorithms/QPE.hpp +30 -0
- mqt/core/include/mqt-core/algorithms/RandomCliffordCircuit.hpp +22 -0
- mqt/core/include/mqt-core/algorithms/StatePreparation.hpp +43 -0
- mqt/core/include/mqt-core/algorithms/WState.hpp +18 -0
- mqt/core/include/mqt-core/algorithms/mqt_core_algorithms_export.h +43 -0
- mqt/core/include/mqt-core/boost/config/abi/borland_prefix.hpp +27 -0
- mqt/core/include/mqt-core/boost/config/abi/borland_suffix.hpp +12 -0
- mqt/core/include/mqt-core/boost/config/abi/msvc_prefix.hpp +22 -0
- mqt/core/include/mqt-core/boost/config/abi/msvc_suffix.hpp +8 -0
- mqt/core/include/mqt-core/boost/config/abi_prefix.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/abi_suffix.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx03.hpp +211 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx11.hpp +212 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx14.hpp +47 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx17.hpp +65 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx20.hpp +59 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx23.hpp +41 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx98.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/auto_link.hpp +525 -0
- mqt/core/include/mqt-core/boost/config/compiler/borland.hpp +342 -0
- mqt/core/include/mqt-core/boost/config/compiler/clang.hpp +370 -0
- mqt/core/include/mqt-core/boost/config/compiler/clang_version.hpp +89 -0
- mqt/core/include/mqt-core/boost/config/compiler/codegear.hpp +389 -0
- mqt/core/include/mqt-core/boost/config/compiler/comeau.hpp +59 -0
- mqt/core/include/mqt-core/boost/config/compiler/common_edg.hpp +185 -0
- mqt/core/include/mqt-core/boost/config/compiler/compaq_cxx.hpp +19 -0
- mqt/core/include/mqt-core/boost/config/compiler/cray.hpp +446 -0
- mqt/core/include/mqt-core/boost/config/compiler/diab.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/compiler/digitalmars.hpp +146 -0
- mqt/core/include/mqt-core/boost/config/compiler/gcc.hpp +386 -0
- mqt/core/include/mqt-core/boost/config/compiler/gcc_xml.hpp +115 -0
- mqt/core/include/mqt-core/boost/config/compiler/greenhills.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/compiler/hp_acc.hpp +153 -0
- mqt/core/include/mqt-core/boost/config/compiler/intel.hpp +577 -0
- mqt/core/include/mqt-core/boost/config/compiler/kai.hpp +33 -0
- mqt/core/include/mqt-core/boost/config/compiler/metrowerks.hpp +201 -0
- mqt/core/include/mqt-core/boost/config/compiler/mpw.hpp +143 -0
- mqt/core/include/mqt-core/boost/config/compiler/nvcc.hpp +64 -0
- mqt/core/include/mqt-core/boost/config/compiler/pathscale.hpp +141 -0
- mqt/core/include/mqt-core/boost/config/compiler/pgi.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/compiler/sgi_mipspro.hpp +29 -0
- mqt/core/include/mqt-core/boost/config/compiler/sunpro_cc.hpp +225 -0
- mqt/core/include/mqt-core/boost/config/compiler/vacpp.hpp +189 -0
- mqt/core/include/mqt-core/boost/config/compiler/visualc.hpp +398 -0
- mqt/core/include/mqt-core/boost/config/compiler/xlcpp.hpp +303 -0
- mqt/core/include/mqt-core/boost/config/compiler/xlcpp_zos.hpp +174 -0
- mqt/core/include/mqt-core/boost/config/detail/cxx_composite.hpp +218 -0
- mqt/core/include/mqt-core/boost/config/detail/posix_features.hpp +95 -0
- mqt/core/include/mqt-core/boost/config/detail/select_compiler_config.hpp +157 -0
- mqt/core/include/mqt-core/boost/config/detail/select_platform_config.hpp +147 -0
- mqt/core/include/mqt-core/boost/config/detail/select_stdlib_config.hpp +121 -0
- mqt/core/include/mqt-core/boost/config/detail/suffix.hpp +1334 -0
- mqt/core/include/mqt-core/boost/config/header_deprecated.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/helper_macros.hpp +37 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/cmath.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/complex.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/functional.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/memory.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/utility.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/platform/aix.hpp +33 -0
- mqt/core/include/mqt-core/boost/config/platform/amigaos.hpp +15 -0
- mqt/core/include/mqt-core/boost/config/platform/beos.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/platform/bsd.hpp +83 -0
- mqt/core/include/mqt-core/boost/config/platform/cloudabi.hpp +18 -0
- mqt/core/include/mqt-core/boost/config/platform/cray.hpp +18 -0
- mqt/core/include/mqt-core/boost/config/platform/cygwin.hpp +71 -0
- mqt/core/include/mqt-core/boost/config/platform/haiku.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/hpux.hpp +87 -0
- mqt/core/include/mqt-core/boost/config/platform/irix.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/linux.hpp +106 -0
- mqt/core/include/mqt-core/boost/config/platform/macos.hpp +87 -0
- mqt/core/include/mqt-core/boost/config/platform/qnxnto.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/solaris.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/symbian.hpp +97 -0
- mqt/core/include/mqt-core/boost/config/platform/vms.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/platform/vxworks.hpp +422 -0
- mqt/core/include/mqt-core/boost/config/platform/wasm.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/platform/win32.hpp +90 -0
- mqt/core/include/mqt-core/boost/config/platform/zos.hpp +32 -0
- mqt/core/include/mqt-core/boost/config/pragma_message.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/requires_threads.hpp +92 -0
- mqt/core/include/mqt-core/boost/config/stdlib/dinkumware.hpp +324 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libcomo.hpp +93 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libcpp.hpp +180 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libstdcpp3.hpp +482 -0
- mqt/core/include/mqt-core/boost/config/stdlib/modena.hpp +79 -0
- mqt/core/include/mqt-core/boost/config/stdlib/msl.hpp +98 -0
- mqt/core/include/mqt-core/boost/config/stdlib/roguewave.hpp +208 -0
- mqt/core/include/mqt-core/boost/config/stdlib/sgi.hpp +168 -0
- mqt/core/include/mqt-core/boost/config/stdlib/stlport.hpp +258 -0
- mqt/core/include/mqt-core/boost/config/stdlib/vacpp.hpp +74 -0
- mqt/core/include/mqt-core/boost/config/stdlib/xlcpp_zos.hpp +61 -0
- mqt/core/include/mqt-core/boost/config/user.hpp +133 -0
- mqt/core/include/mqt-core/boost/config/warning_disable.hpp +47 -0
- mqt/core/include/mqt-core/boost/config/workaround.hpp +305 -0
- mqt/core/include/mqt-core/boost/config.hpp +67 -0
- mqt/core/include/mqt-core/boost/cstdint.hpp +556 -0
- mqt/core/include/mqt-core/boost/cxx11_char_types.hpp +70 -0
- mqt/core/include/mqt-core/boost/detail/workaround.hpp +10 -0
- mqt/core/include/mqt-core/boost/limits.hpp +146 -0
- mqt/core/include/mqt-core/boost/multiprecision/complex128.hpp +24 -0
- mqt/core/include/mqt-core/boost/multiprecision/complex_adaptor.hpp +1046 -0
- mqt/core/include/mqt-core/boost/multiprecision/concepts/mp_number_archetypes.hpp +257 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/io.hpp +698 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/transcendental.hpp +157 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float.hpp +2297 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_complex.hpp +12 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_dec_float.hpp +3690 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add.hpp +368 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add_unsigned.hpp +387 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/bitwise.hpp +889 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/checked.hpp +178 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/comparison.hpp +374 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/cpp_int_config.hpp +161 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/divide.hpp +703 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/import_export.hpp +248 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/intel_intrinsics.hpp +138 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/limits.hpp +282 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/literals.hpp +295 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/misc.hpp +1457 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/multiply.hpp +848 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/serialize.hpp +211 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/value_pack.hpp +42 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int.hpp +2360 -0
- mqt/core/include/mqt-core/boost/multiprecision/debug_adaptor.hpp +760 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/assert.hpp +29 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/atomic.hpp +62 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/bitscan.hpp +317 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/check_cpp11_config.hpp +64 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/constexpr.hpp +88 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/default_ops.hpp +4052 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/digits.hpp +49 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/dynamic_array.hpp +44 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/empty_value.hpp +87 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/endian.hpp +35 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/et_ops.hpp +1831 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/float128_functions.hpp +95 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/float_string_cvt.hpp +333 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/fpclassify.hpp +101 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/constants.hpp +288 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/pow.hpp +905 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trig.hpp +1058 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trunc.hpp +82 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/generic_interconvert.hpp +687 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/hash.hpp +56 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/integer_ops.hpp +474 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/itos.hpp +39 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/min_max.hpp +106 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/no_et_ops.hpp +661 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/no_exceptions_support.hpp +55 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/number_base.hpp +1656 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/number_compare.hpp +848 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/precision.hpp +313 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/rebind.hpp +19 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/standalone_config.hpp +148 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/static_array.hpp +42 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/string_helpers.hpp +48 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/tables.hpp +80 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/ublas_interop.hpp +75 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/uniform_int_distribution.hpp +212 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/utype_helper.hpp +374 -0
- mqt/core/include/mqt-core/boost/multiprecision/eigen.hpp +248 -0
- mqt/core/include/mqt-core/boost/multiprecision/float128.hpp +920 -0
- mqt/core/include/mqt-core/boost/multiprecision/fwd.hpp +268 -0
- mqt/core/include/mqt-core/boost/multiprecision/gmp.hpp +4060 -0
- mqt/core/include/mqt-core/boost/multiprecision/integer.hpp +363 -0
- mqt/core/include/mqt-core/boost/multiprecision/logged_adaptor.hpp +834 -0
- mqt/core/include/mqt-core/boost/multiprecision/miller_rabin.hpp +221 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpc.hpp +1721 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpfi.hpp +2559 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpfr.hpp +3644 -0
- mqt/core/include/mqt-core/boost/multiprecision/number.hpp +2500 -0
- mqt/core/include/mqt-core/boost/multiprecision/random.hpp +23 -0
- mqt/core/include/mqt-core/boost/multiprecision/rational_adaptor.hpp +1289 -0
- mqt/core/include/mqt-core/boost/multiprecision/tommath.hpp +1034 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/explicit_conversion.hpp +67 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/extract_exponent_type.hpp +28 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_backend.hpp +91 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_byte_container.hpp +51 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_complex.hpp +22 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_convertible_arithmetic.hpp +51 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_restricted_conversion.hpp +47 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_variable_precision.hpp +25 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/max_digits10.hpp +79 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/std_integer_traits.hpp +90 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/transcendental_reduction_type.hpp +21 -0
- mqt/core/include/mqt-core/boost/version.hpp +32 -0
- mqt/core/include/mqt-core/circuit_optimizer/CircuitOptimizer.hpp +106 -0
- mqt/core/include/mqt-core/circuit_optimizer/mqt_core_circuit_optimizer_export.h +43 -0
- mqt/core/include/mqt-core/datastructures/DirectedAcyclicGraph.hpp +117 -0
- mqt/core/include/mqt-core/datastructures/DirectedGraph.hpp +158 -0
- mqt/core/include/mqt-core/datastructures/DisjointSet.hpp +50 -0
- mqt/core/include/mqt-core/datastructures/Layer.hpp +172 -0
- mqt/core/include/mqt-core/datastructures/SymmetricMatrix.hpp +57 -0
- mqt/core/include/mqt-core/datastructures/UndirectedGraph.hpp +227 -0
- mqt/core/include/mqt-core/datastructures/mqt_core_ds_export.h +43 -0
- mqt/core/include/mqt-core/dd/Approximation.hpp +45 -0
- mqt/core/include/mqt-core/dd/CachedEdge.hpp +167 -0
- mqt/core/include/mqt-core/dd/Complex.hpp +165 -0
- mqt/core/include/mqt-core/dd/ComplexNumbers.hpp +150 -0
- mqt/core/include/mqt-core/dd/ComplexValue.hpp +184 -0
- mqt/core/include/mqt-core/dd/ComputeTable.hpp +183 -0
- mqt/core/include/mqt-core/dd/DDDefinitions.hpp +139 -0
- mqt/core/include/mqt-core/dd/DDpackageConfig.hpp +104 -0
- mqt/core/include/mqt-core/dd/DensityNoiseTable.hpp +114 -0
- mqt/core/include/mqt-core/dd/Edge.hpp +416 -0
- mqt/core/include/mqt-core/dd/Export.hpp +438 -0
- mqt/core/include/mqt-core/dd/FunctionalityConstruction.hpp +75 -0
- mqt/core/include/mqt-core/dd/GateMatrixDefinitions.hpp +43 -0
- mqt/core/include/mqt-core/dd/LinkedListBase.hpp +45 -0
- mqt/core/include/mqt-core/dd/MemoryManager.hpp +193 -0
- mqt/core/include/mqt-core/dd/Node.hpp +223 -0
- mqt/core/include/mqt-core/dd/NoiseFunctionality.hpp +144 -0
- mqt/core/include/mqt-core/dd/Operations.hpp +308 -0
- mqt/core/include/mqt-core/dd/Package.hpp +2036 -0
- mqt/core/include/mqt-core/dd/Package_fwd.hpp +22 -0
- mqt/core/include/mqt-core/dd/RealNumber.hpp +255 -0
- mqt/core/include/mqt-core/dd/RealNumberUniqueTable.hpp +217 -0
- mqt/core/include/mqt-core/dd/Simulation.hpp +98 -0
- mqt/core/include/mqt-core/dd/StateGeneration.hpp +143 -0
- mqt/core/include/mqt-core/dd/StochasticNoiseOperationTable.hpp +88 -0
- mqt/core/include/mqt-core/dd/UnaryComputeTable.hpp +121 -0
- mqt/core/include/mqt-core/dd/UniqueTable.hpp +243 -0
- mqt/core/include/mqt-core/dd/mqt_core_dd_export.h +43 -0
- mqt/core/include/mqt-core/dd/statistics/MemoryManagerStatistics.hpp +84 -0
- mqt/core/include/mqt-core/dd/statistics/PackageStatistics.hpp +55 -0
- mqt/core/include/mqt-core/dd/statistics/Statistics.hpp +48 -0
- mqt/core/include/mqt-core/dd/statistics/TableStatistics.hpp +79 -0
- mqt/core/include/mqt-core/dd/statistics/UniqueTableStatistics.hpp +31 -0
- mqt/core/include/mqt-core/ir/Definitions.hpp +108 -0
- mqt/core/include/mqt-core/ir/Permutation.hpp +213 -0
- mqt/core/include/mqt-core/ir/QuantumComputation.hpp +594 -0
- mqt/core/include/mqt-core/ir/Register.hpp +125 -0
- mqt/core/include/mqt-core/ir/mqt_core_ir_export.h +43 -0
- mqt/core/include/mqt-core/ir/operations/AodOperation.hpp +92 -0
- mqt/core/include/mqt-core/ir/operations/ClassicControlledOperation.hpp +156 -0
- mqt/core/include/mqt-core/ir/operations/CompoundOperation.hpp +210 -0
- mqt/core/include/mqt-core/ir/operations/Control.hpp +142 -0
- mqt/core/include/mqt-core/ir/operations/Expression.hpp +847 -0
- mqt/core/include/mqt-core/ir/operations/NonUnitaryOperation.hpp +118 -0
- mqt/core/include/mqt-core/ir/operations/OpType.hpp +115 -0
- mqt/core/include/mqt-core/ir/operations/OpType.inc +75 -0
- mqt/core/include/mqt-core/ir/operations/Operation.hpp +245 -0
- mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +138 -0
- mqt/core/include/mqt-core/ir/operations/SymbolicOperation.hpp +144 -0
- mqt/core/include/mqt-core/na/NAComputation.hpp +185 -0
- mqt/core/include/mqt-core/na/entities/Atom.hpp +62 -0
- mqt/core/include/mqt-core/na/entities/Location.hpp +154 -0
- mqt/core/include/mqt-core/na/entities/Zone.hpp +95 -0
- mqt/core/include/mqt-core/na/mqt_core_na_export.h +43 -0
- mqt/core/include/mqt-core/na/operations/GlobalCZOp.hpp +38 -0
- mqt/core/include/mqt-core/na/operations/GlobalOp.hpp +58 -0
- mqt/core/include/mqt-core/na/operations/GlobalRYOp.hpp +42 -0
- mqt/core/include/mqt-core/na/operations/LoadOp.hpp +89 -0
- mqt/core/include/mqt-core/na/operations/LocalOp.hpp +56 -0
- mqt/core/include/mqt-core/na/operations/LocalRZOp.hpp +42 -0
- mqt/core/include/mqt-core/na/operations/LocalUOp.hpp +49 -0
- mqt/core/include/mqt-core/na/operations/MoveOp.hpp +66 -0
- mqt/core/include/mqt-core/na/operations/Op.hpp +62 -0
- mqt/core/include/mqt-core/na/operations/ShuttlingOp.hpp +51 -0
- mqt/core/include/mqt-core/na/operations/StoreOp.hpp +87 -0
- mqt/core/include/mqt-core/qasm3/Exception.hpp +85 -0
- mqt/core/include/mqt-core/qasm3/Gate.hpp +65 -0
- mqt/core/include/mqt-core/qasm3/Importer.hpp +192 -0
- mqt/core/include/mqt-core/qasm3/InstVisitor.hpp +145 -0
- mqt/core/include/mqt-core/qasm3/NestedEnvironment.hpp +41 -0
- mqt/core/include/mqt-core/qasm3/Parser.hpp +170 -0
- mqt/core/include/mqt-core/qasm3/Scanner.hpp +73 -0
- mqt/core/include/mqt-core/qasm3/Statement.hpp +486 -0
- mqt/core/include/mqt-core/qasm3/Statement_fwd.hpp +39 -0
- mqt/core/include/mqt-core/qasm3/StdGates.hpp +123 -0
- mqt/core/include/mqt-core/qasm3/Token.hpp +198 -0
- mqt/core/include/mqt-core/qasm3/Types.hpp +238 -0
- mqt/core/include/mqt-core/qasm3/Types_fwd.hpp +22 -0
- mqt/core/include/mqt-core/qasm3/mqt_core_qasm_export.h +43 -0
- mqt/core/include/mqt-core/qasm3/passes/CompilerPass.hpp +22 -0
- mqt/core/include/mqt-core/qasm3/passes/ConstEvalPass.hpp +102 -0
- mqt/core/include/mqt-core/qasm3/passes/TypeCheckPass.hpp +124 -0
- mqt/core/include/mqt-core/zx/FunctionalityConstruction.hpp +125 -0
- mqt/core/include/mqt-core/zx/Rational.hpp +318 -0
- mqt/core/include/mqt-core/zx/Rules.hpp +132 -0
- mqt/core/include/mqt-core/zx/Simplify.hpp +182 -0
- mqt/core/include/mqt-core/zx/Utils.hpp +212 -0
- mqt/core/include/mqt-core/zx/ZXDefinitions.hpp +93 -0
- mqt/core/include/mqt-core/zx/ZXDiagram.hpp +480 -0
- mqt/core/include/mqt-core/zx/mqt_core_zx_export.h +43 -0
- mqt/core/ir/__init__.pyi +1998 -0
- mqt/core/ir/operations.pyi +1019 -0
- mqt/core/ir/registers.pyi +91 -0
- mqt/core/ir/symbolic.pyi +177 -0
- mqt/core/ir.cp313-win_arm64.pyd +0 -0
- mqt/core/lib/mqt-core-algorithms.lib +0 -0
- mqt/core/lib/mqt-core-circuit-optimizer.lib +0 -0
- mqt/core/lib/mqt-core-dd.lib +0 -0
- mqt/core/lib/mqt-core-ds.lib +0 -0
- mqt/core/lib/mqt-core-ir.lib +0 -0
- mqt/core/lib/mqt-core-na.lib +0 -0
- mqt/core/lib/mqt-core-qasm.lib +0 -0
- mqt/core/lib/mqt-core-zx.lib +0 -0
- mqt/core/plugins/__init__.py +9 -0
- mqt/core/plugins/qiskit/__init__.py +19 -0
- mqt/core/plugins/qiskit/mqt_to_qiskit.py +354 -0
- mqt/core/plugins/qiskit/qiskit_to_mqt.py +455 -0
- mqt/core/py.typed +2 -0
- mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +52 -0
- mqt/core/share/cmake/mqt-core/Cache.cmake +32 -0
- mqt/core/share/cmake/mqt-core/FindGMP.cmake +103 -0
- mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +40 -0
- mqt/core/share/cmake/mqt-core/PreventInSourceBuilds.cmake +25 -0
- mqt/core/share/cmake/mqt-core/StandardProjectSettings.cmake +87 -0
- mqt/core/share/cmake/mqt-core/mqt-core-config-version.cmake +85 -0
- mqt/core/share/cmake/mqt-core/mqt-core-config.cmake +49 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +90 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +324 -0
- mqt_core-3.1.0.dist-info/DELVEWHEEL +2 -0
- mqt_core-3.1.0.dist-info/METADATA +168 -0
- mqt_core-3.1.0.dist-info/RECORD +343 -0
- mqt_core-3.1.0.dist-info/WHEEL +5 -0
- mqt_core-3.1.0.dist-info/entry_points.txt +4 -0
- mqt_core-3.1.0.dist-info/licenses/LICENSE.md +22 -0
- mqt_core.libs/msvcp140.dll +0 -0
|
@@ -0,0 +1,123 @@
|
|
|
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 "Gate.hpp"
|
|
14
|
+
#include "ir/operations/OpType.hpp"
|
|
15
|
+
|
|
16
|
+
#include <map>
|
|
17
|
+
#include <memory>
|
|
18
|
+
#include <string>
|
|
19
|
+
|
|
20
|
+
namespace qasm3 {
|
|
21
|
+
// Non-natively supported gates from
|
|
22
|
+
// https://github.com/Qiskit/qiskit/blob/main/qiskit/qasm/libs/stdgates.inc
|
|
23
|
+
const std::string STDGATES =
|
|
24
|
+
"// four parameter controlled-U gate with relative phase\n"
|
|
25
|
+
"gate cu(theta, phi, lambda, gamma) c, t { p(gamma) c; ctrl @ U(theta, "
|
|
26
|
+
"phi, lambda) c, t; }\n";
|
|
27
|
+
|
|
28
|
+
// Non-natively supported gates from
|
|
29
|
+
// https://github.com/Qiskit/qiskit/blob/main/qiskit/qasm/libs/qelib1.inc
|
|
30
|
+
const std::string QE1LIB = "gate rccx a, b, c {\n"
|
|
31
|
+
" u2(0, pi) c; u1(pi/4) c; \n"
|
|
32
|
+
" cx b, c; u1(-pi/4) c; \n"
|
|
33
|
+
" cx a, c; u1(pi/4) c; \n"
|
|
34
|
+
" cx b, c; u1(-pi/4) c; \n"
|
|
35
|
+
" u2(0, pi) c; \n"
|
|
36
|
+
"}\n"
|
|
37
|
+
"gate rc3x a,b,c,d {\n"
|
|
38
|
+
" u2(0,pi) d; u1(pi/4) d; \n"
|
|
39
|
+
" cx c,d; u1(-pi/4) d; u2(0,pi) d; \n"
|
|
40
|
+
" cx a,d; u1(pi/4) d; \n"
|
|
41
|
+
" cx b,d; u1(-pi/4) d; \n"
|
|
42
|
+
" cx a,d; u1(pi/4) d; \n"
|
|
43
|
+
" cx b,d; u1(-pi/4) d; \n"
|
|
44
|
+
" u2(0,pi) d; u1(pi/4) d; \n"
|
|
45
|
+
" cx c,d; u1(-pi/4) d; \n"
|
|
46
|
+
" u2(0,pi) d; \n"
|
|
47
|
+
"}\n";
|
|
48
|
+
|
|
49
|
+
const std::map<std::string, std::shared_ptr<Gate>> STANDARD_GATES = {
|
|
50
|
+
// gates from which all other gates can be constructed.
|
|
51
|
+
{"gphase",
|
|
52
|
+
std::make_shared<StandardGate>(StandardGate({0, 0, 1, qc::GPhase}))},
|
|
53
|
+
{"U", std::make_shared<StandardGate>(StandardGate({0, 1, 3, qc::U}))},
|
|
54
|
+
|
|
55
|
+
// natively supported gates
|
|
56
|
+
{"p", std::make_shared<StandardGate>(StandardGate({0, 1, 1, qc::P}))},
|
|
57
|
+
{"u1", std::make_shared<StandardGate>(StandardGate({0, 1, 1, qc::P}))},
|
|
58
|
+
{"phase", std::make_shared<StandardGate>(StandardGate({0, 1, 1, qc::P}))},
|
|
59
|
+
{"cphase", std::make_shared<StandardGate>(StandardGate({1, 1, 1, qc::P}))},
|
|
60
|
+
{"cp", std::make_shared<StandardGate>(StandardGate({1, 1, 1, qc::P}))},
|
|
61
|
+
|
|
62
|
+
{"id", std::make_shared<StandardGate>(StandardGate({0, 1, 0, qc::I}))},
|
|
63
|
+
{"u2", std::make_shared<StandardGate>(StandardGate({0, 1, 2, qc::U2}))},
|
|
64
|
+
{"u3", std::make_shared<StandardGate>(StandardGate({0, 1, 3, qc::U}))},
|
|
65
|
+
{"u", std::make_shared<StandardGate>(StandardGate({0, 1, 3, qc::U}))},
|
|
66
|
+
|
|
67
|
+
{"x", std::make_shared<StandardGate>(StandardGate({0, 1, 0, qc::X}))},
|
|
68
|
+
{"cx", std::make_shared<StandardGate>(StandardGate({1, 1, 0, qc::X}))},
|
|
69
|
+
{"CX", std::make_shared<StandardGate>(StandardGate({1, 1, 0, qc::X}))},
|
|
70
|
+
{"ccx", std::make_shared<StandardGate>(StandardGate({2, 1, 0, qc::X}))},
|
|
71
|
+
{"c3x", std::make_shared<StandardGate>(StandardGate({3, 1, 0, qc::X}))},
|
|
72
|
+
{"c4x", std::make_shared<StandardGate>(StandardGate({4, 1, 0, qc::X}))},
|
|
73
|
+
|
|
74
|
+
{"rx", std::make_shared<StandardGate>(StandardGate({0, 1, 1, qc::RX}))},
|
|
75
|
+
{"crx", std::make_shared<StandardGate>(StandardGate({1, 1, 1, qc::RX}))},
|
|
76
|
+
|
|
77
|
+
{"y", std::make_shared<StandardGate>(StandardGate({0, 1, 0, qc::Y}))},
|
|
78
|
+
{"cy", std::make_shared<StandardGate>(StandardGate({1, 1, 0, qc::Y}))},
|
|
79
|
+
|
|
80
|
+
{"ry", std::make_shared<StandardGate>(StandardGate({0, 1, 1, qc::RY}))},
|
|
81
|
+
{"cry", std::make_shared<StandardGate>(StandardGate({1, 1, 1, qc::RY}))},
|
|
82
|
+
|
|
83
|
+
{"z", std::make_shared<StandardGate>(StandardGate({0, 1, 0, qc::Z}))},
|
|
84
|
+
{"cz", std::make_shared<StandardGate>(StandardGate({1, 1, 0, qc::Z}))},
|
|
85
|
+
|
|
86
|
+
{"rz", std::make_shared<StandardGate>(StandardGate({0, 1, 1, qc::RZ}))},
|
|
87
|
+
{"crz", std::make_shared<StandardGate>(StandardGate({1, 1, 1, qc::RZ}))},
|
|
88
|
+
|
|
89
|
+
{"h", std::make_shared<StandardGate>(StandardGate({0, 1, 0, qc::H}))},
|
|
90
|
+
{"ch", std::make_shared<StandardGate>(StandardGate({1, 1, 0, qc::H}))},
|
|
91
|
+
|
|
92
|
+
{"s", std::make_shared<StandardGate>(StandardGate({0, 1, 0, qc::S}))},
|
|
93
|
+
{"sdg", std::make_shared<StandardGate>(StandardGate({0, 1, 0, qc::Sdg}))},
|
|
94
|
+
|
|
95
|
+
{"t", std::make_shared<StandardGate>(StandardGate({0, 1, 0, qc::T}))},
|
|
96
|
+
{"tdg", std::make_shared<StandardGate>(StandardGate({0, 1, 0, qc::Tdg}))},
|
|
97
|
+
|
|
98
|
+
{"sx", std::make_shared<StandardGate>(StandardGate({0, 1, 0, qc::SX}))},
|
|
99
|
+
{"sxdg", std::make_shared<StandardGate>(StandardGate({0, 1, 0, qc::SXdg}))},
|
|
100
|
+
{"c3sqrtx",
|
|
101
|
+
std::make_shared<StandardGate>(StandardGate({3, 1, 0, qc::SXdg}))},
|
|
102
|
+
|
|
103
|
+
{"swap", std::make_shared<StandardGate>(StandardGate({0, 2, 0, qc::SWAP}))},
|
|
104
|
+
{"cswap",
|
|
105
|
+
std::make_shared<StandardGate>(StandardGate({1, 2, 0, qc::SWAP}))},
|
|
106
|
+
|
|
107
|
+
{"iswap",
|
|
108
|
+
std::make_shared<StandardGate>(StandardGate({0, 2, 0, qc::iSWAP}))},
|
|
109
|
+
{"iswapdg",
|
|
110
|
+
std::make_shared<StandardGate>(StandardGate({0, 2, 0, qc::iSWAPdg}))},
|
|
111
|
+
|
|
112
|
+
{"rxx", std::make_shared<StandardGate>(StandardGate({0, 2, 1, qc::RXX}))},
|
|
113
|
+
{"ryy", std::make_shared<StandardGate>(StandardGate({0, 2, 1, qc::RYY}))},
|
|
114
|
+
{"rzz", std::make_shared<StandardGate>(StandardGate({0, 2, 1, qc::RZZ}))},
|
|
115
|
+
{"rzx", std::make_shared<StandardGate>(StandardGate({0, 2, 1, qc::RZX}))},
|
|
116
|
+
{"dcx", std::make_shared<StandardGate>(StandardGate({0, 2, 0, qc::DCX}))},
|
|
117
|
+
{"ecr", std::make_shared<StandardGate>(StandardGate({0, 2, 0, qc::ECR}))},
|
|
118
|
+
{"xx_minus_yy",
|
|
119
|
+
std::make_shared<StandardGate>(StandardGate({0, 2, 2, qc::XXminusYY}))},
|
|
120
|
+
{"xx_plus_yy",
|
|
121
|
+
std::make_shared<StandardGate>(StandardGate({0, 2, 2, qc::XXplusYY}))},
|
|
122
|
+
};
|
|
123
|
+
} // namespace qasm3
|
|
@@ -0,0 +1,198 @@
|
|
|
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 <cstddef>
|
|
14
|
+
#include <cstdint>
|
|
15
|
+
#include <iosfwd>
|
|
16
|
+
#include <string>
|
|
17
|
+
#include <utility>
|
|
18
|
+
|
|
19
|
+
namespace qasm3 {
|
|
20
|
+
|
|
21
|
+
struct Token {
|
|
22
|
+
enum class Kind : uint8_t {
|
|
23
|
+
None,
|
|
24
|
+
|
|
25
|
+
OpenQasm,
|
|
26
|
+
Include,
|
|
27
|
+
DefCalGrammar,
|
|
28
|
+
Def,
|
|
29
|
+
Cal,
|
|
30
|
+
DefCal,
|
|
31
|
+
Gate,
|
|
32
|
+
Opaque,
|
|
33
|
+
Extern,
|
|
34
|
+
Box,
|
|
35
|
+
Let,
|
|
36
|
+
|
|
37
|
+
Break,
|
|
38
|
+
Continue,
|
|
39
|
+
If,
|
|
40
|
+
Else,
|
|
41
|
+
End,
|
|
42
|
+
Return,
|
|
43
|
+
For,
|
|
44
|
+
While,
|
|
45
|
+
In,
|
|
46
|
+
|
|
47
|
+
Pragma,
|
|
48
|
+
|
|
49
|
+
// types
|
|
50
|
+
Input,
|
|
51
|
+
Output,
|
|
52
|
+
Const,
|
|
53
|
+
ReadOnly,
|
|
54
|
+
Mutable,
|
|
55
|
+
|
|
56
|
+
Qreg,
|
|
57
|
+
Qubit,
|
|
58
|
+
|
|
59
|
+
CReg,
|
|
60
|
+
Bool,
|
|
61
|
+
Bit,
|
|
62
|
+
Int,
|
|
63
|
+
Uint,
|
|
64
|
+
Float,
|
|
65
|
+
Angle,
|
|
66
|
+
Complex,
|
|
67
|
+
Array,
|
|
68
|
+
Void,
|
|
69
|
+
|
|
70
|
+
Duration,
|
|
71
|
+
Stretch,
|
|
72
|
+
|
|
73
|
+
// builtin identifiers
|
|
74
|
+
Gphase,
|
|
75
|
+
Inv,
|
|
76
|
+
Pow,
|
|
77
|
+
Ctrl,
|
|
78
|
+
NegCtrl,
|
|
79
|
+
|
|
80
|
+
Dim,
|
|
81
|
+
|
|
82
|
+
DurationOf,
|
|
83
|
+
|
|
84
|
+
Delay,
|
|
85
|
+
Reset,
|
|
86
|
+
Measure,
|
|
87
|
+
Barrier,
|
|
88
|
+
|
|
89
|
+
True,
|
|
90
|
+
False,
|
|
91
|
+
|
|
92
|
+
LBracket,
|
|
93
|
+
RBracket,
|
|
94
|
+
LBrace,
|
|
95
|
+
RBrace,
|
|
96
|
+
LParen,
|
|
97
|
+
RParen,
|
|
98
|
+
|
|
99
|
+
Colon,
|
|
100
|
+
Semicolon,
|
|
101
|
+
Eof,
|
|
102
|
+
|
|
103
|
+
Dot,
|
|
104
|
+
Comma,
|
|
105
|
+
|
|
106
|
+
Equals,
|
|
107
|
+
Arrow,
|
|
108
|
+
Plus,
|
|
109
|
+
DoublePlus,
|
|
110
|
+
Minus,
|
|
111
|
+
Asterisk,
|
|
112
|
+
DoubleAsterisk,
|
|
113
|
+
Slash,
|
|
114
|
+
Percent,
|
|
115
|
+
Pipe,
|
|
116
|
+
DoublePipe,
|
|
117
|
+
Ampersand,
|
|
118
|
+
DoubleAmpersand,
|
|
119
|
+
Caret,
|
|
120
|
+
At,
|
|
121
|
+
Tilde,
|
|
122
|
+
ExclamationPoint,
|
|
123
|
+
|
|
124
|
+
DoubleEquals,
|
|
125
|
+
NotEquals,
|
|
126
|
+
PlusEquals,
|
|
127
|
+
MinusEquals,
|
|
128
|
+
AsteriskEquals,
|
|
129
|
+
SlashEquals,
|
|
130
|
+
AmpersandEquals,
|
|
131
|
+
PipeEquals,
|
|
132
|
+
TildeEquals,
|
|
133
|
+
CaretEquals,
|
|
134
|
+
LeftShitEquals,
|
|
135
|
+
RightShiftEquals,
|
|
136
|
+
PercentEquals,
|
|
137
|
+
DoubleAsteriskEquals,
|
|
138
|
+
|
|
139
|
+
LessThan,
|
|
140
|
+
LessThanEquals,
|
|
141
|
+
GreaterThan,
|
|
142
|
+
GreaterThanEquals,
|
|
143
|
+
LeftShift,
|
|
144
|
+
RightShift,
|
|
145
|
+
|
|
146
|
+
Imag,
|
|
147
|
+
|
|
148
|
+
Underscore,
|
|
149
|
+
|
|
150
|
+
DoubleQuote,
|
|
151
|
+
SingleQuote,
|
|
152
|
+
BackSlash,
|
|
153
|
+
|
|
154
|
+
Identifier,
|
|
155
|
+
|
|
156
|
+
HardwareQubit,
|
|
157
|
+
StringLiteral,
|
|
158
|
+
IntegerLiteral,
|
|
159
|
+
FloatLiteral,
|
|
160
|
+
TimingLiteral,
|
|
161
|
+
|
|
162
|
+
Sin,
|
|
163
|
+
Cos,
|
|
164
|
+
Tan,
|
|
165
|
+
Exp,
|
|
166
|
+
Ln,
|
|
167
|
+
Sqrt,
|
|
168
|
+
|
|
169
|
+
InitialLayout,
|
|
170
|
+
OutputPermutation,
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
Kind kind = Kind::None;
|
|
174
|
+
size_t line = 0;
|
|
175
|
+
size_t col = 0;
|
|
176
|
+
size_t endLine = 0;
|
|
177
|
+
size_t endCol = 0;
|
|
178
|
+
int64_t val{};
|
|
179
|
+
bool isSigned{false};
|
|
180
|
+
double valReal{};
|
|
181
|
+
std::string str;
|
|
182
|
+
|
|
183
|
+
Token(const size_t l, const size_t c)
|
|
184
|
+
: line(l), col(c), endLine(l), endCol(c) {}
|
|
185
|
+
Token(const Kind k, const size_t l, const size_t c)
|
|
186
|
+
: kind(k), line(l), col(c), endLine(l), endCol(c) {}
|
|
187
|
+
Token(const Kind k, const size_t l, const size_t c, std::string s)
|
|
188
|
+
: kind(k), line(l), col(c), endLine(l), endCol(c), str(std::move(s)) {}
|
|
189
|
+
|
|
190
|
+
static std::string kindToString(Kind kind);
|
|
191
|
+
|
|
192
|
+
[[nodiscard]] std::string toString() const;
|
|
193
|
+
|
|
194
|
+
friend std::ostream& operator<<(std::ostream& os, const Kind& k);
|
|
195
|
+
|
|
196
|
+
friend std::ostream& operator<<(std::ostream& os, const Token& t);
|
|
197
|
+
};
|
|
198
|
+
} // namespace qasm3
|
|
@@ -0,0 +1,238 @@
|
|
|
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 "InstVisitor.hpp"
|
|
14
|
+
#include "Types_fwd.hpp" // IWYU pragma: export
|
|
15
|
+
|
|
16
|
+
#include <cstddef>
|
|
17
|
+
#include <cstdint>
|
|
18
|
+
#include <memory>
|
|
19
|
+
#include <stdexcept>
|
|
20
|
+
#include <string>
|
|
21
|
+
|
|
22
|
+
namespace qasm3 {
|
|
23
|
+
|
|
24
|
+
template <typename T> class Type {
|
|
25
|
+
public:
|
|
26
|
+
virtual ~Type() = default;
|
|
27
|
+
|
|
28
|
+
[[nodiscard]] virtual bool operator==(const Type<T>& other) const = 0;
|
|
29
|
+
[[nodiscard]] bool operator!=(const Type<T>& other) const {
|
|
30
|
+
return !(*this == other);
|
|
31
|
+
}
|
|
32
|
+
[[nodiscard]] virtual bool allowsDesignator() const = 0;
|
|
33
|
+
|
|
34
|
+
virtual void setDesignator(T /*designator*/) {
|
|
35
|
+
throw std::runtime_error("Type does not allow designator");
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
[[nodiscard]] virtual T getDesignator() = 0;
|
|
39
|
+
|
|
40
|
+
virtual std::shared_ptr<ResolvedType> accept(TypeVisitor<T>* visitor) = 0;
|
|
41
|
+
|
|
42
|
+
virtual bool isBool() { return false; }
|
|
43
|
+
virtual bool isNumber() { return false; }
|
|
44
|
+
virtual bool isFP() { return false; }
|
|
45
|
+
virtual bool isUint() { return false; }
|
|
46
|
+
virtual bool isBit() { return false; }
|
|
47
|
+
|
|
48
|
+
virtual bool isConvertibleToBool() { return isBool(); }
|
|
49
|
+
virtual bool fits(const Type& other) { return *this == other; }
|
|
50
|
+
|
|
51
|
+
virtual std::string toString() = 0;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
enum DesignatedTy : uint8_t {
|
|
55
|
+
Qubit,
|
|
56
|
+
Bit,
|
|
57
|
+
Int,
|
|
58
|
+
Uint,
|
|
59
|
+
Float,
|
|
60
|
+
Angle,
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
template <typename T> class DesignatedType final : public Type<T> {
|
|
64
|
+
public:
|
|
65
|
+
~DesignatedType() override = default;
|
|
66
|
+
|
|
67
|
+
DesignatedTy type;
|
|
68
|
+
|
|
69
|
+
T designator;
|
|
70
|
+
|
|
71
|
+
DesignatedType(const DesignatedTy ty, T design)
|
|
72
|
+
: type(ty), designator(std::move(design)) {}
|
|
73
|
+
|
|
74
|
+
explicit DesignatedType(DesignatedTy ty);
|
|
75
|
+
|
|
76
|
+
bool operator==(const Type<T>& other) const override {
|
|
77
|
+
if (const auto* o = dynamic_cast<const DesignatedType<T>*>(&other)) {
|
|
78
|
+
return type == o->type && designator == o->designator;
|
|
79
|
+
}
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
[[nodiscard]] bool allowsDesignator() const override { return true; }
|
|
84
|
+
|
|
85
|
+
static std::shared_ptr<DesignatedType> getQubitTy(T designator) {
|
|
86
|
+
return std::make_shared<DesignatedType>(Qubit, designator);
|
|
87
|
+
}
|
|
88
|
+
static std::shared_ptr<DesignatedType> getBitTy(T designator) {
|
|
89
|
+
return std::make_shared<DesignatedType>(Bit, designator);
|
|
90
|
+
}
|
|
91
|
+
static std::shared_ptr<DesignatedType> getIntTy(T designator) {
|
|
92
|
+
return std::make_shared<DesignatedType>(Int, designator);
|
|
93
|
+
}
|
|
94
|
+
static std::shared_ptr<DesignatedType> getUintTy(T designator) {
|
|
95
|
+
return std::make_shared<DesignatedType>(Uint, designator);
|
|
96
|
+
}
|
|
97
|
+
static std::shared_ptr<DesignatedType> getFloatTy(T designator) {
|
|
98
|
+
return std::make_shared<DesignatedType>(Float, designator);
|
|
99
|
+
}
|
|
100
|
+
static std::shared_ptr<DesignatedType> getAngleTy(T designator) {
|
|
101
|
+
return std::make_shared<DesignatedType>(Angle, designator);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
void setDesignator(T d) override { this->designator = std::move(d); }
|
|
105
|
+
|
|
106
|
+
T getDesignator() override { return designator; }
|
|
107
|
+
|
|
108
|
+
std::shared_ptr<ResolvedType> accept(TypeVisitor<T>* visitor) override {
|
|
109
|
+
return visitor->visitDesignatedType(this);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
bool isNumber() override {
|
|
113
|
+
return type == Int || type == Uint || type == Bit || type == Float;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
bool isUint() override { return type == Uint; }
|
|
117
|
+
|
|
118
|
+
bool isBit() override { return type == Bit; }
|
|
119
|
+
|
|
120
|
+
bool isFP() override { return type == Float; }
|
|
121
|
+
|
|
122
|
+
bool isConvertibleToBool() override {
|
|
123
|
+
if constexpr (std::is_integral_v<T>) {
|
|
124
|
+
return type == Bit && designator == 1;
|
|
125
|
+
} else {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
bool fits(const Type<T>& other) override;
|
|
131
|
+
|
|
132
|
+
std::string toString() override {
|
|
133
|
+
switch (type) {
|
|
134
|
+
case Qubit:
|
|
135
|
+
return "qubit[" + designatorToString() + "]";
|
|
136
|
+
case Bit:
|
|
137
|
+
return "bit[" + designatorToString() + "]";
|
|
138
|
+
case Int:
|
|
139
|
+
return "int[" + designatorToString() + "]";
|
|
140
|
+
case Uint:
|
|
141
|
+
return "uint[" + designatorToString() + "]";
|
|
142
|
+
case Float:
|
|
143
|
+
return "float[" + designatorToString() + "]";
|
|
144
|
+
case Angle:
|
|
145
|
+
return "angle[" + designatorToString() + "]";
|
|
146
|
+
}
|
|
147
|
+
throw std::runtime_error("Unhandled type");
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
std::string designatorToString();
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
enum UnsizedTy : uint8_t { Bool, Duration };
|
|
154
|
+
|
|
155
|
+
template <typename T> class UnsizedType final : public Type<T> {
|
|
156
|
+
public:
|
|
157
|
+
~UnsizedType() override = default;
|
|
158
|
+
|
|
159
|
+
UnsizedTy type;
|
|
160
|
+
|
|
161
|
+
explicit UnsizedType(const UnsizedTy ty) : type(ty) {}
|
|
162
|
+
|
|
163
|
+
bool operator==(const Type<T>& other) const override {
|
|
164
|
+
if (const auto* o = dynamic_cast<const UnsizedType*>(&other)) {
|
|
165
|
+
return type == o->type;
|
|
166
|
+
}
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
[[nodiscard]] bool allowsDesignator() const override { return false; }
|
|
170
|
+
|
|
171
|
+
static std::shared_ptr<Type<T>> getBoolTy() {
|
|
172
|
+
return std::make_shared<UnsizedType>(Bool);
|
|
173
|
+
}
|
|
174
|
+
static std::shared_ptr<Type<T>> getDurationTy() {
|
|
175
|
+
return std::make_shared<UnsizedType>(Duration);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
T getDesignator() override {
|
|
179
|
+
throw std::runtime_error("Unsized types do not have designators");
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
std::shared_ptr<ResolvedType> accept(TypeVisitor<T>* visitor) override {
|
|
183
|
+
return visitor->visitUnsizedType(this);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
bool isBool() override { return type == Bool; }
|
|
187
|
+
|
|
188
|
+
std::string toString() override {
|
|
189
|
+
switch (type) {
|
|
190
|
+
case Bool:
|
|
191
|
+
return "bool";
|
|
192
|
+
case Duration:
|
|
193
|
+
return "duration";
|
|
194
|
+
}
|
|
195
|
+
throw std::runtime_error("Unhandled type");
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
template <typename T> class ArrayType final : public Type<T> {
|
|
200
|
+
public:
|
|
201
|
+
std::shared_ptr<Type<T>> type;
|
|
202
|
+
T size;
|
|
203
|
+
|
|
204
|
+
ArrayType(std::shared_ptr<Type<T>> ty, T sz)
|
|
205
|
+
: type(std::move(ty)), size(sz) {}
|
|
206
|
+
~ArrayType() override = default;
|
|
207
|
+
|
|
208
|
+
bool operator==(const Type<T>& other) const override {
|
|
209
|
+
if (const auto* o = dynamic_cast<const ArrayType*>(&other)) {
|
|
210
|
+
return *type == *o->type && size == o->size;
|
|
211
|
+
}
|
|
212
|
+
return false;
|
|
213
|
+
}
|
|
214
|
+
[[nodiscard]] bool allowsDesignator() const override { return true; }
|
|
215
|
+
|
|
216
|
+
T getDesignator() override { return size; }
|
|
217
|
+
|
|
218
|
+
std::shared_ptr<ResolvedType> accept(TypeVisitor<T>* visitor) override {
|
|
219
|
+
return visitor->visitArrayType(this);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
bool fits(const Type<T>& other) override {
|
|
223
|
+
if (const auto* o = dynamic_cast<const ArrayType*>(&other)) {
|
|
224
|
+
return type->fits(*o->type) && size == o->size;
|
|
225
|
+
}
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
std::string toString() override {
|
|
230
|
+
if constexpr (std::is_same_v<T, size_t>) {
|
|
231
|
+
return type->toString() + "[" + std::to_string(size) + "]";
|
|
232
|
+
} else {
|
|
233
|
+
return type->toString() + "[<expression>]";
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
} // namespace qasm3
|
|
@@ -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 <cstdint>
|
|
14
|
+
#include <memory>
|
|
15
|
+
|
|
16
|
+
namespace qasm3 {
|
|
17
|
+
class Expression;
|
|
18
|
+
|
|
19
|
+
template <typename T> class Type;
|
|
20
|
+
using TypeExpr = Type<std::shared_ptr<Expression>>;
|
|
21
|
+
using ResolvedType = Type<uint64_t>;
|
|
22
|
+
} // namespace qasm3
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
|
|
2
|
+
#ifndef MQT_CORE_QASM_EXPORT_H
|
|
3
|
+
#define MQT_CORE_QASM_EXPORT_H
|
|
4
|
+
|
|
5
|
+
#ifdef MQT_CORE_QASM_STATIC_DEFINE
|
|
6
|
+
# define MQT_CORE_QASM_EXPORT
|
|
7
|
+
# define MQT_CORE_QASM_NO_EXPORT
|
|
8
|
+
#else
|
|
9
|
+
# ifndef MQT_CORE_QASM_EXPORT
|
|
10
|
+
# ifdef mqt_core_qasm_EXPORTS
|
|
11
|
+
/* We are building this library */
|
|
12
|
+
# define MQT_CORE_QASM_EXPORT __declspec(dllexport)
|
|
13
|
+
# else
|
|
14
|
+
/* We are using this library */
|
|
15
|
+
# define MQT_CORE_QASM_EXPORT __declspec(dllimport)
|
|
16
|
+
# endif
|
|
17
|
+
# endif
|
|
18
|
+
|
|
19
|
+
# ifndef MQT_CORE_QASM_NO_EXPORT
|
|
20
|
+
# define MQT_CORE_QASM_NO_EXPORT
|
|
21
|
+
# endif
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
#ifndef MQT_CORE_QASM_DEPRECATED
|
|
25
|
+
# define MQT_CORE_QASM_DEPRECATED __declspec(deprecated)
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
#ifndef MQT_CORE_QASM_DEPRECATED_EXPORT
|
|
29
|
+
# define MQT_CORE_QASM_DEPRECATED_EXPORT MQT_CORE_QASM_EXPORT MQT_CORE_QASM_DEPRECATED
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
#ifndef MQT_CORE_QASM_DEPRECATED_NO_EXPORT
|
|
33
|
+
# define MQT_CORE_QASM_DEPRECATED_NO_EXPORT MQT_CORE_QASM_NO_EXPORT MQT_CORE_QASM_DEPRECATED
|
|
34
|
+
#endif
|
|
35
|
+
|
|
36
|
+
/* NOLINTNEXTLINE(readability-avoid-unconditional-preprocessor-if) */
|
|
37
|
+
#if 0 /* DEFINE_NO_DEPRECATED */
|
|
38
|
+
# ifndef MQT_CORE_QASM_NO_DEPRECATED
|
|
39
|
+
# define MQT_CORE_QASM_NO_DEPRECATED
|
|
40
|
+
# endif
|
|
41
|
+
#endif
|
|
42
|
+
|
|
43
|
+
#endif /* MQT_CORE_QASM_EXPORT_H */
|
|
@@ -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
|
+
namespace qasm3 {
|
|
14
|
+
class Statement;
|
|
15
|
+
|
|
16
|
+
class CompilerPass {
|
|
17
|
+
public:
|
|
18
|
+
virtual ~CompilerPass() = default;
|
|
19
|
+
|
|
20
|
+
virtual void processStatement(Statement& statement) = 0;
|
|
21
|
+
};
|
|
22
|
+
} // namespace qasm3
|