mqt-core 3.2.1__cp310-cp310-win_amd64.whl → 3.3.1__cp310-cp310-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.
Potentially problematic release.
This version of mqt-core might be problematic. Click here for more details.
- mqt/core/__init__.py +3 -3
- mqt/core/_commands.py +2 -2
- mqt/core/_version.py +16 -3
- 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.cp310-win_amd64.pyd +0 -0
- mqt/core/dd.pyi +5 -7
- mqt/core/fomac.cp310-win_amd64.pyd +0 -0
- mqt/core/fomac.pyi +125 -0
- mqt/core/include/mqt-core/circuit_optimizer/CircuitOptimizer.hpp +13 -0
- mqt/core/include/mqt-core/dd/CachedEdge.hpp +7 -0
- mqt/core/include/mqt-core/dd/Operations.hpp +12 -14
- mqt/core/include/mqt-core/fomac/FoMaC.hpp +568 -0
- mqt/core/include/mqt-core/ir/QuantumComputation.hpp +29 -28
- mqt/core/include/mqt-core/ir/operations/CompoundOperation.hpp +2 -0
- mqt/core/include/mqt-core/ir/operations/IfElseOperation.hpp +169 -0
- mqt/core/include/mqt-core/ir/operations/OpType.hpp +3 -0
- mqt/core/include/mqt-core/ir/operations/OpType.inc +2 -2
- mqt/core/include/mqt-core/ir/operations/Operation.hpp +3 -1
- mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +2 -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/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/fomac/Device.hpp +169 -0
- mqt/core/include/mqt-core/qdmi/Driver.hpp +431 -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 +83 -45
- mqt/core/ir/operations.pyi +40 -27
- mqt/core/ir.cp310-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.cp310-win_amd64.pyd +0 -0
- mqt/core/na/fomac.pyi +117 -0
- mqt/core/nlohmann_json.natvis +278 -0
- mqt/core/plugins/qiskit/mqt_to_qiskit.py +75 -11
- mqt/core/plugins/qiskit/qiskit_to_mqt.py +108 -5
- mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +3 -0
- mqt/core/share/cmake/mqt-core/Cache.cmake +17 -16
- mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +6 -0
- mqt/core/share/cmake/mqt-core/StandardProjectSettings.cmake +1 -1
- mqt/core/share/cmake/mqt-core/mqt-core-config-version.cmake +3 -3
- mqt/core/share/cmake/mqt-core/mqt-core-config.cmake +3 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +51 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +124 -3
- 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.1.dist-info/DELVEWHEEL +2 -0
- {mqt_core-3.2.1.dist-info → mqt_core-3.3.1.dist-info}/METADATA +74 -33
- {mqt_core-3.2.1.dist-info → mqt_core-3.3.1.dist-info}/RECORD +244 -50
- {mqt_core-3.2.1.dist-info → mqt_core-3.3.1.dist-info}/WHEEL +1 -1
- mqt/core/include/mqt-core/ir/operations/ClassicControlledOperation.hpp +0 -156
- mqt_core-3.2.1.dist-info/DELVEWHEEL +0 -2
- {mqt_core-3.2.1.dist-info → mqt_core-3.3.1.dist-info}/entry_points.txt +0 -0
- {mqt_core-3.2.1.dist-info → mqt_core-3.3.1.dist-info}/licenses/LICENSE.md +0 -0
mqt/core/ir/__init__.pyi
CHANGED
|
@@ -1864,33 +1864,71 @@ class QuantumComputation(MutableSequence[Operation]):
|
|
|
1864
1864
|
"""
|
|
1865
1865
|
|
|
1866
1866
|
@overload
|
|
1867
|
-
def
|
|
1867
|
+
def if_else(
|
|
1868
1868
|
self,
|
|
1869
|
-
|
|
1869
|
+
then_operation: Operation,
|
|
1870
|
+
else_operation: Operation | None,
|
|
1871
|
+
control_register: ClassicalRegister,
|
|
1872
|
+
expected_value: int = 1,
|
|
1873
|
+
comparison_kind: ComparisonKind = ComparisonKind.eq,
|
|
1874
|
+
) -> None:
|
|
1875
|
+
"""Add an if-else operation to the circuit.
|
|
1876
|
+
|
|
1877
|
+
Args:
|
|
1878
|
+
then_operation: The operation to apply if the condition is met
|
|
1879
|
+
else_operation: The operation to apply if the condition is not met
|
|
1880
|
+
control_register: The classical register to check against
|
|
1881
|
+
expected_value: The expected value of the control register
|
|
1882
|
+
comparison_kind: The kind of comparison to perform
|
|
1883
|
+
"""
|
|
1884
|
+
|
|
1885
|
+
@overload
|
|
1886
|
+
def if_else(
|
|
1887
|
+
self,
|
|
1888
|
+
then_operation: Operation,
|
|
1889
|
+
else_operation: Operation | None,
|
|
1890
|
+
control_bit: int,
|
|
1891
|
+
expected_value: int = 1,
|
|
1892
|
+
comparison_kind: ComparisonKind = ComparisonKind.eq,
|
|
1893
|
+
) -> None:
|
|
1894
|
+
"""Add an if-else operation to the circuit.
|
|
1895
|
+
|
|
1896
|
+
Args:
|
|
1897
|
+
then_operation: The operation to apply if the condition is met
|
|
1898
|
+
else_operation: The operation to apply if the condition is not met
|
|
1899
|
+
control_bit: The index of the classical bit to check against
|
|
1900
|
+
expected_value: The expected value of the control bit
|
|
1901
|
+
comparison_kind: The kind of comparison to perform
|
|
1902
|
+
"""
|
|
1903
|
+
|
|
1904
|
+
@overload
|
|
1905
|
+
def if_(
|
|
1906
|
+
self,
|
|
1907
|
+
op_type: OpType,
|
|
1870
1908
|
target: int,
|
|
1871
|
-
|
|
1909
|
+
control_register: ClassicalRegister,
|
|
1872
1910
|
expected_value: int = 1,
|
|
1873
1911
|
comparison_kind: ComparisonKind = ComparisonKind.eq,
|
|
1874
1912
|
params: Sequence[float] = (),
|
|
1875
1913
|
) -> None:
|
|
1876
|
-
"""Add
|
|
1914
|
+
"""Add an if operartion to the circuit.
|
|
1877
1915
|
|
|
1878
1916
|
Args:
|
|
1879
|
-
|
|
1917
|
+
op_type: The operation to apply
|
|
1880
1918
|
target: The target qubit
|
|
1881
|
-
|
|
1882
|
-
expected_value: The expected value of the
|
|
1919
|
+
control_register: The classical register to check against
|
|
1920
|
+
expected_value: The expected value of the control register
|
|
1883
1921
|
comparison_kind: The kind of comparison to perform
|
|
1884
1922
|
params: The parameters of the operation
|
|
1885
1923
|
"""
|
|
1886
1924
|
|
|
1887
1925
|
@overload
|
|
1888
|
-
def
|
|
1926
|
+
def if_(
|
|
1889
1927
|
self,
|
|
1890
|
-
|
|
1928
|
+
op_type: OpType,
|
|
1891
1929
|
target: int,
|
|
1892
1930
|
control: Control | int,
|
|
1893
|
-
|
|
1931
|
+
control_register: ClassicalRegister,
|
|
1894
1932
|
expected_value: int = 1,
|
|
1895
1933
|
comparison_kind: ComparisonKind = ComparisonKind.eq,
|
|
1896
1934
|
params: Sequence[float] = (),
|
|
@@ -1898,22 +1936,22 @@ class QuantumComputation(MutableSequence[Operation]):
|
|
|
1898
1936
|
"""Add a classic-controlled operation to the circuit.
|
|
1899
1937
|
|
|
1900
1938
|
Args:
|
|
1901
|
-
|
|
1939
|
+
op_type: The operation to apply
|
|
1902
1940
|
target: The target qubit
|
|
1903
1941
|
control: The control qubit
|
|
1904
|
-
|
|
1905
|
-
expected_value: The expected value of the
|
|
1942
|
+
control_register: The classical register to check against
|
|
1943
|
+
expected_value: The expected value of the control register
|
|
1906
1944
|
comparison_kind: The kind of comparison to perform
|
|
1907
|
-
params: The parameters of the operation
|
|
1945
|
+
params: The parameters of the operation.
|
|
1908
1946
|
"""
|
|
1909
1947
|
|
|
1910
1948
|
@overload
|
|
1911
|
-
def
|
|
1949
|
+
def if_(
|
|
1912
1950
|
self,
|
|
1913
|
-
|
|
1951
|
+
op_type: OpType,
|
|
1914
1952
|
target: int,
|
|
1915
1953
|
controls: set[Control | int],
|
|
1916
|
-
|
|
1954
|
+
control_register: ClassicalRegister,
|
|
1917
1955
|
expected_value: int = 1,
|
|
1918
1956
|
comparison_kind: ComparisonKind = ComparisonKind.eq,
|
|
1919
1957
|
params: Sequence[float] = (),
|
|
@@ -1921,78 +1959,78 @@ class QuantumComputation(MutableSequence[Operation]):
|
|
|
1921
1959
|
"""Add a classic-controlled operation to the circuit.
|
|
1922
1960
|
|
|
1923
1961
|
Args:
|
|
1924
|
-
|
|
1962
|
+
op_type: The operation to apply
|
|
1925
1963
|
target: The target qubit
|
|
1926
1964
|
controls: The control qubits
|
|
1927
|
-
|
|
1928
|
-
expected_value: The expected value of the
|
|
1965
|
+
control_register: The classical register to check against
|
|
1966
|
+
expected_value: The expected value of the control register
|
|
1929
1967
|
comparison_kind: The kind of comparison to perform
|
|
1930
|
-
params: The parameters of the operation
|
|
1968
|
+
params: The parameters of the operation.
|
|
1931
1969
|
"""
|
|
1932
1970
|
|
|
1933
1971
|
@overload
|
|
1934
|
-
def
|
|
1972
|
+
def if_(
|
|
1935
1973
|
self,
|
|
1936
|
-
|
|
1974
|
+
op_type: OpType,
|
|
1937
1975
|
target: int,
|
|
1938
|
-
|
|
1939
|
-
expected_value:
|
|
1976
|
+
control_bit: int,
|
|
1977
|
+
expected_value: bool = True,
|
|
1940
1978
|
comparison_kind: ComparisonKind = ComparisonKind.eq,
|
|
1941
1979
|
params: Sequence[float] = (),
|
|
1942
1980
|
) -> None:
|
|
1943
1981
|
"""Add a classic-controlled operation to the circuit.
|
|
1944
1982
|
|
|
1945
1983
|
Args:
|
|
1946
|
-
|
|
1984
|
+
op_type: The operation to apply
|
|
1947
1985
|
target: The target qubit
|
|
1948
|
-
|
|
1949
|
-
expected_value: The expected value of the
|
|
1986
|
+
control_bit: The index of the classical bit to check against
|
|
1987
|
+
expected_value: The expected value of the control bit
|
|
1950
1988
|
comparison_kind: The kind of comparison to perform
|
|
1951
|
-
params: The parameters of the operation
|
|
1989
|
+
params: The parameters of the operation.
|
|
1952
1990
|
"""
|
|
1953
1991
|
|
|
1954
1992
|
@overload
|
|
1955
|
-
def
|
|
1993
|
+
def if_(
|
|
1956
1994
|
self,
|
|
1957
|
-
|
|
1995
|
+
op_type: OpType,
|
|
1958
1996
|
target: int,
|
|
1959
1997
|
control: Control | int,
|
|
1960
|
-
|
|
1961
|
-
expected_value:
|
|
1998
|
+
control_bit: int,
|
|
1999
|
+
expected_value: bool = True,
|
|
1962
2000
|
comparison_kind: ComparisonKind = ComparisonKind.eq,
|
|
1963
2001
|
params: Sequence[float] = (),
|
|
1964
2002
|
) -> None:
|
|
1965
2003
|
"""Add a classic-controlled operation to the circuit.
|
|
1966
2004
|
|
|
1967
2005
|
Args:
|
|
1968
|
-
|
|
2006
|
+
op_type: The operation to apply
|
|
1969
2007
|
target: The target qubit
|
|
1970
2008
|
control: The control qubit
|
|
1971
|
-
|
|
1972
|
-
expected_value: The expected value of the
|
|
2009
|
+
control_bit: The index of the classical bit to check against
|
|
2010
|
+
expected_value: The expected value of the control bit
|
|
1973
2011
|
comparison_kind: The kind of comparison to perform
|
|
1974
|
-
params: The parameters of the operation
|
|
2012
|
+
params: The parameters of the operation.
|
|
1975
2013
|
"""
|
|
1976
2014
|
|
|
1977
2015
|
@overload
|
|
1978
|
-
def
|
|
2016
|
+
def if_(
|
|
1979
2017
|
self,
|
|
1980
|
-
|
|
2018
|
+
op_type: OpType,
|
|
1981
2019
|
target: int,
|
|
1982
2020
|
controls: set[Control | int],
|
|
1983
|
-
|
|
1984
|
-
expected_value:
|
|
2021
|
+
control_bit: int,
|
|
2022
|
+
expected_value: bool = True,
|
|
1985
2023
|
comparison_kind: ComparisonKind = ComparisonKind.eq,
|
|
1986
2024
|
params: Sequence[float] = (),
|
|
1987
2025
|
) -> None:
|
|
1988
2026
|
"""Add a classic-controlled operation to the circuit.
|
|
1989
2027
|
|
|
1990
2028
|
Args:
|
|
1991
|
-
|
|
2029
|
+
op_type: The operation to apply
|
|
1992
2030
|
target: The target qubit
|
|
1993
2031
|
controls: The control qubits
|
|
1994
|
-
|
|
1995
|
-
expected_value: The expected value of the
|
|
2032
|
+
control_bit: The index of the classical bit to check against
|
|
2033
|
+
expected_value: The expected value of the control bit
|
|
1996
2034
|
comparison_kind: The kind of comparison to perform
|
|
1997
|
-
params: The parameters of the operation
|
|
2035
|
+
params: The parameters of the operation.
|
|
1998
2036
|
"""
|
mqt/core/ir/operations.pyi
CHANGED
|
@@ -15,10 +15,10 @@ from .registers import ClassicalRegister
|
|
|
15
15
|
from .symbolic import Expression, Variable
|
|
16
16
|
|
|
17
17
|
__all__ = [
|
|
18
|
-
"ClassicControlledOperation",
|
|
19
18
|
"ComparisonKind",
|
|
20
19
|
"CompoundOperation",
|
|
21
20
|
"Control",
|
|
21
|
+
"IfElseOperation",
|
|
22
22
|
"NonUnitaryOperation",
|
|
23
23
|
"OpType",
|
|
24
24
|
"Operation",
|
|
@@ -81,14 +81,14 @@ class OpType(Enum):
|
|
|
81
81
|
See Also:
|
|
82
82
|
:meth:`mqt.core.ir.QuantumComputation.barrier`
|
|
83
83
|
"""
|
|
84
|
-
|
|
84
|
+
if_else = ...
|
|
85
85
|
"""
|
|
86
|
-
|
|
86
|
+
An if-else operation.
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
Used to control the execution of an operation based on the value of a classical register.
|
|
89
89
|
|
|
90
90
|
See Also:
|
|
91
|
-
:meth:`mqt.core.ir.QuantumComputation.
|
|
91
|
+
:meth:`mqt.core.ir.QuantumComputation.if_else`
|
|
92
92
|
"""
|
|
93
93
|
compound = ...
|
|
94
94
|
"""
|
|
@@ -439,11 +439,11 @@ class Operation(ABC):
|
|
|
439
439
|
The set of qubits that are used by the operation.
|
|
440
440
|
"""
|
|
441
441
|
|
|
442
|
-
def
|
|
443
|
-
"""Check if the operation is a :class:`
|
|
442
|
+
def is_if_else_operation(self) -> bool:
|
|
443
|
+
"""Check if the operation is a :class:`IfElseOperation`.
|
|
444
444
|
|
|
445
445
|
Returns:
|
|
446
|
-
True if the operation is a :class:`
|
|
446
|
+
True if the operation is a :class:`IfElseOperation`, False otherwise.
|
|
447
447
|
"""
|
|
448
448
|
|
|
449
449
|
def is_compound_operation(self) -> bool:
|
|
@@ -895,15 +895,15 @@ class ComparisonKind(Enum):
|
|
|
895
895
|
geq = ...
|
|
896
896
|
"""Greater than or equal comparison."""
|
|
897
897
|
|
|
898
|
-
class
|
|
899
|
-
"""
|
|
898
|
+
class IfElseOperation(Operation):
|
|
899
|
+
"""If-else quantum operation.
|
|
900
900
|
|
|
901
|
-
This class is used to represent
|
|
902
|
-
|
|
903
|
-
value of the classical register matches the expected value.
|
|
901
|
+
This class is used to represent an if-else operation. The then operation is executed if the
|
|
902
|
+
value of the classical register matches the expected value. Otherwise, the else operation is executed.
|
|
904
903
|
|
|
905
904
|
Args:
|
|
906
|
-
|
|
905
|
+
then_operation: The operation that is executed if the condition is met.
|
|
906
|
+
else_operation: The operation that is executed if the condition is not met.
|
|
907
907
|
control_register: The classical register that controls the operation.
|
|
908
908
|
expected_value: The expected value of the classical register.
|
|
909
909
|
comparison_kind: The kind of comparison (default is equality).
|
|
@@ -912,7 +912,8 @@ class ClassicControlledOperation(Operation):
|
|
|
912
912
|
@overload
|
|
913
913
|
def __init__(
|
|
914
914
|
self,
|
|
915
|
-
|
|
915
|
+
if_operation: Operation,
|
|
916
|
+
else_operation: Operation | None,
|
|
916
917
|
control_register: ClassicalRegister,
|
|
917
918
|
expected_value: int = 1,
|
|
918
919
|
comparison_kind: ComparisonKind = ...,
|
|
@@ -920,14 +921,19 @@ class ClassicControlledOperation(Operation):
|
|
|
920
921
|
@overload
|
|
921
922
|
def __init__(
|
|
922
923
|
self,
|
|
923
|
-
|
|
924
|
+
if_operation: Operation,
|
|
925
|
+
else_operation: Operation | None,
|
|
924
926
|
control_bit: int,
|
|
925
|
-
expected_value:
|
|
927
|
+
expected_value: bool = True,
|
|
926
928
|
comparison_kind: ComparisonKind = ...,
|
|
927
929
|
) -> None: ...
|
|
928
930
|
@property
|
|
929
|
-
def
|
|
930
|
-
"""The operation that is
|
|
931
|
+
def then_operation(self) -> Operation:
|
|
932
|
+
"""The operation that is executed if the condition is met."""
|
|
933
|
+
|
|
934
|
+
@property
|
|
935
|
+
def else_operation(self) -> Operation | None:
|
|
936
|
+
"""The operation that is executed if the condition is not met."""
|
|
931
937
|
|
|
932
938
|
@property
|
|
933
939
|
def control_register(self) -> ClassicalRegister | None:
|
|
@@ -938,22 +944,29 @@ class ClassicControlledOperation(Operation):
|
|
|
938
944
|
"""The classical bit that controls the operation."""
|
|
939
945
|
|
|
940
946
|
@property
|
|
941
|
-
def
|
|
947
|
+
def expected_value_register(self) -> int:
|
|
948
|
+
"""The expected value of the classical register.
|
|
949
|
+
|
|
950
|
+
The then-operation is executed if the value of the classical register matches the expected value based on the
|
|
951
|
+
kind of comparison.
|
|
952
|
+
The expected value is an integer that is interpreted as a binary number, where the least significant bit is at
|
|
953
|
+
the start index of the classical register.
|
|
954
|
+
"""
|
|
955
|
+
|
|
956
|
+
@property
|
|
957
|
+
def expected_value_bit(self) -> bool:
|
|
942
958
|
"""The expected value of the classical register.
|
|
943
959
|
|
|
944
|
-
The operation is
|
|
945
|
-
|
|
946
|
-
If the classical register is a single bit, the expected value is either 0 or 1.
|
|
947
|
-
Otherwise, the expected value is an integer that is interpreted as a binary number, where
|
|
948
|
-
the least significant bit is at the start index of the classical register.
|
|
960
|
+
The then-operation is executed if the value of the classical bit matches the expected value based on the
|
|
961
|
+
kind of comparison.
|
|
949
962
|
"""
|
|
950
963
|
|
|
951
964
|
@property
|
|
952
965
|
def comparison_kind(self) -> ComparisonKind:
|
|
953
966
|
"""The kind of comparison.
|
|
954
967
|
|
|
955
|
-
The operation is
|
|
956
|
-
|
|
968
|
+
The then-operation is executed if the value of the classical register matches the expected value based on the
|
|
969
|
+
kind of comparison.
|
|
957
970
|
"""
|
|
958
971
|
|
|
959
972
|
def add_control(self, control: Control) -> None:
|
mqt/core/ir.cp310-win_amd64.pyd
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
mqt/core/lib/mqt-core-dd.lib
CHANGED
|
Binary file
|
mqt/core/lib/mqt-core-ds.lib
CHANGED
|
Binary file
|
|
Binary file
|
mqt/core/lib/mqt-core-ir.lib
CHANGED
|
Binary file
|
|
Binary file
|
mqt/core/lib/mqt-core-na.lib
CHANGED
|
Binary file
|
mqt/core/lib/mqt-core-qasm.lib
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
mqt/core/lib/mqt-core-zx.lib
CHANGED
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
prefix=C:/Users/runneradmin/AppData/Local/Temp/tmpcp2xmopi/wheel/platlib/mqt/core
|
|
2
|
+
exec_prefix=${prefix}
|
|
3
|
+
includedir=${prefix}/include
|
|
4
|
+
libdir=${exec_prefix}/lib
|
|
5
|
+
|
|
6
|
+
Name: libspdlog
|
|
7
|
+
Description: Fast C++ logging library.
|
|
8
|
+
URL: https://github.com/gabime/spdlog
|
|
9
|
+
Version: 1.15.3
|
|
10
|
+
CFlags: -I${includedir} -DSPDLOG_COMPILED_LIB
|
|
11
|
+
Libs: -L${libdir} -lspdlog -pthread
|
|
12
|
+
Requires:
|
|
13
|
+
|
mqt/core/lib/spdlog.lib
ADDED
|
Binary file
|
mqt/core/na/__init__.py
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Copyright (c) 2023 - 2025 Chair for Design Automation, TUM
|
|
2
|
+
# Copyright (c) 2025 Munich Quantum Software Company GmbH
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
#
|
|
5
|
+
# SPDX-License-Identifier: MIT
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the MIT License
|
|
8
|
+
|
|
9
|
+
"""MQT Core NA - The MQT Core neutral atom module.
|
|
10
|
+
|
|
11
|
+
This module contains all neutral atom related functionality of MQT Core.
|
|
12
|
+
"""
|
|
Binary file
|
mqt/core/na/fomac.pyi
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Copyright (c) 2023 - 2025 Chair for Design Automation, TUM
|
|
2
|
+
# Copyright (c) 2025 Munich Quantum Software Company GmbH
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
#
|
|
5
|
+
# SPDX-License-Identifier: MIT
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the MIT License
|
|
8
|
+
|
|
9
|
+
"""Reconstruction of NADevice from QDMI's Device class."""
|
|
10
|
+
|
|
11
|
+
from collections.abc import Iterable
|
|
12
|
+
|
|
13
|
+
from ..fomac import Device as GenericDevice
|
|
14
|
+
|
|
15
|
+
__all__ = ["Device"]
|
|
16
|
+
|
|
17
|
+
class Device(GenericDevice):
|
|
18
|
+
"""Represents a device with a lattice of traps."""
|
|
19
|
+
|
|
20
|
+
class Vector:
|
|
21
|
+
"""Represents a 2D vector."""
|
|
22
|
+
|
|
23
|
+
x: int
|
|
24
|
+
"""
|
|
25
|
+
The x-coordinate of the vector.
|
|
26
|
+
"""
|
|
27
|
+
y: int
|
|
28
|
+
"""
|
|
29
|
+
The y-coordinate of the vector.
|
|
30
|
+
"""
|
|
31
|
+
def __eq__(self, other: object) -> bool: ...
|
|
32
|
+
def __ne__(self, other: object) -> bool: ...
|
|
33
|
+
|
|
34
|
+
class Region:
|
|
35
|
+
"""Represents a region in the device."""
|
|
36
|
+
|
|
37
|
+
origin: Device.Vector
|
|
38
|
+
"""
|
|
39
|
+
The origin of the region.
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
class Size:
|
|
43
|
+
"""Represents the size of a region."""
|
|
44
|
+
|
|
45
|
+
width: int
|
|
46
|
+
"""
|
|
47
|
+
The width of the region.
|
|
48
|
+
"""
|
|
49
|
+
height: int
|
|
50
|
+
"""
|
|
51
|
+
The height of the region.
|
|
52
|
+
"""
|
|
53
|
+
def __eq__(self, other: object) -> bool: ...
|
|
54
|
+
def __ne__(self, other: object) -> bool: ...
|
|
55
|
+
|
|
56
|
+
size: Size
|
|
57
|
+
"""
|
|
58
|
+
The size of the region.
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
def __eq__(self, other: object) -> bool: ...
|
|
62
|
+
def __ne__(self, other: object) -> bool: ...
|
|
63
|
+
|
|
64
|
+
class Lattice:
|
|
65
|
+
"""Represents a lattice of traps in the device."""
|
|
66
|
+
|
|
67
|
+
lattice_origin: Device.Vector
|
|
68
|
+
"""
|
|
69
|
+
The origin of the lattice.
|
|
70
|
+
"""
|
|
71
|
+
lattice_vector_1: Device.Vector
|
|
72
|
+
"""
|
|
73
|
+
The first lattice vector.
|
|
74
|
+
"""
|
|
75
|
+
lattice_vector_2: Device.Vector
|
|
76
|
+
"""
|
|
77
|
+
The second lattice vector.
|
|
78
|
+
"""
|
|
79
|
+
sublattice_offsets: Iterable[Device.Vector]
|
|
80
|
+
"""
|
|
81
|
+
The offsets of the sublattices.
|
|
82
|
+
"""
|
|
83
|
+
extent: Device.Region
|
|
84
|
+
"""
|
|
85
|
+
The extent of the lattice.
|
|
86
|
+
"""
|
|
87
|
+
def __eq__(self, other: object) -> bool: ...
|
|
88
|
+
def __ne__(self, other: object) -> bool: ...
|
|
89
|
+
|
|
90
|
+
traps: Iterable[Device.Lattice]
|
|
91
|
+
"""
|
|
92
|
+
The list of trap positions in the device.
|
|
93
|
+
"""
|
|
94
|
+
t1: int
|
|
95
|
+
"""
|
|
96
|
+
The T1 time of the device.
|
|
97
|
+
"""
|
|
98
|
+
t2: int
|
|
99
|
+
"""
|
|
100
|
+
The T2 time of the device.
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
@classmethod
|
|
104
|
+
def try_create_from_device(cls, device: GenericDevice) -> Device | None:
|
|
105
|
+
"""Create NA FoMaC Device from generic FoMaC Device.
|
|
106
|
+
|
|
107
|
+
Args:
|
|
108
|
+
device: The generic FoMaC Device to convert.
|
|
109
|
+
|
|
110
|
+
Returns:
|
|
111
|
+
The converted NA FoMaC Device or None if the conversion is not possible.
|
|
112
|
+
"""
|
|
113
|
+
def __eq__(self, other: object) -> bool: ...
|
|
114
|
+
def __ne__(self, other: object) -> bool: ...
|
|
115
|
+
|
|
116
|
+
def devices() -> Iterable[Device]:
|
|
117
|
+
"""Returns a list of available devices."""
|