mqt-core 3.1.0__cp313-cp313t-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.cp313t-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.cp313t-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,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
|
+
|