mqt-core 3.3.2__cp313-cp313t-win_amd64.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.
- 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 +34 -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-fomac.dll +0 -0
- mqt/core/bin/mqt-core-ir.dll +0 -0
- mqt/core/bin/mqt-core-na-fomac.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-qdmi-driver.dll +0 -0
- mqt/core/bin/mqt-core-qdmi-na-device.dll +0 -0
- mqt/core/bin/mqt-core-zx.dll +0 -0
- mqt/core/dd.cp313t-win_amd64.pyd +0 -0
- mqt/core/dd.pyi +1016 -0
- mqt/core/dd_evaluation.py +368 -0
- mqt/core/fomac.cp313t-win_amd64.pyd +0 -0
- mqt/core/fomac.pyi +125 -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 +119 -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 +174 -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 +306 -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/fomac/FoMaC.hpp +568 -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 +596 -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/CompoundOperation.hpp +212 -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/IfElseOperation.hpp +169 -0
- mqt/core/include/mqt-core/ir/operations/NonUnitaryOperation.hpp +118 -0
- mqt/core/include/mqt-core/ir/operations/OpType.hpp +120 -0
- mqt/core/include/mqt-core/ir/operations/OpType.inc +76 -0
- mqt/core/include/mqt-core/ir/operations/Operation.hpp +247 -0
- mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +140 -0
- mqt/core/include/mqt-core/ir/operations/SymbolicOperation.hpp +144 -0
- mqt/core/include/mqt-core/mqt_na_qdmi/device.h +602 -0
- mqt/core/include/mqt-core/mqt_na_qdmi/types.h +78 -0
- mqt/core/include/mqt-core/na/NAComputation.hpp +185 -0
- mqt/core/include/mqt-core/na/device/Device.hpp +410 -0
- mqt/core/include/mqt-core/na/device/DeviceMemberInitializers.hpp +724 -0
- mqt/core/include/mqt-core/na/device/Generator.hpp +447 -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/fomac/Device.hpp +169 -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 +232 -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/qdmi/Driver.hpp +431 -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/include/nlohmann/adl_serializer.hpp +55 -0
- mqt/core/include/nlohmann/byte_container_with_subtype.hpp +103 -0
- mqt/core/include/nlohmann/detail/abi_macros.hpp +111 -0
- mqt/core/include/nlohmann/detail/conversions/from_json.hpp +577 -0
- mqt/core/include/nlohmann/detail/conversions/to_chars.hpp +1118 -0
- mqt/core/include/nlohmann/detail/conversions/to_json.hpp +479 -0
- mqt/core/include/nlohmann/detail/exceptions.hpp +291 -0
- mqt/core/include/nlohmann/detail/hash.hpp +129 -0
- mqt/core/include/nlohmann/detail/input/binary_reader.hpp +3068 -0
- mqt/core/include/nlohmann/detail/input/input_adapters.hpp +549 -0
- mqt/core/include/nlohmann/detail/input/json_sax.hpp +986 -0
- mqt/core/include/nlohmann/detail/input/lexer.hpp +1643 -0
- mqt/core/include/nlohmann/detail/input/parser.hpp +519 -0
- mqt/core/include/nlohmann/detail/input/position_t.hpp +37 -0
- mqt/core/include/nlohmann/detail/iterators/internal_iterator.hpp +35 -0
- mqt/core/include/nlohmann/detail/iterators/iter_impl.hpp +760 -0
- mqt/core/include/nlohmann/detail/iterators/iteration_proxy.hpp +235 -0
- mqt/core/include/nlohmann/detail/iterators/iterator_traits.hpp +61 -0
- mqt/core/include/nlohmann/detail/iterators/json_reverse_iterator.hpp +130 -0
- mqt/core/include/nlohmann/detail/iterators/primitive_iterator.hpp +132 -0
- mqt/core/include/nlohmann/detail/json_custom_base_class.hpp +39 -0
- mqt/core/include/nlohmann/detail/json_pointer.hpp +988 -0
- mqt/core/include/nlohmann/detail/json_ref.hpp +78 -0
- mqt/core/include/nlohmann/detail/macro_scope.hpp +595 -0
- mqt/core/include/nlohmann/detail/macro_unscope.hpp +46 -0
- mqt/core/include/nlohmann/detail/meta/call_std/begin.hpp +17 -0
- mqt/core/include/nlohmann/detail/meta/call_std/end.hpp +17 -0
- mqt/core/include/nlohmann/detail/meta/cpp_future.hpp +171 -0
- mqt/core/include/nlohmann/detail/meta/detected.hpp +70 -0
- mqt/core/include/nlohmann/detail/meta/identity_tag.hpp +21 -0
- mqt/core/include/nlohmann/detail/meta/is_sax.hpp +159 -0
- mqt/core/include/nlohmann/detail/meta/std_fs.hpp +29 -0
- mqt/core/include/nlohmann/detail/meta/type_traits.hpp +795 -0
- mqt/core/include/nlohmann/detail/meta/void_t.hpp +24 -0
- mqt/core/include/nlohmann/detail/output/binary_writer.hpp +1850 -0
- mqt/core/include/nlohmann/detail/output/output_adapters.hpp +147 -0
- mqt/core/include/nlohmann/detail/output/serializer.hpp +988 -0
- mqt/core/include/nlohmann/detail/string_concat.hpp +146 -0
- mqt/core/include/nlohmann/detail/string_escape.hpp +72 -0
- mqt/core/include/nlohmann/detail/string_utils.hpp +37 -0
- mqt/core/include/nlohmann/detail/value_t.hpp +118 -0
- mqt/core/include/nlohmann/json.hpp +5306 -0
- mqt/core/include/nlohmann/json_fwd.hpp +75 -0
- mqt/core/include/nlohmann/ordered_map.hpp +359 -0
- mqt/core/include/nlohmann/thirdparty/hedley/hedley.hpp +2045 -0
- mqt/core/include/nlohmann/thirdparty/hedley/hedley_undef.hpp +158 -0
- mqt/core/include/qdmi/qdmi/client.h +990 -0
- mqt/core/include/qdmi/qdmi/constants.h +1139 -0
- mqt/core/include/qdmi/qdmi/device.h +602 -0
- mqt/core/include/qdmi/qdmi/types.h +78 -0
- mqt/core/include/spdlog/async.h +99 -0
- mqt/core/include/spdlog/async_logger-inl.h +84 -0
- mqt/core/include/spdlog/async_logger.h +74 -0
- mqt/core/include/spdlog/cfg/argv.h +40 -0
- mqt/core/include/spdlog/cfg/env.h +36 -0
- mqt/core/include/spdlog/cfg/helpers-inl.h +107 -0
- mqt/core/include/spdlog/cfg/helpers.h +29 -0
- mqt/core/include/spdlog/common-inl.h +68 -0
- mqt/core/include/spdlog/common.h +406 -0
- mqt/core/include/spdlog/details/backtracer-inl.h +63 -0
- mqt/core/include/spdlog/details/backtracer.h +45 -0
- mqt/core/include/spdlog/details/circular_q.h +115 -0
- mqt/core/include/spdlog/details/console_globals.h +28 -0
- mqt/core/include/spdlog/details/file_helper-inl.h +153 -0
- mqt/core/include/spdlog/details/file_helper.h +61 -0
- mqt/core/include/spdlog/details/fmt_helper.h +141 -0
- mqt/core/include/spdlog/details/log_msg-inl.h +44 -0
- mqt/core/include/spdlog/details/log_msg.h +40 -0
- mqt/core/include/spdlog/details/log_msg_buffer-inl.h +54 -0
- mqt/core/include/spdlog/details/log_msg_buffer.h +32 -0
- mqt/core/include/spdlog/details/mpmc_blocking_q.h +177 -0
- mqt/core/include/spdlog/details/null_mutex.h +35 -0
- mqt/core/include/spdlog/details/os-inl.h +606 -0
- mqt/core/include/spdlog/details/os.h +127 -0
- mqt/core/include/spdlog/details/periodic_worker-inl.h +26 -0
- mqt/core/include/spdlog/details/periodic_worker.h +58 -0
- mqt/core/include/spdlog/details/registry-inl.h +270 -0
- mqt/core/include/spdlog/details/registry.h +131 -0
- mqt/core/include/spdlog/details/synchronous_factory.h +22 -0
- mqt/core/include/spdlog/details/tcp_client-windows.h +135 -0
- mqt/core/include/spdlog/details/tcp_client.h +127 -0
- mqt/core/include/spdlog/details/thread_pool-inl.h +126 -0
- mqt/core/include/spdlog/details/thread_pool.h +117 -0
- mqt/core/include/spdlog/details/udp_client-windows.h +98 -0
- mqt/core/include/spdlog/details/udp_client.h +81 -0
- mqt/core/include/spdlog/details/windows_include.h +11 -0
- mqt/core/include/spdlog/fmt/bin_to_hex.h +224 -0
- mqt/core/include/spdlog/fmt/bundled/args.h +220 -0
- mqt/core/include/spdlog/fmt/bundled/base.h +2989 -0
- mqt/core/include/spdlog/fmt/bundled/chrono.h +2330 -0
- mqt/core/include/spdlog/fmt/bundled/color.h +637 -0
- mqt/core/include/spdlog/fmt/bundled/compile.h +539 -0
- mqt/core/include/spdlog/fmt/bundled/core.h +5 -0
- mqt/core/include/spdlog/fmt/bundled/fmt.license.rst +27 -0
- mqt/core/include/spdlog/fmt/bundled/format-inl.h +1948 -0
- mqt/core/include/spdlog/fmt/bundled/format.h +4244 -0
- mqt/core/include/spdlog/fmt/bundled/os.h +427 -0
- mqt/core/include/spdlog/fmt/bundled/ostream.h +167 -0
- mqt/core/include/spdlog/fmt/bundled/printf.h +633 -0
- mqt/core/include/spdlog/fmt/bundled/ranges.h +850 -0
- mqt/core/include/spdlog/fmt/bundled/std.h +728 -0
- mqt/core/include/spdlog/fmt/bundled/xchar.h +369 -0
- mqt/core/include/spdlog/fmt/chrono.h +23 -0
- mqt/core/include/spdlog/fmt/compile.h +23 -0
- mqt/core/include/spdlog/fmt/fmt.h +30 -0
- mqt/core/include/spdlog/fmt/ostr.h +23 -0
- mqt/core/include/spdlog/fmt/ranges.h +23 -0
- mqt/core/include/spdlog/fmt/std.h +24 -0
- mqt/core/include/spdlog/fmt/xchar.h +23 -0
- mqt/core/include/spdlog/formatter.h +17 -0
- mqt/core/include/spdlog/fwd.h +18 -0
- mqt/core/include/spdlog/logger-inl.h +198 -0
- mqt/core/include/spdlog/logger.h +379 -0
- mqt/core/include/spdlog/mdc.h +52 -0
- mqt/core/include/spdlog/pattern_formatter-inl.h +1340 -0
- mqt/core/include/spdlog/pattern_formatter.h +118 -0
- mqt/core/include/spdlog/sinks/android_sink.h +137 -0
- mqt/core/include/spdlog/sinks/ansicolor_sink-inl.h +142 -0
- mqt/core/include/spdlog/sinks/ansicolor_sink.h +116 -0
- mqt/core/include/spdlog/sinks/base_sink-inl.h +59 -0
- mqt/core/include/spdlog/sinks/base_sink.h +51 -0
- mqt/core/include/spdlog/sinks/basic_file_sink-inl.h +48 -0
- mqt/core/include/spdlog/sinks/basic_file_sink.h +66 -0
- mqt/core/include/spdlog/sinks/callback_sink.h +56 -0
- mqt/core/include/spdlog/sinks/daily_file_sink.h +254 -0
- mqt/core/include/spdlog/sinks/dist_sink.h +81 -0
- mqt/core/include/spdlog/sinks/dup_filter_sink.h +91 -0
- mqt/core/include/spdlog/sinks/hourly_file_sink.h +193 -0
- mqt/core/include/spdlog/sinks/kafka_sink.h +119 -0
- mqt/core/include/spdlog/sinks/mongo_sink.h +108 -0
- mqt/core/include/spdlog/sinks/msvc_sink.h +68 -0
- mqt/core/include/spdlog/sinks/null_sink.h +41 -0
- mqt/core/include/spdlog/sinks/ostream_sink.h +43 -0
- mqt/core/include/spdlog/sinks/qt_sinks.h +304 -0
- mqt/core/include/spdlog/sinks/ringbuffer_sink.h +67 -0
- mqt/core/include/spdlog/sinks/rotating_file_sink-inl.h +179 -0
- mqt/core/include/spdlog/sinks/rotating_file_sink.h +93 -0
- mqt/core/include/spdlog/sinks/sink-inl.h +22 -0
- mqt/core/include/spdlog/sinks/sink.h +34 -0
- mqt/core/include/spdlog/sinks/stdout_color_sinks-inl.h +38 -0
- mqt/core/include/spdlog/sinks/stdout_color_sinks.h +49 -0
- mqt/core/include/spdlog/sinks/stdout_sinks-inl.h +127 -0
- mqt/core/include/spdlog/sinks/stdout_sinks.h +84 -0
- mqt/core/include/spdlog/sinks/syslog_sink.h +104 -0
- mqt/core/include/spdlog/sinks/systemd_sink.h +121 -0
- mqt/core/include/spdlog/sinks/tcp_sink.h +75 -0
- mqt/core/include/spdlog/sinks/udp_sink.h +69 -0
- mqt/core/include/spdlog/sinks/win_eventlog_sink.h +260 -0
- mqt/core/include/spdlog/sinks/wincolor_sink-inl.h +172 -0
- mqt/core/include/spdlog/sinks/wincolor_sink.h +82 -0
- mqt/core/include/spdlog/spdlog-inl.h +96 -0
- mqt/core/include/spdlog/spdlog.h +357 -0
- mqt/core/include/spdlog/stopwatch.h +66 -0
- mqt/core/include/spdlog/tweakme.h +148 -0
- mqt/core/include/spdlog/version.h +11 -0
- mqt/core/ir/__init__.pyi +2078 -0
- mqt/core/ir/operations.pyi +1011 -0
- mqt/core/ir/registers.pyi +91 -0
- mqt/core/ir/symbolic.pyi +177 -0
- mqt/core/ir.cp313t-win_amd64.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-fomac.lib +0 -0
- mqt/core/lib/mqt-core-ir.lib +0 -0
- mqt/core/lib/mqt-core-na-fomac.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-qdmi-driver.lib +0 -0
- mqt/core/lib/mqt-core-qdmi-na-device-gen.lib +0 -0
- mqt/core/lib/mqt-core-qdmi-na-device.lib +0 -0
- mqt/core/lib/mqt-core-zx.lib +0 -0
- mqt/core/lib/pkgconfig/spdlog.pc +13 -0
- mqt/core/lib/spdlog.lib +0 -0
- mqt/core/na/__init__.py +12 -0
- mqt/core/na/fomac.cp313t-win_amd64.pyd +0 -0
- mqt/core/na/fomac.pyi +117 -0
- mqt/core/nlohmann_json.natvis +278 -0
- mqt/core/plugins/__init__.py +9 -0
- mqt/core/plugins/qiskit/__init__.py +19 -0
- mqt/core/plugins/qiskit/mqt_to_qiskit.py +420 -0
- mqt/core/plugins/qiskit/qiskit_to_mqt.py +562 -0
- mqt/core/py.typed +2 -0
- mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +55 -0
- mqt/core/share/cmake/mqt-core/Cache.cmake +33 -0
- mqt/core/share/cmake/mqt-core/FindGMP.cmake +103 -0
- mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +46 -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 +52 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +141 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +445 -0
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfig.cmake +15 -0
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfigVersion.cmake +20 -0
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonTargets.cmake +110 -0
- mqt/core/share/cmake/qdmi/Cache.cmake +44 -0
- mqt/core/share/cmake/qdmi/PrefixHandling.cmake +78 -0
- mqt/core/share/cmake/qdmi/prefix_defs.txt +26 -0
- mqt/core/share/cmake/qdmi/qdmi-config-version.cmake +85 -0
- mqt/core/share/cmake/qdmi/qdmi-config.cmake +42 -0
- mqt/core/share/cmake/qdmi/qdmi-targets.cmake +129 -0
- mqt/core/share/cmake/spdlog/spdlogConfig.cmake +44 -0
- mqt/core/share/cmake/spdlog/spdlogConfigTargets-release.cmake +19 -0
- mqt/core/share/cmake/spdlog/spdlogConfigTargets.cmake +121 -0
- mqt/core/share/cmake/spdlog/spdlogConfigVersion.cmake +65 -0
- mqt/core/share/pkgconfig/nlohmann_json.pc +7 -0
- mqt_core-3.3.2.dist-info/DELVEWHEEL +2 -0
- mqt_core-3.3.2.dist-info/METADATA +210 -0
- mqt_core-3.3.2.dist-info/RECORD +537 -0
- mqt_core-3.3.2.dist-info/WHEEL +5 -0
- mqt_core-3.3.2.dist-info/entry_points.txt +4 -0
- mqt_core-3.3.2.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
|
+
)
|
|
Binary file
|
mqt/core/fomac.pyi
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
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
|
+
from collections.abc import Iterable
|
|
10
|
+
from enum import Enum
|
|
11
|
+
|
|
12
|
+
__all__ = [
|
|
13
|
+
"Device",
|
|
14
|
+
"devices",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
class Device:
|
|
18
|
+
"""A device represents a quantum device with its properties and capabilities."""
|
|
19
|
+
class Status(Enum):
|
|
20
|
+
offline = ...
|
|
21
|
+
idle = ...
|
|
22
|
+
busy = ...
|
|
23
|
+
error = ...
|
|
24
|
+
maintenance = ...
|
|
25
|
+
calibration = ...
|
|
26
|
+
|
|
27
|
+
class Site:
|
|
28
|
+
"""A site represents a potential qubit location on a quantum device."""
|
|
29
|
+
def index(self) -> int:
|
|
30
|
+
"""Returns the index of the site."""
|
|
31
|
+
def t1(self) -> int | None:
|
|
32
|
+
"""Returns the T1 coherence time of the site."""
|
|
33
|
+
def t2(self) -> int | None:
|
|
34
|
+
"""Returns the T2 coherence time of the site."""
|
|
35
|
+
def name(self) -> str | None:
|
|
36
|
+
"""Returns the name of the site."""
|
|
37
|
+
def x_coordinate(self) -> int | None:
|
|
38
|
+
"""Returns the x coordinate of the site."""
|
|
39
|
+
def y_coordinate(self) -> int | None:
|
|
40
|
+
"""Returns the y coordinate of the site."""
|
|
41
|
+
def z_coordinate(self) -> int | None:
|
|
42
|
+
"""Returns the z coordinate of the site."""
|
|
43
|
+
def is_zone(self) -> bool | None:
|
|
44
|
+
"""Returns whether the site is a zone."""
|
|
45
|
+
def x_extent(self) -> int | None:
|
|
46
|
+
"""Returns the x extent of the site."""
|
|
47
|
+
def y_extent(self) -> int | None:
|
|
48
|
+
"""Returns the y extent of the site."""
|
|
49
|
+
def z_extent(self) -> int | None:
|
|
50
|
+
"""Returns the z extent of the site."""
|
|
51
|
+
def module_index(self) -> int | None:
|
|
52
|
+
"""Returns the index of the module the site belongs to."""
|
|
53
|
+
def submodule_index(self) -> int | None:
|
|
54
|
+
"""Returns the index of the submodule the site belongs to."""
|
|
55
|
+
def __eq__(self, other: object) -> bool:
|
|
56
|
+
"""Checks if two sites are equal."""
|
|
57
|
+
def __ne__(self, other: object) -> bool:
|
|
58
|
+
"""Checks if two sites are not equal."""
|
|
59
|
+
|
|
60
|
+
class Operation:
|
|
61
|
+
"""An operation represents a quantum operation that can be performed on a quantum device."""
|
|
62
|
+
def name(self, sites: Iterable[Device.Site] = ..., params: Iterable[float] = ...) -> str:
|
|
63
|
+
"""Returns the name of the operation."""
|
|
64
|
+
def qubits_num(self, sites: Iterable[Device.Site] = ..., params: Iterable[float] = ...) -> int | None:
|
|
65
|
+
"""Returns the number of qubits the operation acts on."""
|
|
66
|
+
def parameters_num(self, sites: Iterable[Device.Site] = ..., params: Iterable[float] = ...) -> int:
|
|
67
|
+
"""Returns the number of parameters the operation has."""
|
|
68
|
+
def duration(self, sites: Iterable[Device.Site] = ..., params: Iterable[float] = ...) -> int | None:
|
|
69
|
+
"""Returns the duration of the operation."""
|
|
70
|
+
def fidelity(self, sites: Iterable[Device.Site] = ..., params: Iterable[float] = ...) -> float | None:
|
|
71
|
+
"""Returns the fidelity of the operation."""
|
|
72
|
+
def interaction_radius(self, sites: Iterable[Device.Site] = ..., params: Iterable[float] = ...) -> int | None:
|
|
73
|
+
"""Returns the interaction radius of the operation."""
|
|
74
|
+
def blocking_radius(self, sites: Iterable[Device.Site] = ..., params: Iterable[float] = ...) -> int | None:
|
|
75
|
+
"""Returns the blocking radius of the operation."""
|
|
76
|
+
def idling_fidelity(self, sites: Iterable[Device.Site] = ..., params: Iterable[float] = ...) -> float | None:
|
|
77
|
+
"""Returns the idling fidelity of the operation."""
|
|
78
|
+
def is_zoned(self, sites: Iterable[Device.Site] = ..., params: Iterable[float] = ...) -> bool | None:
|
|
79
|
+
"""Returns whether the operation is zoned."""
|
|
80
|
+
def sites(
|
|
81
|
+
self, sites: Iterable[Device.Site] = ..., params: Iterable[float] = ...
|
|
82
|
+
) -> Iterable[Device.Site] | None:
|
|
83
|
+
"""Returns the list of sites the operation can be performed on."""
|
|
84
|
+
def mean_shuttling_speed(self, sites: Iterable[Device.Site] = ..., params: Iterable[float] = ...) -> int | None:
|
|
85
|
+
"""Returns the mean shuttling speed of the operation."""
|
|
86
|
+
def __eq__(self, other: object) -> bool:
|
|
87
|
+
"""Checks if two operations are equal."""
|
|
88
|
+
def __ne__(self, other: object) -> bool:
|
|
89
|
+
"""Checks if two operations are not equal."""
|
|
90
|
+
|
|
91
|
+
def name(self) -> str:
|
|
92
|
+
"""Returns the name of the device."""
|
|
93
|
+
def version(self) -> str:
|
|
94
|
+
"""Returns the version of the device."""
|
|
95
|
+
def status(self) -> Device.Status:
|
|
96
|
+
"""Returns the current status of the device."""
|
|
97
|
+
def library_version(self) -> str:
|
|
98
|
+
"""Returns the version of the library used to define the device."""
|
|
99
|
+
def qubits_num(self) -> int:
|
|
100
|
+
"""Returns the number of qubits available on the device."""
|
|
101
|
+
def sites(self) -> Iterable[Site]:
|
|
102
|
+
"""Returns the list of sites available on the device."""
|
|
103
|
+
def operations(self) -> Iterable[Operation]:
|
|
104
|
+
"""Returns the list of operations supported by the device."""
|
|
105
|
+
def coupling_map(self) -> Iterable[tuple[Site, Site]] | None:
|
|
106
|
+
"""Returns the coupling map of the device as a list of site pairs."""
|
|
107
|
+
def needs_calibration(self) -> int | None:
|
|
108
|
+
"""Returns whether the device needs calibration."""
|
|
109
|
+
def length_unit(self) -> str | None:
|
|
110
|
+
"""Returns the unit of length used by the device."""
|
|
111
|
+
def length_scale_factor(self) -> float | None:
|
|
112
|
+
"""Returns the scale factor for length used by the device."""
|
|
113
|
+
def duration_unit(self) -> str | None:
|
|
114
|
+
"""Returns the unit of duration used by the device."""
|
|
115
|
+
def duration_scale_factor(self) -> float | None:
|
|
116
|
+
"""Returns the scale factor for duration used by the device."""
|
|
117
|
+
def min_atom_distance(self) -> int | None:
|
|
118
|
+
"""Returns the minimum atom distance on the device."""
|
|
119
|
+
def __eq__(self, other: object) -> bool:
|
|
120
|
+
"""Checks if two devices are equal."""
|
|
121
|
+
def __ne__(self, other: object) -> bool:
|
|
122
|
+
"""Checks if two devices are not equal."""
|
|
123
|
+
|
|
124
|
+
def devices() -> Iterable[Device]:
|
|
125
|
+
"""Returns a list of available devices."""
|
|
@@ -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
|