mqt-core 3.3.2__cp312-cp312-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.cp312-win_amd64.pyd +0 -0
- mqt/core/dd.pyi +1016 -0
- mqt/core/dd_evaluation.py +368 -0
- mqt/core/fomac.cp312-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.cp312-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.cp312-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,1139 @@
|
|
|
1
|
+
/*------------------------------------------------------------------------------
|
|
2
|
+
Copyright 2024 Munich Quantum Software Stack Project
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 with LLVM Exceptions (the
|
|
5
|
+
"License"); you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
https://github.com/Munich-Quantum-Software-Stack/QDMI/blob/develop/LICENSE
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
12
|
+
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
13
|
+
License for the specific language governing permissions and limitations under
|
|
14
|
+
the License.
|
|
15
|
+
|
|
16
|
+
SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
17
|
+
------------------------------------------------------------------------------*/
|
|
18
|
+
|
|
19
|
+
/** @file
|
|
20
|
+
* @brief Defines all enums used within QDMI across the @ref client_interface
|
|
21
|
+
* and the @ref device_interface.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
#pragma once
|
|
25
|
+
|
|
26
|
+
#ifdef __cplusplus
|
|
27
|
+
extern "C" {
|
|
28
|
+
#endif
|
|
29
|
+
|
|
30
|
+
// The following clang-tidy warnings cannot be addressed because this header is
|
|
31
|
+
// used from both C and C++ code.
|
|
32
|
+
// NOLINTBEGIN(performance-enum-size, modernize-use-using)
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @brief Status codes returned by the API.
|
|
36
|
+
*/
|
|
37
|
+
enum QDMI_STATUS {
|
|
38
|
+
QDMI_WARN_GENERAL = 1, ///< A general warning.
|
|
39
|
+
QDMI_SUCCESS = 0, ///< The operation was successful.
|
|
40
|
+
QDMI_ERROR_FATAL = -1, ///< A fatal error.
|
|
41
|
+
QDMI_ERROR_OUTOFMEM = -2, ///< Out of memory.
|
|
42
|
+
QDMI_ERROR_NOTIMPLEMENTED = -3, ///< Not implemented.
|
|
43
|
+
QDMI_ERROR_LIBNOTFOUND = -4, ///< Library not found.
|
|
44
|
+
QDMI_ERROR_NOTFOUND = -5, ///< Element not found.
|
|
45
|
+
QDMI_ERROR_OUTOFRANGE = -6, ///< Out of range.
|
|
46
|
+
QDMI_ERROR_INVALIDARGUMENT = -7, ///< Invalid argument.
|
|
47
|
+
QDMI_ERROR_PERMISSIONDENIED = -8, ///< Permission denied.
|
|
48
|
+
QDMI_ERROR_NOTSUPPORTED = -9, ///< Operation is not supported.
|
|
49
|
+
/// Resource is in the wrong state for the operation.
|
|
50
|
+
QDMI_ERROR_BADSTATE = -10,
|
|
51
|
+
QDMI_ERROR_TIMEOUT = -11, ///< Operation timed out.
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @brief Enum of the device session parameters that can be set via @ref
|
|
56
|
+
* QDMI_device_session_set_parameter.
|
|
57
|
+
* @details If not noted otherwise, parameters are optional and devices must not
|
|
58
|
+
* require them to be set.
|
|
59
|
+
*/
|
|
60
|
+
enum QDMI_DEVICE_SESSION_PARAMETER_T {
|
|
61
|
+
/**
|
|
62
|
+
* @brief `char*` (string) The baseURL or API endpoint to be used for
|
|
63
|
+
* accessing the device within the session.
|
|
64
|
+
* @details If this parameter is set and the device supports it, the device
|
|
65
|
+
* must use the specified baseURL or API endpoint for the session. Devices may
|
|
66
|
+
* use this parameter to switch between different versions of the API or
|
|
67
|
+
* different endpoints for testing or production environments.
|
|
68
|
+
*/
|
|
69
|
+
QDMI_DEVICE_SESSION_PARAMETER_BASEURL = 0,
|
|
70
|
+
/**
|
|
71
|
+
* @brief `char*` (string) A token to be used in the session initialization
|
|
72
|
+
* for authenticating with the device.
|
|
73
|
+
* @details A token could be an API key. The device documentation *must*
|
|
74
|
+
* document what kind of token is required and how it is used. If the device
|
|
75
|
+
* requires authentication via a token, this parameter must be set before
|
|
76
|
+
* calling @ref QDMI_device_session_init.
|
|
77
|
+
*/
|
|
78
|
+
QDMI_DEVICE_SESSION_PARAMETER_TOKEN = 1,
|
|
79
|
+
/**
|
|
80
|
+
* @brief `char*` (string) A file path to a file containing authentication
|
|
81
|
+
* information.
|
|
82
|
+
* @details The file may contain a token or other authentication information
|
|
83
|
+
* required for the session. The device documentation *must* document
|
|
84
|
+
* whether the implementation requires this parameter to be set and what
|
|
85
|
+
* kind of authentication information is expected in the file.
|
|
86
|
+
*/
|
|
87
|
+
QDMI_DEVICE_SESSION_PARAMETER_AUTHFILE = 2,
|
|
88
|
+
/**
|
|
89
|
+
* @brief `char*` (string) The URL to an authentication server used as part of
|
|
90
|
+
* the authentication procedure.
|
|
91
|
+
* @details This parameter might be used as part of an authentication scheme
|
|
92
|
+
* where an API token is received from an authentication server. This may,
|
|
93
|
+
* additionally, require a username and a password, which can be set via the
|
|
94
|
+
* @ref QDMI_DEVICE_SESSION_PARAMETER_USERNAME and @ref
|
|
95
|
+
* QDMI_DEVICE_SESSION_PARAMETER_PASSWORD parameters.
|
|
96
|
+
*
|
|
97
|
+
* @par The device documentation *must* document if the implementation
|
|
98
|
+
* requires this parameter to be set and which additional parameters need to
|
|
99
|
+
* be set in case this authentication method is used.
|
|
100
|
+
*/
|
|
101
|
+
QDMI_DEVICE_SESSION_PARAMETER_AUTHURL = 3,
|
|
102
|
+
/**
|
|
103
|
+
* @brief `char*` (string) The username to use for the device session.
|
|
104
|
+
* @details The username is used for authentication within the session. The
|
|
105
|
+
* device documentation *must* document when the implementation requires this
|
|
106
|
+
* parameter to be set.
|
|
107
|
+
*/
|
|
108
|
+
QDMI_DEVICE_SESSION_PARAMETER_USERNAME = 4,
|
|
109
|
+
/**
|
|
110
|
+
* @brief `char*` (string) The password to use for the session.
|
|
111
|
+
* @details The password is used for authentication within the session. The
|
|
112
|
+
* device documentation *must* document if the implementation requires this
|
|
113
|
+
* parameter to be set.
|
|
114
|
+
*/
|
|
115
|
+
QDMI_DEVICE_SESSION_PARAMETER_PASSWORD = 5,
|
|
116
|
+
/**
|
|
117
|
+
* @brief The maximum value of the enum.
|
|
118
|
+
* @details It can be used by devices for bounds checking and validation of
|
|
119
|
+
* function parameters.
|
|
120
|
+
*
|
|
121
|
+
* @attention This value must remain the last regular member of the enum
|
|
122
|
+
* besides the custom members and must be updated when new members are added.
|
|
123
|
+
*/
|
|
124
|
+
QDMI_DEVICE_SESSION_PARAMETER_MAX = 6,
|
|
125
|
+
/**
|
|
126
|
+
* @brief This enum value is reserved for a custom parameter.
|
|
127
|
+
* @details The device defines the meaning and the type of this parameter.
|
|
128
|
+
* @attention The value of this enum member must not be changed to maintain
|
|
129
|
+
* binary compatibility.
|
|
130
|
+
*/
|
|
131
|
+
QDMI_DEVICE_SESSION_PARAMETER_CUSTOM1 = 999999995,
|
|
132
|
+
/// @see QDMI_DEVICE_SESSION_PARAMETER_CUSTOM1
|
|
133
|
+
QDMI_DEVICE_SESSION_PARAMETER_CUSTOM2 = 999999996,
|
|
134
|
+
/// @see QDMI_DEVICE_SESSION_PARAMETER_CUSTOM1
|
|
135
|
+
QDMI_DEVICE_SESSION_PARAMETER_CUSTOM3 = 999999997,
|
|
136
|
+
/// @see QDMI_DEVICE_SESSION_PARAMETER_CUSTOM1
|
|
137
|
+
QDMI_DEVICE_SESSION_PARAMETER_CUSTOM4 = 999999998,
|
|
138
|
+
/// @see QDMI_DEVICE_SESSION_PARAMETER_CUSTOM1
|
|
139
|
+
QDMI_DEVICE_SESSION_PARAMETER_CUSTOM5 = 999999999
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
/// Device session parameter type.
|
|
143
|
+
typedef enum QDMI_DEVICE_SESSION_PARAMETER_T QDMI_Device_Session_Parameter;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* @brief Enum of the device job parameters that can be set via @ref
|
|
147
|
+
* QDMI_device_job_set_parameter.
|
|
148
|
+
* @details If not noted otherwise, parameters are optional and devices must not
|
|
149
|
+
* require them to be set.
|
|
150
|
+
*/
|
|
151
|
+
enum QDMI_DEVICE_JOB_PARAMETER_T {
|
|
152
|
+
/**
|
|
153
|
+
* @brief @ref QDMI_Program_Format The format of the program to be executed.
|
|
154
|
+
* @details This parameter is required. The device must support the specified
|
|
155
|
+
* program format. If the device does not support the specified program
|
|
156
|
+
* format, the @ref QDMI_device_job_set_parameter function must return @ref
|
|
157
|
+
* QDMI_ERROR_NOTSUPPORTED.
|
|
158
|
+
*/
|
|
159
|
+
QDMI_DEVICE_JOB_PARAMETER_PROGRAMFORMAT = 0,
|
|
160
|
+
/**
|
|
161
|
+
* @brief `void*` The program to be executed.
|
|
162
|
+
* @details This parameter is required. The program must be in the format
|
|
163
|
+
* specified by the @ref QDMI_DEVICE_JOB_PARAMETER_PROGRAMFORMAT parameter.
|
|
164
|
+
* If the program is invalid, the @ref QDMI_device_job_set_parameter function
|
|
165
|
+
* must return @ref QDMI_ERROR_INVALIDARGUMENT. If the program is valid, but
|
|
166
|
+
* the device cannot execute it, the @ref QDMI_device_job_set_parameter
|
|
167
|
+
* function must return @ref QDMI_ERROR_NOTSUPPORTED.
|
|
168
|
+
*/
|
|
169
|
+
QDMI_DEVICE_JOB_PARAMETER_PROGRAM = 1,
|
|
170
|
+
/**
|
|
171
|
+
* @brief `size_t` The number of shots to execute for a quantum circuit job.
|
|
172
|
+
* @details If this parameter is not set, a device-specific default is used.
|
|
173
|
+
*/
|
|
174
|
+
QDMI_DEVICE_JOB_PARAMETER_SHOTSNUM = 2,
|
|
175
|
+
/**
|
|
176
|
+
* @brief The maximum value of the enum.
|
|
177
|
+
* @details It can be used by devices for bounds checking and validation of
|
|
178
|
+
* function parameters.
|
|
179
|
+
*
|
|
180
|
+
* @attention This value must remain the last regular member of the enum
|
|
181
|
+
* besides the custom members and must be updated when new members are added.
|
|
182
|
+
*/
|
|
183
|
+
QDMI_DEVICE_JOB_PARAMETER_MAX = 3,
|
|
184
|
+
/**
|
|
185
|
+
* @brief This enum value is reserved for a custom parameter.
|
|
186
|
+
* @details The device defines the meaning and the type of this parameter.
|
|
187
|
+
* @attention The value of this enum member must not be changed to maintain
|
|
188
|
+
* binary compatibility.
|
|
189
|
+
*/
|
|
190
|
+
QDMI_DEVICE_JOB_PARAMETER_CUSTOM1 = 999999995,
|
|
191
|
+
/// @see QDMI_DEVICE_JOB_PARAMETER_CUSTOM1
|
|
192
|
+
QDMI_DEVICE_JOB_PARAMETER_CUSTOM2 = 999999996,
|
|
193
|
+
/// @see QDMI_DEVICE_JOB_PARAMETER_CUSTOM1
|
|
194
|
+
QDMI_DEVICE_JOB_PARAMETER_CUSTOM3 = 999999997,
|
|
195
|
+
/// @see QDMI_DEVICE_JOB_PARAMETER_CUSTOM1
|
|
196
|
+
QDMI_DEVICE_JOB_PARAMETER_CUSTOM4 = 999999998,
|
|
197
|
+
/// @see QDMI_DEVICE_JOB_PARAMETER_CUSTOM1
|
|
198
|
+
QDMI_DEVICE_JOB_PARAMETER_CUSTOM5 = 999999999
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
/// Device job parameter type.
|
|
202
|
+
typedef enum QDMI_DEVICE_JOB_PARAMETER_T QDMI_Device_Job_Parameter;
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* @brief Enum of the device job properties that can be queried via @ref
|
|
206
|
+
* QDMI_device_job_query_property as part of the @ref
|
|
207
|
+
* device_interface "device interface".
|
|
208
|
+
* @details In particular, every parameter's value that can be set via @ref
|
|
209
|
+
* QDMI_device_job_set_parameter can be queried.
|
|
210
|
+
*/
|
|
211
|
+
enum QDMI_DEVICE_JOB_PROPERTY_T {
|
|
212
|
+
/**
|
|
213
|
+
* @brief `char*` (string) The job's ID.
|
|
214
|
+
* @details The ID must uniquely identify a job for the specific device.
|
|
215
|
+
* It should generally be universally unique (such as a UUID), to avoid
|
|
216
|
+
* conflicts with other devices' job IDs.
|
|
217
|
+
* It may be used to recover a @ref QDMI_Device_Job handle upon device
|
|
218
|
+
* failure.
|
|
219
|
+
* It may, for example, correspond to the job ID provided by the
|
|
220
|
+
* device's API or may be generated by the QDMI Device implementation.
|
|
221
|
+
*/
|
|
222
|
+
QDMI_DEVICE_JOB_PROPERTY_ID = 0,
|
|
223
|
+
/**
|
|
224
|
+
* @brief @ref QDMI_Program_Format The format of the program to be executed.
|
|
225
|
+
* @note This property returns the value of the @ref
|
|
226
|
+
* QDMI_DEVICE_JOB_PARAMETER_PROGRAMFORMAT parameter.
|
|
227
|
+
*/
|
|
228
|
+
QDMI_DEVICE_JOB_PROPERTY_PROGRAMFORMAT = 1,
|
|
229
|
+
/**
|
|
230
|
+
* @brief `void*` The program to be executed.
|
|
231
|
+
* @note This property returns the value of the @ref
|
|
232
|
+
* QDMI_DEVICE_JOB_PARAMETER_PROGRAM parameter.
|
|
233
|
+
*/
|
|
234
|
+
QDMI_DEVICE_JOB_PROPERTY_PROGRAM = 2,
|
|
235
|
+
/**
|
|
236
|
+
* @brief `size_t` The number of shots to execute for a quantum circuit job.
|
|
237
|
+
* @note This property returns the value of the @ref
|
|
238
|
+
* QDMI_DEVICE_JOB_PARAMETER_SHOTSNUM parameter.
|
|
239
|
+
*/
|
|
240
|
+
QDMI_DEVICE_JOB_PROPERTY_SHOTSNUM = 3,
|
|
241
|
+
/**
|
|
242
|
+
* @brief The maximum value of the enum.
|
|
243
|
+
* @details It can be used by devices for bounds checking and validation of
|
|
244
|
+
* function parameters.
|
|
245
|
+
*
|
|
246
|
+
* @attention This value must remain the last regular member of the enum
|
|
247
|
+
* besides the custom members and must be updated when new members are added.
|
|
248
|
+
*/
|
|
249
|
+
QDMI_DEVICE_JOB_PROPERTY_MAX = 4,
|
|
250
|
+
/**
|
|
251
|
+
* @brief This enum value is reserved for a custom parameter.
|
|
252
|
+
* @details The device defines the meaning and the type of this parameter.
|
|
253
|
+
* @attention The value of this enum member must not be changed to maintain
|
|
254
|
+
* binary compatibility.
|
|
255
|
+
*/
|
|
256
|
+
QDMI_DEVICE_JOB_PROPERTY_CUSTOM1 = 999999995,
|
|
257
|
+
/// @see QDMI_DEVICE_JOB_PROPERTY_CUSTOM1
|
|
258
|
+
QDMI_DEVICE_JOB_PROPERTY_CUSTOM2 = 999999996,
|
|
259
|
+
/// @see QDMI_DEVICE_JOB_PROPERTY_CUSTOM1
|
|
260
|
+
QDMI_DEVICE_JOB_PROPERTY_CUSTOM3 = 999999997,
|
|
261
|
+
/// @see QDMI_DEVICE_JOB_PROPERTY_CUSTOM1
|
|
262
|
+
QDMI_DEVICE_JOB_PROPERTY_CUSTOM4 = 999999998,
|
|
263
|
+
/// @see QDMI_DEVICE_JOB_PROPERTY_CUSTOM1
|
|
264
|
+
QDMI_DEVICE_JOB_PROPERTY_CUSTOM5 = 999999999
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
/// Device job property type.
|
|
268
|
+
typedef enum QDMI_DEVICE_JOB_PROPERTY_T QDMI_Device_Job_Property;
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Enum of the device properties that can be queried via @ref
|
|
272
|
+
* QDMI_device_session_query_device_property as part of the @ref
|
|
273
|
+
* device_interface "device interface" and via @ref
|
|
274
|
+
* QDMI_device_query_device_property as part of the @ref client_interface
|
|
275
|
+
* "client interface".
|
|
276
|
+
*/
|
|
277
|
+
enum QDMI_DEVICE_PROPERTY_T {
|
|
278
|
+
/// `char*` (string) The name of the device.
|
|
279
|
+
QDMI_DEVICE_PROPERTY_NAME = 0,
|
|
280
|
+
/// `char*` (string) The version of the device.
|
|
281
|
+
QDMI_DEVICE_PROPERTY_VERSION = 1,
|
|
282
|
+
/// @ref QDMI_Device_Status The status of the device.
|
|
283
|
+
QDMI_DEVICE_PROPERTY_STATUS = 2,
|
|
284
|
+
/// `char*` (string) The implemented version of QDMI.
|
|
285
|
+
QDMI_DEVICE_PROPERTY_LIBRARYVERSION = 3,
|
|
286
|
+
/// `size_t` The number of qubits in the device.
|
|
287
|
+
QDMI_DEVICE_PROPERTY_QUBITSNUM = 4,
|
|
288
|
+
/**
|
|
289
|
+
* @brief `QDMI_Site*` (@ref QDMI_Site list) The sites of the device.
|
|
290
|
+
* @details The returned @ref QDMI_Site handles may be used to query site
|
|
291
|
+
* and operation properties. The list need not be sorted based on the @ref
|
|
292
|
+
* QDMI_SITE_PROPERTY_INDEX.
|
|
293
|
+
* @par
|
|
294
|
+
* The list returned by this property contains all sites of the device, i.e.,
|
|
295
|
+
* regular and zone sites (see @ref QDMI_SITE_PROPERTY_ISZONE). To filter out
|
|
296
|
+
* regular or zone sites, use the function @ref
|
|
297
|
+
* QDMI_device_query_site_property.
|
|
298
|
+
*/
|
|
299
|
+
QDMI_DEVICE_PROPERTY_SITES = 5,
|
|
300
|
+
/**
|
|
301
|
+
* @brief `QDMI_Operation*` (@ref QDMI_Operation list) The operations
|
|
302
|
+
* supported by the device.
|
|
303
|
+
* @details The returned @ref QDMI_Operation handles may be used to query
|
|
304
|
+
* operation properties.
|
|
305
|
+
*/
|
|
306
|
+
QDMI_DEVICE_PROPERTY_OPERATIONS = 6,
|
|
307
|
+
/**
|
|
308
|
+
* @brief `QDMI_Site*` (@ref QDMI_Site list) The coupling map of the device.
|
|
309
|
+
* @details The returned list contains pairs of sites that are coupled. The
|
|
310
|
+
* pairs in the list are flattened such that the first site of the pair is at
|
|
311
|
+
* index `2n` and the second site is at index `2n+1`.
|
|
312
|
+
*
|
|
313
|
+
* The sites returned in that list are represented as @ref QDMI_Site handles.
|
|
314
|
+
* For example, consider a 3-site device with a coupling map `(0, 1), (1, 2)`.
|
|
315
|
+
* Additionally, assume `site_i` is the handle for the i-th site. Then,
|
|
316
|
+
* `{site_0, site_1, site_1, site_2}` would be returned.
|
|
317
|
+
*/
|
|
318
|
+
QDMI_DEVICE_PROPERTY_COUPLINGMAP = 7,
|
|
319
|
+
/**
|
|
320
|
+
* @brief `size_t` Whether the device needs calibration.
|
|
321
|
+
* @details This flag indicates whether the device needs calibration.
|
|
322
|
+
* A value of zero indicates that the device does not need calibration, while
|
|
323
|
+
* any non-zero value indicates that the device needs calibration. It is up
|
|
324
|
+
* to the device to assign a specific meaning to the non-zero value.
|
|
325
|
+
*
|
|
326
|
+
* If a device reports that it needs calibration, a calibration run can be
|
|
327
|
+
* triggered by submitting a job with the @ref QDMI_Program_Format set to @ref
|
|
328
|
+
* QDMI_PROGRAM_FORMAT_CALIBRATION.
|
|
329
|
+
*/
|
|
330
|
+
QDMI_DEVICE_PROPERTY_NEEDSCALIBRATION = 8,
|
|
331
|
+
/**
|
|
332
|
+
* @brief @ref QDMI_Device_Pulse_Support_Level Whether the device supports
|
|
333
|
+
* pulse-level control.
|
|
334
|
+
* @details This property indicates the level of pulse-level control.
|
|
335
|
+
* If a device supports pulse-level control, it may provide additional
|
|
336
|
+
* functionality for pulse-level programming and execution.
|
|
337
|
+
*/
|
|
338
|
+
QDMI_DEVICE_PROPERTY_PULSESUPPORT = 9,
|
|
339
|
+
/**
|
|
340
|
+
* @brief `char*` (string) The length unit reported by the device.
|
|
341
|
+
* @details The device implementation must report a known SI unit (e.g., "mm",
|
|
342
|
+
* "um", or "nm") for this property. A client querying a length value must
|
|
343
|
+
* first scale it using @ref QDMI_DEVICE_PROPERTY_LENGTHSCALEFACTOR. The
|
|
344
|
+
* resulting value is then interpreted in the unit specified by this property.
|
|
345
|
+
* @note If the device reports any length values, this property must be set.
|
|
346
|
+
*/
|
|
347
|
+
QDMI_DEVICE_PROPERTY_LENGTHUNIT = 10,
|
|
348
|
+
/**
|
|
349
|
+
* @brief `double` A scale factor for all length values.
|
|
350
|
+
* @details The device implementation reports this scale factor. A client must
|
|
351
|
+
* multiply any raw length value received from the device by this factor to
|
|
352
|
+
* obtain the physical length. The unit of the physical length is given by
|
|
353
|
+
* @ref QDMI_DEVICE_PROPERTY_LENGTHUNIT.
|
|
354
|
+
* @note If querying this property returns @ref QDMI_ERROR_NOTSUPPORTED, a
|
|
355
|
+
* client should assume a default value of `1.0`.
|
|
356
|
+
*/
|
|
357
|
+
QDMI_DEVICE_PROPERTY_LENGTHSCALEFACTOR = 11,
|
|
358
|
+
/**
|
|
359
|
+
* @brief `char*` (string) The duration unit reported by the device.
|
|
360
|
+
* @details The device implementation must report a known SI unit (e.g., "ms",
|
|
361
|
+
* "us", or "ns") for this property. A client querying a duration value must
|
|
362
|
+
* first scale it using @ref QDMI_DEVICE_PROPERTY_DURATIONSCALEFACTOR. The
|
|
363
|
+
* resulting value is then interpreted in the unit specified by this property.
|
|
364
|
+
* @note If the device reports any duration values, this property must be set.
|
|
365
|
+
*/
|
|
366
|
+
QDMI_DEVICE_PROPERTY_DURATIONUNIT = 12,
|
|
367
|
+
/**
|
|
368
|
+
* @brief `double` A scale factor for all duration values.
|
|
369
|
+
* @details The device implementation reports this scale factor. A client must
|
|
370
|
+
* multiply any raw duration value received from the device by this factor to
|
|
371
|
+
* obtain the physical duration. The unit of the physical duration is given by
|
|
372
|
+
* @ref QDMI_DEVICE_PROPERTY_DURATIONUNIT.
|
|
373
|
+
* @note If querying this property returns @ref QDMI_ERROR_NOTSUPPORTED, a
|
|
374
|
+
* client should assume a default value of `1.0`.
|
|
375
|
+
*/
|
|
376
|
+
QDMI_DEVICE_PROPERTY_DURATIONSCALEFACTOR = 13,
|
|
377
|
+
/**
|
|
378
|
+
* @brief `uint64_t` The raw, unscaled minimum required distance between
|
|
379
|
+
* qubits during quantum computation.
|
|
380
|
+
* @details For neutral atom-based devices, qubits (atoms) can be repositioned
|
|
381
|
+
* dynamically. However, a minimum separation must be maintained to prevent
|
|
382
|
+
* collisions and loss of atoms. This property specifies the minimum atom
|
|
383
|
+
* distance.
|
|
384
|
+
* @par
|
|
385
|
+
* To obtain the physical minimum atom distance, a client must scale the raw
|
|
386
|
+
* value of this property. The physical minimum atom distance is calculated
|
|
387
|
+
* as: `raw_value * scale_factor`, where `scale_factor` is the value of the
|
|
388
|
+
* @ref QDMI_DEVICE_PROPERTY_LENGTHSCALEFACTOR property. The resulting value
|
|
389
|
+
* is in units of @ref QDMI_DEVICE_PROPERTY_LENGTHUNIT.
|
|
390
|
+
* @note Primarily relevant for neutral atom devices supporting dynamic atom
|
|
391
|
+
* arrangement.
|
|
392
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTHUNIT
|
|
393
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTSCALEFACTOR
|
|
394
|
+
*/
|
|
395
|
+
QDMI_DEVICE_PROPERTY_MINATOMDISTANCE = 14,
|
|
396
|
+
/**
|
|
397
|
+
* @brief The maximum value of the enum.
|
|
398
|
+
* @details It can be used by devices for bounds checking and validation of
|
|
399
|
+
* function parameters.
|
|
400
|
+
*
|
|
401
|
+
* @attention This value must remain the last regular member of the enum
|
|
402
|
+
* besides the custom members and must be updated when new members are added.
|
|
403
|
+
*/
|
|
404
|
+
QDMI_DEVICE_PROPERTY_MAX = 15,
|
|
405
|
+
/**
|
|
406
|
+
* @brief This enum value is reserved for a custom property.
|
|
407
|
+
* @details The device defines the meaning and the type of this property.
|
|
408
|
+
* @attention The value of this enum member must not be changed to maintain
|
|
409
|
+
* binary compatibility.
|
|
410
|
+
*/
|
|
411
|
+
QDMI_DEVICE_PROPERTY_CUSTOM1 = 999999995,
|
|
412
|
+
/// @see QDMI_DEVICE_PROPERTY_CUSTOM1
|
|
413
|
+
QDMI_DEVICE_PROPERTY_CUSTOM2 = 999999996,
|
|
414
|
+
/// @see QDMI_DEVICE_PROPERTY_CUSTOM1
|
|
415
|
+
QDMI_DEVICE_PROPERTY_CUSTOM3 = 999999997,
|
|
416
|
+
/// @see QDMI_DEVICE_PROPERTY_CUSTOM1
|
|
417
|
+
QDMI_DEVICE_PROPERTY_CUSTOM4 = 999999998,
|
|
418
|
+
/// @see QDMI_DEVICE_PROPERTY_CUSTOM1
|
|
419
|
+
QDMI_DEVICE_PROPERTY_CUSTOM5 = 999999999
|
|
420
|
+
};
|
|
421
|
+
|
|
422
|
+
/// Device property type.
|
|
423
|
+
typedef enum QDMI_DEVICE_PROPERTY_T QDMI_Device_Property;
|
|
424
|
+
|
|
425
|
+
/// Enum of different status the device can be in.
|
|
426
|
+
enum QDMI_DEVICE_STATUS_T {
|
|
427
|
+
QDMI_DEVICE_STATUS_OFFLINE = 0, ///< The device is offline.
|
|
428
|
+
QDMI_DEVICE_STATUS_IDLE = 1, ///< The device is idle.
|
|
429
|
+
QDMI_DEVICE_STATUS_BUSY = 2, ///< The device is busy.
|
|
430
|
+
QDMI_DEVICE_STATUS_ERROR = 3, ///< The device is in an error state.
|
|
431
|
+
QDMI_DEVICE_STATUS_MAINTENANCE = 4, ///< The device is in maintenance.
|
|
432
|
+
QDMI_DEVICE_STATUS_CALIBRATION = 5, ///< The device is in calibration.
|
|
433
|
+
/**
|
|
434
|
+
* @brief The maximum value of the enum.
|
|
435
|
+
* @details It can be used by devices for bounds checking and validation of
|
|
436
|
+
* function parameters.
|
|
437
|
+
*
|
|
438
|
+
* @attention This value must remain the last regular member of the enum
|
|
439
|
+
* besides the custom members and must be updated when new members are added.
|
|
440
|
+
*/
|
|
441
|
+
QDMI_DEVICE_STATUS_MAX = 6
|
|
442
|
+
};
|
|
443
|
+
|
|
444
|
+
/// Device status type.
|
|
445
|
+
typedef enum QDMI_DEVICE_STATUS_T QDMI_Device_Status;
|
|
446
|
+
|
|
447
|
+
/// Enum of the site properties that can be queried via @ref
|
|
448
|
+
/// QDMI_device_session_query_site_property as part of the @ref device_interface
|
|
449
|
+
/// "device interface" and via @ref QDMI_device_query_site_property as part of
|
|
450
|
+
/// the @ref client_interface "client interface".
|
|
451
|
+
enum QDMI_SITE_PROPERTY_T {
|
|
452
|
+
/**
|
|
453
|
+
* @brief `size_t` The unique index (or ID) to identify the site in a program.
|
|
454
|
+
* @details The index of a site is used to link the qubits used in a quantum
|
|
455
|
+
* program to the physical sites of the device that can be queried via this
|
|
456
|
+
* interface. Indices may be non-consecutive and need not start at 0.
|
|
457
|
+
* See @ref QDMI_Program_Format for more information on how the site indices
|
|
458
|
+
* map to the qubits in a program.
|
|
459
|
+
*
|
|
460
|
+
* @par This property must be available for all sites since it is used to
|
|
461
|
+
* address the sites in a program.
|
|
462
|
+
*/
|
|
463
|
+
QDMI_SITE_PROPERTY_INDEX = 0,
|
|
464
|
+
/**
|
|
465
|
+
* @brief `uint64_t` The raw, unscaled T1 time of a site.
|
|
466
|
+
* @details To obtain the physical T1 time, a client must scale the raw value
|
|
467
|
+
* of this property. The physical T1 time is calculated as: `raw_value *
|
|
468
|
+
* scale_factor`, where `scale_factor` is the value of the
|
|
469
|
+
* @ref QDMI_DEVICE_PROPERTY_DURATIONSCALEFACTOR property. The resulting value
|
|
470
|
+
* is in units of @ref QDMI_DEVICE_PROPERTY_DURATIONUNIT.
|
|
471
|
+
* @see QDMI_DEVICE_PROPERTY_DURATIONUNIT
|
|
472
|
+
* @see QDMI_DEVICE_PROPERTY_DURATIONSCALEFACTOR
|
|
473
|
+
*/
|
|
474
|
+
QDMI_SITE_PROPERTY_T1 = 1,
|
|
475
|
+
/**
|
|
476
|
+
* @brief `uint64_t` The raw, unscaled T2 time of a site.
|
|
477
|
+
* @details To obtain the physical T2 time, a client must scale the raw value
|
|
478
|
+
* of this property. The physical T2 time is calculated as: `raw_value *
|
|
479
|
+
* scale_factor`, where `scale_factor` is the value of the
|
|
480
|
+
* @ref QDMI_DEVICE_PROPERTY_DURATIONSCALEFACTOR property. The resulting value
|
|
481
|
+
* is in units of @ref QDMI_DEVICE_PROPERTY_DURATIONUNIT.
|
|
482
|
+
* @see QDMI_DEVICE_PROPERTY_DURATIONUNIT
|
|
483
|
+
* @see QDMI_DEVICE_PROPERTY_DURATIONSCALEFACTOR
|
|
484
|
+
*/
|
|
485
|
+
QDMI_SITE_PROPERTY_T2 = 2,
|
|
486
|
+
/**
|
|
487
|
+
* `char*` (string) The name of a site, e.g., another identifier of the site
|
|
488
|
+
* given by the device.
|
|
489
|
+
*/
|
|
490
|
+
QDMI_SITE_PROPERTY_NAME = 3,
|
|
491
|
+
/**
|
|
492
|
+
* @brief `int64_t` The raw, unscaled X-coordinate of the site.
|
|
493
|
+
* @details The X-coordinate is measured relative to some unique origin of the
|
|
494
|
+
* device, i.e., the triple of X-, Y-, and Z-coordinate must be unique to the
|
|
495
|
+
* site.
|
|
496
|
+
* @par
|
|
497
|
+
* To obtain the physical X-coordinate of the site, a client must scale the
|
|
498
|
+
* raw value of this property. The physical X-coordinate of the site is
|
|
499
|
+
* calculated as: `raw_value * scale_factor`, where `scale_factor` is the
|
|
500
|
+
* value of the @ref QDMI_DEVICE_PROPERTY_LENGTHSCALEFACTOR property. The
|
|
501
|
+
* resulting value is in units of @ref QDMI_DEVICE_PROPERTY_LENGTHUNIT.
|
|
502
|
+
* @note This property is mainly required for neutral atom devices to report
|
|
503
|
+
* the location of sites.
|
|
504
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTHUNIT
|
|
505
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTSCALEFACTOR
|
|
506
|
+
* @see QDMI_SITE_PROPERTY_XCOORDINATE
|
|
507
|
+
* @see QDMI_SITE_PROPERTY_YCOORDINATE
|
|
508
|
+
* @see QDMI_SITE_PROPERTY_ZCOORDINATE
|
|
509
|
+
*/
|
|
510
|
+
QDMI_SITE_PROPERTY_XCOORDINATE = 4,
|
|
511
|
+
/**
|
|
512
|
+
* @brief `int64_t` The raw, unscaled Y-coordinate of the site.
|
|
513
|
+
* @details The Y-coordinate is measured relative to some unique origin of the
|
|
514
|
+
* device, i.e., the triple of X-, Y-, and Z-coordinate must be unique to the
|
|
515
|
+
* site.
|
|
516
|
+
* @par
|
|
517
|
+
* To obtain the physical Y-coordinate of the site, a client must scale the
|
|
518
|
+
* raw value of this property. The physical Y-coordinate of the site is
|
|
519
|
+
* calculated as: `raw_value * scale_factor`, where `scale_factor` is the
|
|
520
|
+
* value of the @ref QDMI_DEVICE_PROPERTY_LENGTHSCALEFACTOR property. The
|
|
521
|
+
* resulting value is in units of @ref QDMI_DEVICE_PROPERTY_LENGTHUNIT.
|
|
522
|
+
* @note This property is mainly required for neutral atom devices to report
|
|
523
|
+
* the location of sites.
|
|
524
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTHUNIT
|
|
525
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTSCALEFACTOR
|
|
526
|
+
* @see QDMI_SITE_PROPERTY_XCOORDINATE
|
|
527
|
+
* @see QDMI_SITE_PROPERTY_YCOORDINATE
|
|
528
|
+
* @see QDMI_SITE_PROPERTY_ZCOORDINATE
|
|
529
|
+
*/
|
|
530
|
+
QDMI_SITE_PROPERTY_YCOORDINATE = 5,
|
|
531
|
+
/**
|
|
532
|
+
* @brief `int64_t` The raw, unscaled Z-coordinate of the site.
|
|
533
|
+
* @details The Z-coordinate is measured relative to some unique origin of the
|
|
534
|
+
* device, i.e., the triple of X-, Y-, and Z-coordinate must be unique to the
|
|
535
|
+
* site.
|
|
536
|
+
* @par
|
|
537
|
+
* To obtain the physical Z-coordinate of the site, a client must scale the
|
|
538
|
+
* raw value of this property. The physical Z-coordinate of the site is
|
|
539
|
+
* calculated as: `raw_value * scale_factor`, where `scale_factor` is the
|
|
540
|
+
* value of the @ref QDMI_DEVICE_PROPERTY_LENGTHSCALEFACTOR property. The
|
|
541
|
+
* resulting value is in units of @ref QDMI_DEVICE_PROPERTY_LENGTHUNIT.
|
|
542
|
+
* @note This property is mainly required for neutral atom devices to report
|
|
543
|
+
* the location of sites.
|
|
544
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTHUNIT
|
|
545
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTSCALEFACTOR
|
|
546
|
+
* @see QDMI_SITE_PROPERTY_XCOORDINATE
|
|
547
|
+
* @see QDMI_SITE_PROPERTY_YCOORDINATE
|
|
548
|
+
* @see QDMI_SITE_PROPERTY_ZCOORDINATE
|
|
549
|
+
*/
|
|
550
|
+
QDMI_SITE_PROPERTY_ZCOORDINATE = 6,
|
|
551
|
+
/**
|
|
552
|
+
* @brief `bool` Whether the site is a zone.
|
|
553
|
+
* @details A zone is a site that has a spatial extent, i.e., it is not
|
|
554
|
+
* just a point in space as a regular site. These kind of sites, namely zones,
|
|
555
|
+
* are required to adequately represent global operations that act on all
|
|
556
|
+
* qubits within a certain area, i.e., a zone.
|
|
557
|
+
* @note Zones are typically used in neutral atom devices, where the atoms are
|
|
558
|
+
* arranged in a 2D or 3D lattice, and operations can be applied to all
|
|
559
|
+
* atoms within a certain zone.
|
|
560
|
+
* @note This property defaults to `false`, i.e., if a device reports @ref
|
|
561
|
+
* QDMI_ERROR_NOTSUPPORTED for this property, it is assumed that the site is
|
|
562
|
+
* a regular site and not a zone.
|
|
563
|
+
* @see QDMI_SITE_PROPERTY_XEXTENT
|
|
564
|
+
* @see QDMI_SITE_PROPERTY_YEXTENT
|
|
565
|
+
* @see QDMI_SITE_PROPERTY_ZEXTENT
|
|
566
|
+
*/
|
|
567
|
+
QDMI_SITE_PROPERTY_ISZONE = 7,
|
|
568
|
+
/**
|
|
569
|
+
* @brief `uint64_t` The raw, unscaled extent of a zone along the X-axis.
|
|
570
|
+
* @details To obtain the physical extent of a zone along the X-axis, a client
|
|
571
|
+
* must scale the raw value of this property. The physical extent of a zone
|
|
572
|
+
* along the X-axis is calculated as: `raw_value * scale_factor`, where
|
|
573
|
+
* `scale_factor` is the value of the @ref
|
|
574
|
+
* QDMI_DEVICE_PROPERTY_LENGTHSCALEFACTOR property. The resulting value is in
|
|
575
|
+
* units of @ref QDMI_DEVICE_PROPERTY_LENGTHUNIT.
|
|
576
|
+
* @note This property is mainly required for neutral atom devices to
|
|
577
|
+
* report the extent of zones, see @ref QDMI_SITE_PROPERTY_ISZONE.
|
|
578
|
+
* @note If the site is not a zone, this property must return @ref
|
|
579
|
+
* QDMI_ERROR_NOTSUPPORTED.
|
|
580
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTHUNIT
|
|
581
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTSCALEFACTOR
|
|
582
|
+
*/
|
|
583
|
+
QDMI_SITE_PROPERTY_XEXTENT = 8,
|
|
584
|
+
/**
|
|
585
|
+
* @brief `uint64_t` The raw, unscaled extent of a zone along the Y-axis.
|
|
586
|
+
* @details To obtain the physical extent of a zone along the Y-axis, a client
|
|
587
|
+
* must scale the raw value of this property. The physical extent of a zone
|
|
588
|
+
* along the Y-axis is calculated as: `raw_value * scale_factor`, where
|
|
589
|
+
* `scale_factor` is the value of the @ref
|
|
590
|
+
* QDMI_DEVICE_PROPERTY_LENGTHSCALEFACTOR property. The resulting value is in
|
|
591
|
+
* units of @ref QDMI_DEVICE_PROPERTY_LENGTHUNIT.
|
|
592
|
+
* @note This property is mainly required for neutral atom devices to
|
|
593
|
+
* report the extent of zones, see @ref QDMI_SITE_PROPERTY_ISZONE.
|
|
594
|
+
* @note If the site is not a zone, this property must return @ref
|
|
595
|
+
* QDMI_ERROR_NOTSUPPORTED.
|
|
596
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTHUNIT
|
|
597
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTSCALEFACTOR
|
|
598
|
+
*/
|
|
599
|
+
QDMI_SITE_PROPERTY_YEXTENT = 9,
|
|
600
|
+
/**
|
|
601
|
+
* @brief `uint64_t` The raw, unscaled extent of a zone along the Z-axis.
|
|
602
|
+
* @details To obtain the physical extent of a zone along the Z-axis, a client
|
|
603
|
+
* must scale the raw value of this property. The physical extent of a zone
|
|
604
|
+
* along the Z-axis is calculated as: `raw_value * scale_factor`, where
|
|
605
|
+
* `scale_factor` is the value of the @ref
|
|
606
|
+
* QDMI_DEVICE_PROPERTY_LENGTHSCALEFACTOR property. The resulting value is in
|
|
607
|
+
* units of @ref QDMI_DEVICE_PROPERTY_LENGTHUNIT.
|
|
608
|
+
* @note This property is mainly required for neutral atom devices to
|
|
609
|
+
* report the extent of zones, see @ref QDMI_SITE_PROPERTY_ISZONE.
|
|
610
|
+
* @note If the site is not a zone, this property must return @ref
|
|
611
|
+
* QDMI_ERROR_NOTSUPPORTED.
|
|
612
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTHUNIT
|
|
613
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTSCALEFACTOR
|
|
614
|
+
*/
|
|
615
|
+
QDMI_SITE_PROPERTY_ZEXTENT = 10,
|
|
616
|
+
/**
|
|
617
|
+
* @brief `uint64_t` an unsigned integer that uniquely identifies the module.
|
|
618
|
+
* @details A module is a logical grouping of sites, e.g., one part on a
|
|
619
|
+
* superconducting chip or an array of sites in a neutral atom-based device.
|
|
620
|
+
*/
|
|
621
|
+
QDMI_SITE_PROPERTY_MODULEINDEX = 11,
|
|
622
|
+
/**
|
|
623
|
+
* @brief `uint64_t` an unsigned integer uniquely identifying the submodule
|
|
624
|
+
* within a module.
|
|
625
|
+
* @details A submodule is a repetitive substructure of sites within a
|
|
626
|
+
* module. E.g., for a module (@ref QDMI_SITE_PROPERTY_MODULEINDEX), where the
|
|
627
|
+
* sites are arranged in pairs and the pairs are arranged in a grid, the
|
|
628
|
+
* submodule index would be the index of the pair within the module.
|
|
629
|
+
*/
|
|
630
|
+
QDMI_SITE_PROPERTY_SUBMODULEINDEX = 12,
|
|
631
|
+
/**
|
|
632
|
+
* @brief The maximum value of the enum.
|
|
633
|
+
* @details It can be used by devices for bounds checking and validation of
|
|
634
|
+
* function parameters.
|
|
635
|
+
*
|
|
636
|
+
* @attention This value must remain the last regular member of the enum
|
|
637
|
+
* besides the custom members and must be updated when new members are added.
|
|
638
|
+
*/
|
|
639
|
+
QDMI_SITE_PROPERTY_MAX = 13,
|
|
640
|
+
/**
|
|
641
|
+
* @brief This enum value is reserved for a custom property.
|
|
642
|
+
* @details The device defines the meaning and the type of this property.
|
|
643
|
+
* @attention The value of this enum member must not be changed to maintain
|
|
644
|
+
* binary compatibility.
|
|
645
|
+
*/
|
|
646
|
+
QDMI_SITE_PROPERTY_CUSTOM1 = 999999995,
|
|
647
|
+
/// @see QDMI_SITE_PROPERTY_CUSTOM1
|
|
648
|
+
QDMI_SITE_PROPERTY_CUSTOM2 = 999999996,
|
|
649
|
+
/// @see QDMI_SITE_PROPERTY_CUSTOM1
|
|
650
|
+
QDMI_SITE_PROPERTY_CUSTOM3 = 999999997,
|
|
651
|
+
/// @see QDMI_SITE_PROPERTY_CUSTOM1
|
|
652
|
+
QDMI_SITE_PROPERTY_CUSTOM4 = 999999998,
|
|
653
|
+
/// @see QDMI_SITE_PROPERTY_CUSTOM1
|
|
654
|
+
QDMI_SITE_PROPERTY_CUSTOM5 = 999999999
|
|
655
|
+
};
|
|
656
|
+
|
|
657
|
+
/// Site property type.
|
|
658
|
+
typedef enum QDMI_SITE_PROPERTY_T QDMI_Site_Property;
|
|
659
|
+
|
|
660
|
+
/// Enum of the operation properties that can be queried via @ref
|
|
661
|
+
/// QDMI_device_session_query_operation_property as part of the @ref
|
|
662
|
+
/// device_interface "device interface" and via @ref
|
|
663
|
+
/// QDMI_device_query_operation_property as part of the @ref client_interface
|
|
664
|
+
/// "client interface".
|
|
665
|
+
enum QDMI_OPERATION_PROPERTY_T {
|
|
666
|
+
/// `char*` (string) The string identifier of the operation.
|
|
667
|
+
QDMI_OPERATION_PROPERTY_NAME = 0,
|
|
668
|
+
/// `size_t` The number of qubits involved in the operation.
|
|
669
|
+
QDMI_OPERATION_PROPERTY_QUBITSNUM = 1,
|
|
670
|
+
/// `size_t` The number of floating point parameters the operation takes.
|
|
671
|
+
QDMI_OPERATION_PROPERTY_PARAMETERSNUM = 2,
|
|
672
|
+
/**
|
|
673
|
+
* @brief `uint64_t` The raw, unscaled duration of an operation.
|
|
674
|
+
* @details To obtain the physical duration, a client must scale the raw value
|
|
675
|
+
* of this property. The physical duration is calculated as: `raw_value *
|
|
676
|
+
* scale_factor`, where `scale_factor` is the value of the
|
|
677
|
+
* @ref QDMI_DEVICE_PROPERTY_DURATIONSCALEFACTOR property. The resulting value
|
|
678
|
+
* is in units of @ref QDMI_DEVICE_PROPERTY_DURATIONUNIT.
|
|
679
|
+
* @see QDMI_DEVICE_PROPERTY_DURATIONUNIT
|
|
680
|
+
* @see QDMI_DEVICE_PROPERTY_DURATIONSCALEFACTOR
|
|
681
|
+
*/
|
|
682
|
+
QDMI_OPERATION_PROPERTY_DURATION = 3,
|
|
683
|
+
/// `double` The fidelity of an operation.
|
|
684
|
+
QDMI_OPERATION_PROPERTY_FIDELITY = 4,
|
|
685
|
+
/**
|
|
686
|
+
* @brief `uint64_t` The raw, unscaled interaction radius of the operation.
|
|
687
|
+
* @details The interaction radius is the maximum distance between two
|
|
688
|
+
* qubits that can be involved in the operation. It only applies to
|
|
689
|
+
* multi-qubit gates.
|
|
690
|
+
* @par
|
|
691
|
+
* To obtain the physical interaction radius, a client must scale the raw
|
|
692
|
+
* value of this property. The physical interaction radius is calculated as:
|
|
693
|
+
* `raw_value * scale_factor`, where `scale_factor` is the value of the @ref
|
|
694
|
+
* QDMI_DEVICE_PROPERTY_LENGTHSCALEFACTOR property. The resulting value is in
|
|
695
|
+
* units of @ref QDMI_DEVICE_PROPERTY_LENGTHUNIT.
|
|
696
|
+
* @note This property is mainly required for neutral atom devices where
|
|
697
|
+
* atoms representing qubits can be at arbitrary locations. Hence, it is
|
|
698
|
+
* infeasible to define a coupling map. Instead, the coupling of atoms is
|
|
699
|
+
* defined by the interaction radius of the operation.
|
|
700
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTHUNIT
|
|
701
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTSCALEFACTOR
|
|
702
|
+
*/
|
|
703
|
+
QDMI_OPERATION_PROPERTY_INTERACTIONRADIUS = 5,
|
|
704
|
+
/**
|
|
705
|
+
* @brief `uint64_t` The raw, unscaled blocking radius of the operation.
|
|
706
|
+
* @details The blocking radius is the minimum distance between two
|
|
707
|
+
* qubits that should not be involved in the operation to avoid crosstalk.
|
|
708
|
+
* It only applies to multi-qubit gates.
|
|
709
|
+
* @par
|
|
710
|
+
* To obtain the physical blocking radius, a client must scale the raw value
|
|
711
|
+
* of this property. The physical blocking radius is calculated as: `raw_value
|
|
712
|
+
* * scale_factor`, where `scale_factor` is the value of the @ref
|
|
713
|
+
* QDMI_DEVICE_PROPERTY_LENGTHSCALEFACTOR property. The resulting value is in
|
|
714
|
+
* units of @ref QDMI_DEVICE_PROPERTY_LENGTHUNIT.
|
|
715
|
+
* @note This property is mainly required for neutral atom devices where
|
|
716
|
+
* atoms representing qubits can be at arbitrary locations. To avoid
|
|
717
|
+
* crosstalk, the blocking radius of the operation must be respected when
|
|
718
|
+
* scheduling operations.
|
|
719
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTHUNIT
|
|
720
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTHSCALEFACTOR
|
|
721
|
+
*/
|
|
722
|
+
QDMI_OPERATION_PROPERTY_BLOCKINGRADIUS = 6,
|
|
723
|
+
/**
|
|
724
|
+
* @brief `double` Fidelity of qubits idling during a global operation.
|
|
725
|
+
* @details This property measures the fidelity of qubits that are within the
|
|
726
|
+
* affected area of a global multi-qubit operation but do not actively
|
|
727
|
+
* participate (i.e., they lack an interaction partner within their radius).
|
|
728
|
+
* Even though these qubits undergo an identity operation, errors may still
|
|
729
|
+
* occur, resulting in lower fidelity compared to qubits that are simply
|
|
730
|
+
* idling and not exposed to the operation.
|
|
731
|
+
* @note This is especially relevant for neutral atom devices, where global
|
|
732
|
+
* operations (e.g., laser pulses) can impact all atoms in the array,
|
|
733
|
+
* including those not interacting.
|
|
734
|
+
*/
|
|
735
|
+
QDMI_OPERATION_PROPERTY_IDLINGFIDELITY = 7,
|
|
736
|
+
/**
|
|
737
|
+
* @brief `bool` Whether the operation is a zoned (global) operation.
|
|
738
|
+
* @details A zoned (or global) operation is an operation that can be applied
|
|
739
|
+
* simultaneously to all qubits within a specific zone. If this property is
|
|
740
|
+
* `true`, the operation is considered zoned. If it is `false` or returns @ref
|
|
741
|
+
* QDMI_ERROR_NOTSUPPORTED, the operation is considered local. The
|
|
742
|
+
* applicability of a zoned operation to specific zones is detailed in @ref
|
|
743
|
+
* QDMI_OPERATION_PROPERTY_SITES.
|
|
744
|
+
* @note This property is primarily relevant for neutral atom devices, where a
|
|
745
|
+
* laser can illuminate an entire array of atoms representing qubits.
|
|
746
|
+
* @see QDMI_SITE_PROPERTY_ISZONE
|
|
747
|
+
* @see QDMI_OPERATION_PROPERTY_SITES
|
|
748
|
+
*/
|
|
749
|
+
QDMI_OPERATION_PROPERTY_ISZONED = 8,
|
|
750
|
+
/**
|
|
751
|
+
* @brief `QDMI_Site*` (list) The sites to which the operation is applicable.
|
|
752
|
+
* @details
|
|
753
|
+
* - For local operations (see @ref QDMI_OPERATION_PROPERTY_ISZONED), this
|
|
754
|
+
* property returns a list of tuples. Each tuple contains sites from the list
|
|
755
|
+
* provided by @ref QDMI_DEVICE_PROPERTY_SITES and represents a valid
|
|
756
|
+
* combination for the operation. The number of sites in each tuple matches
|
|
757
|
+
* the value of @ref QDMI_OPERATION_PROPERTY_QUBITSNUM.
|
|
758
|
+
* - For global operations (see @ref QDMI_OPERATION_PROPERTY_ISZONED), this
|
|
759
|
+
* property returns a list of zone sites, i.e., zones where the operation can
|
|
760
|
+
* be applied.
|
|
761
|
+
*/
|
|
762
|
+
QDMI_OPERATION_PROPERTY_SITES = 9,
|
|
763
|
+
/**
|
|
764
|
+
* @brief `uint64_t` The raw, unscaled mean shuttling speed of an operation.
|
|
765
|
+
* @details To obtain the physical speed, a client must scale the raw value of
|
|
766
|
+
* this property. The physical speed is calculated as: `raw_value *
|
|
767
|
+
* length_scale_factor / duration_scale_factor`. The `length_scale_factor` is
|
|
768
|
+
* the value of @ref QDMI_DEVICE_PROPERTY_LENGTHSCALEFACTOR and the
|
|
769
|
+
* `duration_scale_factor` is the value of @ref
|
|
770
|
+
* QDMI_DEVICE_PROPERTY_DURATIONSCALEFACTOR. The resulting value is in units
|
|
771
|
+
* of @ref QDMI_DEVICE_PROPERTY_LENGTHUNIT per @ref
|
|
772
|
+
* QDMI_DEVICE_PROPERTY_DURATIONUNIT.
|
|
773
|
+
* @note This property is mainly required for neutral atom devices where atoms
|
|
774
|
+
* representing qubits can be moved to different sites.
|
|
775
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTHUNIT
|
|
776
|
+
* @see QDMI_DEVICE_PROPERTY_LENGTHSCALEFACTOR
|
|
777
|
+
* @see QDMI_DEVICE_PROPERTY_DURATIONUNIT
|
|
778
|
+
* @see QDMI_DEVICE_PROPERTY_DURATIONSCALEFACTOR
|
|
779
|
+
*/
|
|
780
|
+
QDMI_OPERATION_PROPERTY_MEANSHUTTLINGSPEED = 10,
|
|
781
|
+
/**
|
|
782
|
+
* @brief The maximum value of the enum.
|
|
783
|
+
* @details It can be used by devices for bounds checking and validation of
|
|
784
|
+
* function parameters.
|
|
785
|
+
*
|
|
786
|
+
* @attention This value must remain the last regular member of the enum
|
|
787
|
+
* besides the custom members and must be updated when new members are added.
|
|
788
|
+
*/
|
|
789
|
+
QDMI_OPERATION_PROPERTY_MAX = 11,
|
|
790
|
+
/**
|
|
791
|
+
* @brief This enum value is reserved for a custom property.
|
|
792
|
+
* @details The device defines the meaning and the type of this property.
|
|
793
|
+
* @attention The value of this enum member must not be changed to maintain
|
|
794
|
+
* binary compatibility.
|
|
795
|
+
*/
|
|
796
|
+
QDMI_OPERATION_PROPERTY_CUSTOM1 = 999999995,
|
|
797
|
+
/// @see QDMI_OPERATION_PROPERTY_CUSTOM1
|
|
798
|
+
QDMI_OPERATION_PROPERTY_CUSTOM2 = 999999996,
|
|
799
|
+
/// @see QDMI_OPERATION_PROPERTY_CUSTOM1
|
|
800
|
+
QDMI_OPERATION_PROPERTY_CUSTOM3 = 999999997,
|
|
801
|
+
/// @see QDMI_OPERATION_PROPERTY_CUSTOM1
|
|
802
|
+
QDMI_OPERATION_PROPERTY_CUSTOM4 = 999999998,
|
|
803
|
+
/// @see QDMI_OPERATION_PROPERTY_CUSTOM1
|
|
804
|
+
QDMI_OPERATION_PROPERTY_CUSTOM5 = 999999999
|
|
805
|
+
};
|
|
806
|
+
|
|
807
|
+
/// Operation property type.
|
|
808
|
+
typedef enum QDMI_OPERATION_PROPERTY_T QDMI_Operation_Property;
|
|
809
|
+
|
|
810
|
+
/**
|
|
811
|
+
* @brief Enum of the status a job can have.
|
|
812
|
+
* @details See also @ref client_job_interface for a description of the job's
|
|
813
|
+
* lifecycle.
|
|
814
|
+
*/
|
|
815
|
+
enum QDMI_JOB_STATUS_T {
|
|
816
|
+
/**
|
|
817
|
+
* @brief The job was created and can be configured via @ref
|
|
818
|
+
* QDMI_job_set_parameter.
|
|
819
|
+
*/
|
|
820
|
+
QDMI_JOB_STATUS_CREATED = 0,
|
|
821
|
+
/// The job was submitted.
|
|
822
|
+
QDMI_JOB_STATUS_SUBMITTED = 1,
|
|
823
|
+
/// The job was received, and is waiting to be executed.
|
|
824
|
+
QDMI_JOB_STATUS_QUEUED = 2,
|
|
825
|
+
/// The job is running, and the result is not yet available.
|
|
826
|
+
QDMI_JOB_STATUS_RUNNING = 3,
|
|
827
|
+
/// The job is done, and the result can be retrieved.
|
|
828
|
+
QDMI_JOB_STATUS_DONE = 4,
|
|
829
|
+
/// The job was canceled, and the result is not available.
|
|
830
|
+
QDMI_JOB_STATUS_CANCELED = 5,
|
|
831
|
+
/// An error occurred in the job's lifecycle.
|
|
832
|
+
QDMI_JOB_STATUS_FAILED = 6
|
|
833
|
+
};
|
|
834
|
+
|
|
835
|
+
/// Job status type.
|
|
836
|
+
typedef enum QDMI_JOB_STATUS_T QDMI_Job_Status;
|
|
837
|
+
|
|
838
|
+
/**
|
|
839
|
+
* @brief Enum of formats that can be submitted to the device.
|
|
840
|
+
*/
|
|
841
|
+
enum QDMI_PROGRAM_FORMAT_T {
|
|
842
|
+
/**
|
|
843
|
+
* @brief `char*` (string) An OpenQASM 2.0 program.
|
|
844
|
+
* @details A text-based representation of a quantum circuit in the
|
|
845
|
+
* [OpenQASM 2.0 language](https://arxiv.org/abs/1707.03429). Devices that
|
|
846
|
+
* claim to support this format must accept programs conforming to the
|
|
847
|
+
* following rules:
|
|
848
|
+
* - The program contains exactly one quantum register named `q`.
|
|
849
|
+
* - The number of qubits in the quantum register `q` matches the number of
|
|
850
|
+
* sites in the device.
|
|
851
|
+
* - The program only contains gate identifiers that are reported by the
|
|
852
|
+
* @ref QDMI_OPERATION_PROPERTY_NAME property of the device's operations.
|
|
853
|
+
*
|
|
854
|
+
* @par
|
|
855
|
+
* Given a program following these rules, the operations in the program
|
|
856
|
+
* are expected to be performed on the physical sites of the device as queried
|
|
857
|
+
* via @ref QDMI_DEVICE_PROPERTY_SITES.
|
|
858
|
+
* Specifically, an operation on `q[i]` is performed on the i-th site in the
|
|
859
|
+
* list of sites returned by the device.
|
|
860
|
+
*
|
|
861
|
+
* @note
|
|
862
|
+
* Devices may decide to support more general OpenQASM 2.0 programs that
|
|
863
|
+
* do not follow these rules, for example, using multiple qubit registers or
|
|
864
|
+
* arbitrary gates. However, in that case, no guarantees can be made about the
|
|
865
|
+
* mapping of qubits in the program to the physical sites of the device.
|
|
866
|
+
*/
|
|
867
|
+
QDMI_PROGRAM_FORMAT_QASM2 = 0,
|
|
868
|
+
/**
|
|
869
|
+
* @brief `char*` (string) An OpenQASM 3 program.
|
|
870
|
+
* @details A text-based representation of a quantum circuit in the
|
|
871
|
+
* [OpenQASM 3 language](https://openqasm.com/). Devices that claim to support
|
|
872
|
+
* this format must accept programs conforming to the same rules as for @ref
|
|
873
|
+
* QDMI_PROGRAM_FORMAT_QASM2.
|
|
874
|
+
*
|
|
875
|
+
* @par
|
|
876
|
+
* Besides the rules for OpenQASM 2.0 programs, OpenQASM 3 programs may
|
|
877
|
+
* be written using physical qubits, which are denoted by `$[NUM]`, with
|
|
878
|
+
* `[NUM]` being a non-negative integer denoting the physical qubit's index.
|
|
879
|
+
* If a program uses physical qubits, the operations in the program must be
|
|
880
|
+
* performed on the sites with indices corresponding to the physical qubits in
|
|
881
|
+
* the program.
|
|
882
|
+
*
|
|
883
|
+
* @note
|
|
884
|
+
* Devices may decide to support more general OpenQASM 3 programs that
|
|
885
|
+
* do not follow these rules, for example, using multiple qubit registers or
|
|
886
|
+
* arbitrary gates. However, in that case, no guarantees can be made about the
|
|
887
|
+
* mapping of qubits in the program to the physical sites of the device.
|
|
888
|
+
*/
|
|
889
|
+
QDMI_PROGRAM_FORMAT_QASM3 = 1,
|
|
890
|
+
/**
|
|
891
|
+
* @brief `char*` (string) A text-based QIR program complying to the QIR base
|
|
892
|
+
* profile.
|
|
893
|
+
* @details A text-based representation of a quantum circuit in the Quantum
|
|
894
|
+
* Intermediate Representation (QIR) format; specifically, the [QIR base
|
|
895
|
+
* profile](https://github.com/qir-alliance/qir-spec/blob/8b3fd47b7b70122a104e24733ef9de911576f7d6/specification/under_development/profiles/Base_Profile.md).
|
|
896
|
+
* Devices that claim to support this format must accept programs that follow
|
|
897
|
+
* the rules for the QIR base profile and that only contain operations that
|
|
898
|
+
* are reported by the @ref QDMI_OPERATION_PROPERTY_NAME property of the
|
|
899
|
+
* device's operations (for example, `@__quantum__qis__[NAME]__body`, where
|
|
900
|
+
* `[NAME]` is the name of the operation).
|
|
901
|
+
*
|
|
902
|
+
* @par
|
|
903
|
+
* QIR has a similar distinction between dynamically allocated and static
|
|
904
|
+
* hardware qubits as @ref QDMI_PROGRAM_FORMAT_QASM3. The same rules apply for
|
|
905
|
+
* the mapping of qubits in the program to the physical sites of the device.
|
|
906
|
+
* Specifically, if the program only allocates a single register named `q`
|
|
907
|
+
* with as many qubits as there are sites in the device, the operations in the
|
|
908
|
+
* program are expected to be performed on the physical sites of the device as
|
|
909
|
+
* queried via @ref QDMI_DEVICE_PROPERTY_SITES. If the program uses static
|
|
910
|
+
* qubit addresses (for example, `ptr inttoptr (i64 1 to ptr)`), the
|
|
911
|
+
* operations in the program must be performed on the sites with indices
|
|
912
|
+
* corresponding to the static qubit addresses in the program.
|
|
913
|
+
*
|
|
914
|
+
* @note Devices may decide to support more general QIR programs that do not
|
|
915
|
+
* follow these rules, for example, using multiple qubit registers or
|
|
916
|
+
* arbitrary gates. However, in that case, no guarantees can be made about the
|
|
917
|
+
* mapping of qubits in the program to the physical sites of the device.
|
|
918
|
+
*/
|
|
919
|
+
QDMI_PROGRAM_FORMAT_QIRBASESTRING = 2,
|
|
920
|
+
/**
|
|
921
|
+
* @brief `void*` A QIR binary complying to the QIR base profile.
|
|
922
|
+
* @details A binary representation of a quantum circuit in the Quantum
|
|
923
|
+
* Intermediate Representation (QIR) format; specifically, the [QIR base
|
|
924
|
+
* profile](https://github.com/qir-alliance/qir-spec/blob/8b3fd47b7b70122a104e24733ef9de911576f7d6/specification/under_development/profiles/Base_Profile.md).
|
|
925
|
+
*
|
|
926
|
+
* @see
|
|
927
|
+
* QDMI_PROGRAM_FORMAT_QIRBASESTRING for more information on the QIR base
|
|
928
|
+
* profile and the expected behavior of devices supporting this format.
|
|
929
|
+
*/
|
|
930
|
+
QDMI_PROGRAM_FORMAT_QIRBASEMODULE = 3,
|
|
931
|
+
/**
|
|
932
|
+
* @brief `char*` (string) A text-based QIR program complying to the QIR
|
|
933
|
+
* adaptive profile.
|
|
934
|
+
* @details A text-based representation of a quantum circuit in the Quantum
|
|
935
|
+
* Intermediate Representation (QIR) format; specifically, the [QIR adaptive
|
|
936
|
+
* profile](https://github.com/qir-alliance/qir-spec/blob/8b3fd47b7b70122a104e24733ef9de911576f7d6/specification/under_development/profiles/Adaptive_Profile.md).
|
|
937
|
+
*
|
|
938
|
+
* @see QDMI_PROGRAM_FORMAT_QIRBASESTRING for more information on the QIR base
|
|
939
|
+
* profile and the expected behavior of devices supporting this format.
|
|
940
|
+
*/
|
|
941
|
+
QDMI_PROGRAM_FORMAT_QIRADAPTIVESTRING = 4,
|
|
942
|
+
/**
|
|
943
|
+
* @brief `void*` A QIR binary complying to the QIR adaptive profile.
|
|
944
|
+
* @details A binary representation of a quantum circuit in the Quantum
|
|
945
|
+
* Intermediate Representation (QIR) format; specifically, the [QIR adaptive
|
|
946
|
+
* profile](https://github.com/qir-alliance/qir-spec/blob/8b3fd47b7b70122a104e24733ef9de911576f7d6/specification/under_development/profiles/Adaptive_Profile.md).
|
|
947
|
+
*
|
|
948
|
+
* @see QDMI_PROGRAM_FORMAT_QIRBASESTRING for more information on the QIR base
|
|
949
|
+
* profile and the expected behavior of devices supporting this format.
|
|
950
|
+
*/
|
|
951
|
+
QDMI_PROGRAM_FORMAT_QIRADAPTIVEMODULE = 5,
|
|
952
|
+
/**
|
|
953
|
+
* @brief `void*` A calibration program.
|
|
954
|
+
* @details This program format is used to request the device to perform a
|
|
955
|
+
* calibration run. Triggering a calibration run does not require a program to
|
|
956
|
+
* be set via @ref QDMI_DEVICE_JOB_PARAMETER_PROGRAM.
|
|
957
|
+
*/
|
|
958
|
+
QDMI_PROGRAM_FORMAT_CALIBRATION = 6,
|
|
959
|
+
/**
|
|
960
|
+
* @brief The maximum value of the enum.
|
|
961
|
+
* @details It can be used by devices for bounds checking and validation of
|
|
962
|
+
* function parameters.
|
|
963
|
+
*
|
|
964
|
+
* @attention This value must remain the last regular member of the enum
|
|
965
|
+
* besides the custom members and must be updated when new members are added.
|
|
966
|
+
*/
|
|
967
|
+
QDMI_PROGRAM_FORMAT_MAX = 7,
|
|
968
|
+
/**
|
|
969
|
+
* @brief This enum value is reserved for a custom program format.
|
|
970
|
+
* @details The device defines the meaning and the type of this value.
|
|
971
|
+
* @attention The value of this enum member must not be changed to maintain
|
|
972
|
+
* binary compatibility.
|
|
973
|
+
*/
|
|
974
|
+
QDMI_PROGRAM_FORMAT_CUSTOM1 = 999999995,
|
|
975
|
+
/// @see QDMI_PROGRAM_FORMAT_CUSTOM1
|
|
976
|
+
QDMI_PROGRAM_FORMAT_CUSTOM2 = 999999996,
|
|
977
|
+
/// @see QDMI_PROGRAM_FORMAT_CUSTOM1
|
|
978
|
+
QDMI_PROGRAM_FORMAT_CUSTOM3 = 999999997,
|
|
979
|
+
/// @see QDMI_PROGRAM_FORMAT_CUSTOM1
|
|
980
|
+
QDMI_PROGRAM_FORMAT_CUSTOM4 = 999999998,
|
|
981
|
+
/// @see QDMI_PROGRAM_FORMAT_CUSTOM1
|
|
982
|
+
QDMI_PROGRAM_FORMAT_CUSTOM5 = 999999999
|
|
983
|
+
};
|
|
984
|
+
|
|
985
|
+
/// Program format type.
|
|
986
|
+
typedef enum QDMI_PROGRAM_FORMAT_T QDMI_Program_Format;
|
|
987
|
+
|
|
988
|
+
/**
|
|
989
|
+
* @brief Enum of the formats the results can be returned in.
|
|
990
|
+
*/
|
|
991
|
+
enum QDMI_JOB_RESULT_T {
|
|
992
|
+
/**
|
|
993
|
+
* @brief `char*` (string) The results of the individual shots as a
|
|
994
|
+
* comma-separated list, for example, "0010,1101,0101,1100,1001,1100" for four
|
|
995
|
+
* qubits and six shots.
|
|
996
|
+
*/
|
|
997
|
+
QDMI_JOB_RESULT_SHOTS = 0,
|
|
998
|
+
/**
|
|
999
|
+
* @brief `char*` (string) The keys for the histogram of the results.
|
|
1000
|
+
* @details The histogram of the measurement results is represented as a
|
|
1001
|
+
* key-value mapping. This mapping is returned as a list of keys and an
|
|
1002
|
+
* equal-length list of values. The corresponding partners of keys and values
|
|
1003
|
+
* can be found at the same index in the lists.
|
|
1004
|
+
*
|
|
1005
|
+
* This constant denotes the list of keys, @ref QDMI_JOB_RESULT_HIST_VALUES
|
|
1006
|
+
* denotes the list of values.
|
|
1007
|
+
*/
|
|
1008
|
+
QDMI_JOB_RESULT_HIST_KEYS = 1,
|
|
1009
|
+
/**
|
|
1010
|
+
* @brief `size_t*` (`size_t` list) The values for the histogram of the
|
|
1011
|
+
* results.
|
|
1012
|
+
* @see QDMI_JOB_RESULT_HIST_KEY
|
|
1013
|
+
*/
|
|
1014
|
+
QDMI_JOB_RESULT_HIST_VALUES = 2,
|
|
1015
|
+
/**
|
|
1016
|
+
* @brief `double*` (`double` list) The state vector of the result.
|
|
1017
|
+
* @details The complex amplitudes are stored as a list of real and imaginary
|
|
1018
|
+
* parts. The real part of the amplitude is at index `2n` and the imaginary
|
|
1019
|
+
* part is at index `2n+1`. For example, the state vector of a 2-qubit system
|
|
1020
|
+
* with amplitudes `(0.5, 0.5), (0.5, -0.5), (-0.5, 0.5), (-0.5, -0.5)` would
|
|
1021
|
+
* be represented as `{0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5}`.
|
|
1022
|
+
*/
|
|
1023
|
+
QDMI_JOB_RESULT_STATEVECTOR_DENSE = 3,
|
|
1024
|
+
/**
|
|
1025
|
+
* @brief `double*` (`double` list) The probabilities of the result.
|
|
1026
|
+
* @details The probabilities are stored as a list of real numbers. The
|
|
1027
|
+
* probability of the state with index `n` is at index `n` in the list. For
|
|
1028
|
+
* example, the probabilities of a 2-qubit system with states `00, 01, 10, 11`
|
|
1029
|
+
* would be represented as `{0.25, 0.25, 0.25, 0.25}`.
|
|
1030
|
+
*/
|
|
1031
|
+
QDMI_JOB_RESULT_PROBABILITIES_DENSE = 4,
|
|
1032
|
+
/**
|
|
1033
|
+
* @brief `char*` (string) The keys for the sparse state vector of the result.
|
|
1034
|
+
* @details The sparse state vector is represented as a key-value mapping.
|
|
1035
|
+
* This mapping is returned as a list of keys and an equal-length list of
|
|
1036
|
+
* values. The corresponding partners of keys and values can be found at the
|
|
1037
|
+
* same index in the lists.
|
|
1038
|
+
*/
|
|
1039
|
+
QDMI_JOB_RESULT_STATEVECTOR_SPARSE_KEYS = 5,
|
|
1040
|
+
/**
|
|
1041
|
+
* @brief `double*` (`double` list) The values for the sparse state vector of
|
|
1042
|
+
* the result.
|
|
1043
|
+
* @details The complex amplitudes are stored in the same way as the dense
|
|
1044
|
+
* state vector, but only for the non-zero amplitudes.
|
|
1045
|
+
* @see QDMI_JOB_RESULT_STATEVECTOR_DENSE
|
|
1046
|
+
* @see QDMI_JOB_RESULT_STATEVECTOR_SPARSE_KEYS
|
|
1047
|
+
*/
|
|
1048
|
+
QDMI_JOB_RESULT_STATEVECTOR_SPARSE_VALUES = 6,
|
|
1049
|
+
/**
|
|
1050
|
+
* @brief `char*` (string) The keys for the sparse probabilities of the
|
|
1051
|
+
* result.
|
|
1052
|
+
* @details The sparse probabilities are represented as a key-value mapping.
|
|
1053
|
+
* This mapping is returned as a list of keys and an equal-length list of
|
|
1054
|
+
* values. The corresponding partners of keys and values can be found at the
|
|
1055
|
+
* same index in the lists.
|
|
1056
|
+
*/
|
|
1057
|
+
QDMI_JOB_RESULT_PROBABILITIES_SPARSE_KEYS = 7,
|
|
1058
|
+
/**
|
|
1059
|
+
* @brief `double*` (`double` list) The values for the sparse probabilities of
|
|
1060
|
+
* the result.
|
|
1061
|
+
* @details The probabilities are stored in the same way as the dense
|
|
1062
|
+
* probabilities, but only for the non-zero probabilities.
|
|
1063
|
+
* @see QDMI_JOB_RESULT_PROBABILITIES_DENSE
|
|
1064
|
+
* @see QDMI_JOB_RESULT_PROBABILITIES_SPARSE_KEYS
|
|
1065
|
+
*/
|
|
1066
|
+
QDMI_JOB_RESULT_PROBABILITIES_SPARSE_VALUES = 8,
|
|
1067
|
+
/**
|
|
1068
|
+
* @brief The maximum value of the enum.
|
|
1069
|
+
* @details It can be used by devices for bounds checking and validation of
|
|
1070
|
+
* function parameters.
|
|
1071
|
+
*
|
|
1072
|
+
* @attention This value must remain the last regular member of the enum
|
|
1073
|
+
* besides the custom members and must be updated when new members are added.
|
|
1074
|
+
*/
|
|
1075
|
+
QDMI_JOB_RESULT_MAX = 9,
|
|
1076
|
+
/**
|
|
1077
|
+
* @brief This enum value is reserved for a custom result.
|
|
1078
|
+
* @details The device defines the meaning and the type of this result.
|
|
1079
|
+
* @attention The value of this enum member must not be changed to maintain
|
|
1080
|
+
* binary compatibility.
|
|
1081
|
+
*/
|
|
1082
|
+
QDMI_JOB_RESULT_CUSTOM1 = 999999995,
|
|
1083
|
+
/// @see QDMI_JOB_RESULT_CUSTOM1
|
|
1084
|
+
QDMI_JOB_RESULT_CUSTOM2 = 999999996,
|
|
1085
|
+
/// @see QDMI_JOB_RESULT_CUSTOM1
|
|
1086
|
+
QDMI_JOB_RESULT_CUSTOM3 = 999999997,
|
|
1087
|
+
/// @see QDMI_JOB_RESULT_CUSTOM1
|
|
1088
|
+
QDMI_JOB_RESULT_CUSTOM4 = 999999998,
|
|
1089
|
+
/// @see QDMI_JOB_RESULT_CUSTOM1
|
|
1090
|
+
QDMI_JOB_RESULT_CUSTOM5 = 999999999
|
|
1091
|
+
};
|
|
1092
|
+
|
|
1093
|
+
/// Job result type.
|
|
1094
|
+
typedef enum QDMI_JOB_RESULT_T QDMI_Job_Result;
|
|
1095
|
+
|
|
1096
|
+
/**
|
|
1097
|
+
* @brief Enum to indicate the level of pulse support a device has.
|
|
1098
|
+
*/
|
|
1099
|
+
enum QDMI_DEVICE_PULSE_SUPPORT_LEVEL_T {
|
|
1100
|
+
/// The device does not support pulse-level control.
|
|
1101
|
+
QDMI_DEVICE_PULSE_SUPPORT_LEVEL_NONE = 0,
|
|
1102
|
+
/**
|
|
1103
|
+
* @brief The device supports pulse-level control at an abstraction level of
|
|
1104
|
+
* @ref QDMI_Site.
|
|
1105
|
+
* @details This means that the device can execute pulse-level
|
|
1106
|
+
* instructions on the sites of the device.
|
|
1107
|
+
* This level of support is sufficient for most devices that can execute
|
|
1108
|
+
* quantum circuits with pulse-level control, as it allows the device to
|
|
1109
|
+
* execute pulse-level instructions on the sites of the device.
|
|
1110
|
+
* @see QDMI_Site for more information on the site abstraction.
|
|
1111
|
+
*/
|
|
1112
|
+
QDMI_DEVICE_PULSE_SUPPORT_LEVEL_SITE = 1,
|
|
1113
|
+
/**
|
|
1114
|
+
* @brief The device supports pulse-level control at an abstraction level of
|
|
1115
|
+
* `QDMI_Pulse_Channel`.
|
|
1116
|
+
* @details This means that the device can execute pulse-level instructions on
|
|
1117
|
+
* the channels of the device.
|
|
1118
|
+
* This level of support is sufficient for devices that can execute quantum
|
|
1119
|
+
* circuits with pulse-level control on a channel basis, such as devices that
|
|
1120
|
+
* use a single channel for all sites.
|
|
1121
|
+
*/
|
|
1122
|
+
QDMI_DEVICE_PULSE_SUPPORT_LEVEL_CHANNEL = 2,
|
|
1123
|
+
/**
|
|
1124
|
+
* @brief The device supports pulse-level control at an abstraction level of
|
|
1125
|
+
* @ref QDMI_Site and `QDMI_Pulse_Channel`.
|
|
1126
|
+
* @details This means that the device can execute pulse-level instructions on
|
|
1127
|
+
* both the sites and channels of the device.
|
|
1128
|
+
*/
|
|
1129
|
+
QDMI_DEVICE_PULSE_SUPPORT_LEVEL_SITEANDCHANNEL = 3,
|
|
1130
|
+
};
|
|
1131
|
+
|
|
1132
|
+
/// Pulse support level type.
|
|
1133
|
+
typedef enum QDMI_DEVICE_PULSE_SUPPORT_LEVEL_T QDMI_Device_Pulse_Support_Level;
|
|
1134
|
+
|
|
1135
|
+
// NOLINTEND(performance-enum-size, modernize-use-using)
|
|
1136
|
+
|
|
1137
|
+
#ifdef __cplusplus
|
|
1138
|
+
} // extern "C"
|
|
1139
|
+
#endif
|