From 505b5a854074984c233410803a5d5ee1c20e884e Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Fri, 15 Mar 2024 10:54:08 -0700 Subject: [PATCH 01/23] test: setup benchmarking --- .gitignore | 1 + Makefile | 5 +++ poetry.lock | 102 ++++++++++++++++++++++++++++++++++++++++++------- pyproject.toml | 9 +++-- 4 files changed, 100 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index 18c05e8c0..69ddc877f 100644 --- a/.gitignore +++ b/.gitignore @@ -53,6 +53,7 @@ coverage.xml *,cover .hypothesis/ .pytest_cache/ +prof/ # Translations *.mo diff --git a/Makefile b/Makefile index 08a2f245c..d5a67a474 100644 --- a/Makefile +++ b/Makefile @@ -90,3 +90,8 @@ docs/quil/grammars/Quil.g4: .PHONY: generate-parser generate-parser: docs/quil/grammars/Quil.g4 cd docs/quil/grammars && antlr -Dlanguage=Python3 -o ../../../pyquil/_parser/gen3 Quil.g4 + +.PHONY: benchmark +benchmark: + pytest -v test/bench --benchmark-only --profile + diff --git a/poetry.lock b/poetry.lock index dce0c52aa..bc395655a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -776,6 +776,17 @@ ufo = ["fs (>=2.2.0,<3)"] unicode = ["unicodedata2 (>=15.1.0)"] woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] +[[package]] +name = "gprof2dot" +version = "2022.7.29" +description = "Generate a dot graph from the output of several profilers." +optional = false +python-versions = ">=2.7" +files = [ + {file = "gprof2dot-2022.7.29-py2.py3-none-any.whl", hash = "sha256:f165b3851d3c52ee4915eb1bd6cca571e5759823c2cd0f71a79bda93c2dc85d6"}, + {file = "gprof2dot-2022.7.29.tar.gz", hash = "sha256:45b4d298bd36608fccf9511c3fd88a773f7a1abc04d6cd39445b11ba43133ec5"}, +] + [[package]] name = "h11" version = "0.14.0" @@ -1590,17 +1601,6 @@ nbformat = "*" sphinx = ">=1.8" traitlets = ">=5" -[[package]] -name = "nest-asyncio" -version = "1.6.0" -description = "Patch asyncio to allow nested event loops" -optional = false -python-versions = ">=3.5" -files = [ - {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, - {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, -] - [[package]] name = "networkx" version = "3.1" @@ -1992,6 +1992,17 @@ files = [ {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, ] +[[package]] +name = "py-cpuinfo" +version = "9.0.0" +description = "Get CPU info with pure Python" +optional = false +python-versions = "*" +files = [ + {file = "py-cpuinfo-9.0.0.tar.gz", hash = "sha256:3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690"}, + {file = "py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5"}, +] + [[package]] name = "pycodestyle" version = "2.7.0" @@ -2076,6 +2087,26 @@ tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +[[package]] +name = "pytest-benchmark" +version = "4.0.0" +description = "A ``pytest`` fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-benchmark-4.0.0.tar.gz", hash = "sha256:fb0785b83efe599a6a956361c0691ae1dbb5318018561af10f3e915caa0048d1"}, + {file = "pytest_benchmark-4.0.0-py3-none-any.whl", hash = "sha256:fdb7db64e31c8b277dff9850d2a2556d8b60bcb0ea6524e36e28ffd7c87f71d6"}, +] + +[package.dependencies] +py-cpuinfo = "*" +pytest = ">=3.8" + +[package.extras] +aspect = ["aspectlib"] +elasticsearch = ["elasticsearch"] +histogram = ["pygal", "pygaljs"] + [[package]] name = "pytest-cov" version = "4.1.0" @@ -2111,6 +2142,25 @@ pytest = ">=5.0" [package.extras] dev = ["pre-commit", "pytest-asyncio", "tox"] +[[package]] +name = "pytest-profiling" +version = "1.7.0" +description = "Profiling plugin for py.test" +optional = false +python-versions = "*" +files = [ + {file = "pytest-profiling-1.7.0.tar.gz", hash = "sha256:93938f147662225d2b8bd5af89587b979652426a8a6ffd7e73ec4a23e24b7f29"}, + {file = "pytest_profiling-1.7.0-py2.py3-none-any.whl", hash = "sha256:999cc9ac94f2e528e3f5d43465da277429984a1c237ae9818f8cfd0b06acb019"}, +] + +[package.dependencies] +gprof2dot = "*" +pytest = "*" +six = "*" + +[package.extras] +tests = ["pytest-virtualenv"] + [[package]] name = "pytest-rerunfailures" version = "12.0" @@ -2713,6 +2763,32 @@ files = [ {file = "ruamel.yaml.clib-0.2.8.tar.gz", hash = "sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512"}, ] +[[package]] +name = "ruff" +version = "0.3.2" +description = "An extremely fast Python linter and code formatter, written in Rust." +optional = false +python-versions = ">=3.7" +files = [ + {file = "ruff-0.3.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:77f2612752e25f730da7421ca5e3147b213dca4f9a0f7e0b534e9562c5441f01"}, + {file = "ruff-0.3.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9966b964b2dd1107797be9ca7195002b874424d1d5472097701ae8f43eadef5d"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b83d17ff166aa0659d1e1deaf9f2f14cbe387293a906de09bc4860717eb2e2da"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb875c6cc87b3703aeda85f01c9aebdce3d217aeaca3c2e52e38077383f7268a"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be75e468a6a86426430373d81c041b7605137a28f7014a72d2fc749e47f572aa"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:967978ac2d4506255e2f52afe70dda023fc602b283e97685c8447d036863a302"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1231eacd4510f73222940727ac927bc5d07667a86b0cbe822024dd00343e77e9"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c6d613b19e9a8021be2ee1d0e27710208d1603b56f47203d0abbde906929a9b"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8439338a6303585d27b66b4626cbde89bb3e50fa3cae86ce52c1db7449330a7"}, + {file = "ruff-0.3.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:de8b480d8379620cbb5ea466a9e53bb467d2fb07c7eca54a4aa8576483c35d36"}, + {file = "ruff-0.3.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b74c3de9103bd35df2bb05d8b2899bf2dbe4efda6474ea9681280648ec4d237d"}, + {file = "ruff-0.3.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f380be9fc15a99765c9cf316b40b9da1f6ad2ab9639e551703e581a5e6da6745"}, + {file = "ruff-0.3.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0ac06a3759c3ab9ef86bbeca665d31ad3aa9a4b1c17684aadb7e61c10baa0df4"}, + {file = "ruff-0.3.2-py3-none-win32.whl", hash = "sha256:9bd640a8f7dd07a0b6901fcebccedadeb1a705a50350fb86b4003b805c81385a"}, + {file = "ruff-0.3.2-py3-none-win_amd64.whl", hash = "sha256:0c1bdd9920cab5707c26c8b3bf33a064a4ca7842d91a99ec0634fec68f9f4037"}, + {file = "ruff-0.3.2-py3-none-win_arm64.whl", hash = "sha256:5f65103b1d76e0d600cabd577b04179ff592064eaa451a70a81085930e907d0b"}, + {file = "ruff-0.3.2.tar.gz", hash = "sha256:fa78ec9418eb1ca3db392811df3376b46471ae93792a81af2d1cbb0e5dcb5142"}, +] + [[package]] name = "scipy" version = "1.9.3" @@ -2792,7 +2868,7 @@ testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jar name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -optional = true +optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, @@ -3288,4 +3364,4 @@ latex = ["ipython"] [metadata] lock-version = "2.0" python-versions = "^3.8,<=3.12" -content-hash = "30cfab0707ba9f11a7a568bb0d026809911e4826287576886c194ef6b148c2b3" +content-hash = "e116e1c4c9fe066c72b88a6306104007d5c7a8ea4fbc2abfaa0ba608cf488165" diff --git a/pyproject.toml b/pyproject.toml index bcc040c07..2a638d8c9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,6 +31,8 @@ tenacity = "^8.2.2" types-python-dateutil = "^2.8.19" types-retry = "^0.9.9" packaging = "^23.1" +deprecated = "^1.2.13" +types-deprecated = "^1.2.9.2" # latex extra ipython = { version = "^7.21.0", optional = true } @@ -44,8 +46,6 @@ pandoc = {version = "2.4b0", optional = true} matplotlib = {version = "^3.7.1", optional = true} matplotlib-inline = {version = "^0.1.6", optional = true} seaborn = {version = "^0.12.2", optional = true} -deprecated = "^1.2.13" -types-deprecated = "^1.2.9.2" [tool.poetry.dev-dependencies] black = "^22.8.0" @@ -53,14 +53,15 @@ flake8 = "^3.8.1" pytest = "^7.4.0" pytest-cov = "^4.1.0" mypy = "^1.5.0" +ruff = "^0.3.2" toml = "^0.10.2" pytest-xdist = "^3.3.1" pytest-rerunfailures = "^12.0.0" pytest-timeout = "^1.4.2" pytest-mock = "^3.11.1" +pytest-benchmark = "^4.0.0" +pytest-profiling = "^1.7.0" respx = "^0.20" -nest-asyncio = "^1.5.6" -mock = { version = "^4.0", python = "<3.8" } syrupy = "^3.0.6" [tool.poetry.extras] From f11b491085e42f9f0847a61744d82fad529d9f3c Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Sun, 24 Mar 2024 09:50:48 -0700 Subject: [PATCH 02/23] split pyquil into python package and rust core --- .gitignore | 5 + poetry.lock | 32 +- pyproject.toml | 84 ++- pyquil/__init__.py | 5 - pyquil/simulation/__init__.py | 21 - pyquil/simulation/_numpy.py | 307 -------- pyquil/simulation/_reference.py | 364 ---------- pyquil/simulation/matrices.py | 454 ------------ pyquil/simulation/tools.py | 454 ------------ rust/Cargo.lock | 678 ++++++++++++++++++ rust/Cargo.toml | 22 + rust/src/conversion.rs | 92 +++ rust/src/expression/mod.rs | 46 ++ rust/src/instruction/declaration.rs | 145 ++++ rust/src/instruction/gate.rs | 19 + rust/src/instruction/mod.rs | 217 ++++++ rust/src/instruction/quilt.rs | 322 +++++++++ rust/src/lib.rs | 117 +++ rust/src/primitive/mod.rs | 11 + rust/src/primitive/qubit.rs | 90 +++ rust/src/program.rs | 129 ++++ src/pyquil/__init__.py | 7 + src/pyquil/_instruction/__init__.py | 3 + {pyquil => src/pyquil}/_version.py | 0 {pyquil => src/pyquil}/api/__init__.py | 0 .../pyquil}/api/_abstract_compiler.py | 0 {pyquil => src/pyquil}/api/_benchmark.py | 0 {pyquil => src/pyquil}/api/_compiler.py | 0 .../pyquil}/api/_compiler_client.py | 0 {pyquil => src/pyquil}/api/_errors.py | 0 {pyquil => src/pyquil}/api/_logger.py | 0 {pyquil => src/pyquil}/api/_qam.py | 0 {pyquil => src/pyquil}/api/_qpu.py | 0 .../pyquil}/api/_quantum_computer.py | 0 {pyquil => src/pyquil}/api/_qvm.py | 0 .../pyquil}/api/_rewrite_arithmetic.py | 0 .../pyquil}/api/_wavefunction_simulator.py | 0 {pyquil => src/pyquil}/conftest.py | 0 {pyquil => src/pyquil}/diagnostics.py | 0 {pyquil => src/pyquil}/experiment/__init__.py | 0 .../pyquil}/experiment/_calibration.py | 0 {pyquil => src/pyquil}/experiment/_group.py | 0 {pyquil => src/pyquil}/experiment/_main.py | 0 {pyquil => src/pyquil}/experiment/_memory.py | 0 {pyquil => src/pyquil}/experiment/_program.py | 0 {pyquil => src/pyquil}/experiment/_result.py | 0 {pyquil => src/pyquil}/experiment/_setting.py | 0 .../pyquil}/experiment/_symmetrization.py | 0 {pyquil => src/pyquil}/external/README.md | 0 {pyquil => src/pyquil}/external/__init__.py | 0 {pyquil => src/pyquil}/external/rpcq.py | 0 {pyquil => src/pyquil}/gates.py | 0 {pyquil => src/pyquil}/latex/__init__.py | 0 {pyquil => src/pyquil}/latex/_diagram.py | 0 {pyquil => src/pyquil}/latex/_ipython.py | 0 {pyquil => src/pyquil}/latex/_main.py | 0 .../pyquil}/latex/latex_generation.py | 0 {pyquil => src/pyquil}/noise.py | 0 {pyquil => src/pyquil}/noise_gates.py | 0 {pyquil => src/pyquil}/operator_estimation.py | 0 {pyquil => src/pyquil}/paulis.py | 0 {pyquil => src/pyquil}/py.typed | 0 {pyquil => src/pyquil}/pyqvm.py | 0 .../pyquil}/quantum_processor/__init__.py | 0 .../pyquil}/quantum_processor/_base.py | 0 .../pyquil}/quantum_processor/_isa.py | 0 .../pyquil}/quantum_processor/compiler.py | 0 .../pyquil}/quantum_processor/graph.py | 0 .../pyquil}/quantum_processor/qcs.py | 0 .../transformers/__init__.py | 0 .../transformers/compiler_isa_to_graph.py | 0 .../transformers/graph_to_compiler_isa.py | 0 .../transformers/qcs_isa_to_compiler_isa.py | 0 .../transformers/qcs_isa_to_graph.py | 0 {pyquil => src/pyquil}/quil.py | 0 {pyquil => src/pyquil}/quilatom.py | 93 +-- {pyquil => src/pyquil}/quilbase.py | 346 ++++----- {pyquil => src/pyquil}/quiltcalibrations.py | 0 {pyquil => src/pyquil}/quiltwaveforms.py | 0 {pyquil => src/pyquil}/wavefunction.py | 0 test/unit/test_quilbase.py | 75 +- 81 files changed, 2216 insertions(+), 1922 deletions(-) delete mode 100644 pyquil/__init__.py delete mode 100644 pyquil/simulation/__init__.py delete mode 100644 pyquil/simulation/_numpy.py delete mode 100644 pyquil/simulation/_reference.py delete mode 100644 pyquil/simulation/matrices.py delete mode 100644 pyquil/simulation/tools.py create mode 100644 rust/Cargo.lock create mode 100644 rust/Cargo.toml create mode 100644 rust/src/conversion.rs create mode 100644 rust/src/expression/mod.rs create mode 100644 rust/src/instruction/declaration.rs create mode 100644 rust/src/instruction/gate.rs create mode 100644 rust/src/instruction/mod.rs create mode 100644 rust/src/instruction/quilt.rs create mode 100644 rust/src/lib.rs create mode 100644 rust/src/primitive/mod.rs create mode 100644 rust/src/primitive/qubit.rs create mode 100644 rust/src/program.rs create mode 100644 src/pyquil/__init__.py create mode 100644 src/pyquil/_instruction/__init__.py rename {pyquil => src/pyquil}/_version.py (100%) rename {pyquil => src/pyquil}/api/__init__.py (100%) rename {pyquil => src/pyquil}/api/_abstract_compiler.py (100%) rename {pyquil => src/pyquil}/api/_benchmark.py (100%) rename {pyquil => src/pyquil}/api/_compiler.py (100%) rename {pyquil => src/pyquil}/api/_compiler_client.py (100%) rename {pyquil => src/pyquil}/api/_errors.py (100%) rename {pyquil => src/pyquil}/api/_logger.py (100%) rename {pyquil => src/pyquil}/api/_qam.py (100%) rename {pyquil => src/pyquil}/api/_qpu.py (100%) rename {pyquil => src/pyquil}/api/_quantum_computer.py (100%) rename {pyquil => src/pyquil}/api/_qvm.py (100%) rename {pyquil => src/pyquil}/api/_rewrite_arithmetic.py (100%) rename {pyquil => src/pyquil}/api/_wavefunction_simulator.py (100%) rename {pyquil => src/pyquil}/conftest.py (100%) rename {pyquil => src/pyquil}/diagnostics.py (100%) rename {pyquil => src/pyquil}/experiment/__init__.py (100%) rename {pyquil => src/pyquil}/experiment/_calibration.py (100%) rename {pyquil => src/pyquil}/experiment/_group.py (100%) rename {pyquil => src/pyquil}/experiment/_main.py (100%) rename {pyquil => src/pyquil}/experiment/_memory.py (100%) rename {pyquil => src/pyquil}/experiment/_program.py (100%) rename {pyquil => src/pyquil}/experiment/_result.py (100%) rename {pyquil => src/pyquil}/experiment/_setting.py (100%) rename {pyquil => src/pyquil}/experiment/_symmetrization.py (100%) rename {pyquil => src/pyquil}/external/README.md (100%) rename {pyquil => src/pyquil}/external/__init__.py (100%) rename {pyquil => src/pyquil}/external/rpcq.py (100%) rename {pyquil => src/pyquil}/gates.py (100%) rename {pyquil => src/pyquil}/latex/__init__.py (100%) rename {pyquil => src/pyquil}/latex/_diagram.py (100%) rename {pyquil => src/pyquil}/latex/_ipython.py (100%) rename {pyquil => src/pyquil}/latex/_main.py (100%) rename {pyquil => src/pyquil}/latex/latex_generation.py (100%) rename {pyquil => src/pyquil}/noise.py (100%) rename {pyquil => src/pyquil}/noise_gates.py (100%) rename {pyquil => src/pyquil}/operator_estimation.py (100%) rename {pyquil => src/pyquil}/paulis.py (100%) rename {pyquil => src/pyquil}/py.typed (100%) rename {pyquil => src/pyquil}/pyqvm.py (100%) rename {pyquil => src/pyquil}/quantum_processor/__init__.py (100%) rename {pyquil => src/pyquil}/quantum_processor/_base.py (100%) rename {pyquil => src/pyquil}/quantum_processor/_isa.py (100%) rename {pyquil => src/pyquil}/quantum_processor/compiler.py (100%) rename {pyquil => src/pyquil}/quantum_processor/graph.py (100%) rename {pyquil => src/pyquil}/quantum_processor/qcs.py (100%) rename {pyquil => src/pyquil}/quantum_processor/transformers/__init__.py (100%) rename {pyquil => src/pyquil}/quantum_processor/transformers/compiler_isa_to_graph.py (100%) rename {pyquil => src/pyquil}/quantum_processor/transformers/graph_to_compiler_isa.py (100%) rename {pyquil => src/pyquil}/quantum_processor/transformers/qcs_isa_to_compiler_isa.py (100%) rename {pyquil => src/pyquil}/quantum_processor/transformers/qcs_isa_to_graph.py (100%) rename {pyquil => src/pyquil}/quil.py (100%) rename {pyquil => src/pyquil}/quilatom.py (95%) rename {pyquil => src/pyquil}/quilbase.py (94%) rename {pyquil => src/pyquil}/quiltcalibrations.py (100%) rename {pyquil => src/pyquil}/quiltwaveforms.py (100%) rename {pyquil => src/pyquil}/wavefunction.py (100%) diff --git a/.gitignore b/.gitignore index 69ddc877f..df76d5add 100644 --- a/.gitignore +++ b/.gitignore @@ -190,3 +190,8 @@ fabric.properties node_modules/ + + +# Added by cargo + +/target diff --git a/poetry.lock b/poetry.lock index bc395655a..bd9aed0d8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1356,6 +1356,35 @@ files = [ [package.dependencies] traitlets = "*" +[[package]] +name = "maturin" +version = "1.5.0" +description = "Build and publish crates with pyo3, rust-cpython and cffi bindings as well as rust binaries as python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "maturin-1.5.0-py3-none-linux_armv6l.whl", hash = "sha256:0b976116b7cfaafbc8c3f0acfaec6702520c49e86e48ea80e2c282b7f8118c1a"}, + {file = "maturin-1.5.0-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:d277adf9b27143627ba7be7ea254513d3e85008fb16a94638b56884a41b4e5a2"}, + {file = "maturin-1.5.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:d6a314472e07b6bdfa4cdf97d24cda1defe008d36d4b75de2efd3383e7a2d7bf"}, + {file = "maturin-1.5.0-py3-none-manylinux_2_12_i686.manylinux2010_i686.musllinux_1_1_i686.whl", hash = "sha256:a5c038ded82c7595d99e94a208aa8af2b5c94eef4c8fcf5ef6e841957e506201"}, + {file = "maturin-1.5.0-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl", hash = "sha256:faa0d099a8045afc9977284cb3a1c26e5ebc9a7f0fe4d53b7ee17f62fd279f4a"}, + {file = "maturin-1.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:9cba3737cb92ce5c1bd82cbb9b1fde412b2aac8882ac38b8340980f5eb858d8c"}, + {file = "maturin-1.5.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.musllinux_1_1_armv7l.whl", hash = "sha256:1b29bf8771f27d2e6b2685c82de952b5732ee79e5c0030ffd5dab5ccb99137a1"}, + {file = "maturin-1.5.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.musllinux_1_1_ppc64le.whl", hash = "sha256:f271f315fb78d2ff5fdf60f8d3ada2a04a66ac6fbd3cbb318c4eb4e9766449bc"}, + {file = "maturin-1.5.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76e3270ff87b5484976d23e3d88475cd64acf41b54f561263f253d8fca0baab3"}, + {file = "maturin-1.5.0-py3-none-win32.whl", hash = "sha256:eb35dfe5994ad2c34d2874a73720847ecc2adb28f934e9a7cbcdb8826b240e60"}, + {file = "maturin-1.5.0-py3-none-win_amd64.whl", hash = "sha256:b3a499ff5960e46115488e68011809ce99857864ce3a91cf5d0fff3adbd89e8c"}, + {file = "maturin-1.5.0-py3-none-win_arm64.whl", hash = "sha256:2e4c01370a5c10b6c4887bee66d3582bdb38c3805168c1393f072bd266da08d4"}, + {file = "maturin-1.5.0.tar.gz", hash = "sha256:e046ea2aed687991d58c42f6276dfcc0c037092934654f538b5877fd57dd3a9c"}, +] + +[package.dependencies] +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} + +[package.extras] +patchelf = ["patchelf"] +zig = ["ziglang (>=0.10.0,<0.11.0)"] + [[package]] name = "mccabe" version = "0.6.1" @@ -3359,9 +3388,10 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [extras] docs = ["Sphinx", "matplotlib", "nbsphinx", "pandoc", "recommonmark", "seaborn", "sphinx-rtd-theme"] +grpc-web = [] latex = ["ipython"] [metadata] lock-version = "2.0" python-versions = "^3.8,<=3.12" -content-hash = "e116e1c4c9fe066c72b88a6306104007d5c7a8ea4fbc2abfaa0ba608cf488165" +content-hash = "72b9c1dd80c1b4b46b8050442411b25ccd63e7a15cb2223388ababb9a6fc9636" diff --git a/pyproject.toml b/pyproject.toml index 2a638d8c9..c23d339a3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,19 @@ +[project] +name = "pyquil" +requires-python = ">=3.8" +classifiers = [ + "Programming Language :: Rust", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", + "Development Status :: 5 - Production/Stable", + "License :: OSI Approved :: Apache Software License", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", +] + [tool.poetry] name = "pyquil" version = "4.8.0" @@ -12,7 +28,6 @@ classifiers = [ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", - "Operating System :: OS Independent", ] keywords = ["quantum", "quil", "programming", "hybrid"] packages = [{ include = "pyquil" }] @@ -63,18 +78,17 @@ pytest-benchmark = "^4.0.0" pytest-profiling = "^1.7.0" respx = "^0.20" syrupy = "^3.0.6" +maturin = "^1.5.0" [tool.poetry.extras] latex = ["ipython"] docs = ["Sphinx", "sphinx-rtd-theme", "nbsphinx", "recommonmark", "pandoc", "matplotlib", "seaborn", "toml"] +grpc-web = ["qcs-sdk-python-grpc-web"] [tool.poetry.group.dev.dependencies] setuptools = {version = "^69.0.2", python = ">=3.12"} mypy = "^1.8.0" -[tool.ruff] -line-length = 120 - [tool.black] line-length = 120 target-version = ['py38'] @@ -100,9 +114,67 @@ exclude = ''' ) ''' +[tool.ruff] +# Exclude a variety of commonly ignored directories. +exclude = [ + ".bzr", + ".direnv", + ".eggs", + ".git", + ".git-rewrite", + ".hg", + ".ipynb_checkpoints", + ".mypy_cache", + ".nox", + ".pants.d", + ".pyenv", + ".pytest_cache", + ".pytype", + ".ruff_cache", + ".svn", + ".tox", + ".venv", + ".vscode", + "__pypackages__", + "_build", + "buck-out", + "build", + "dist", + "node_modules", + "site-packages", + "venv", +] +# Same as Black. +line-length = 120 +indent-width = 4 +# Assume Python 3.8 +target-version = "py38" + +[tool.ruff.lint] +select = ["D", "E4", "E7", "E9", "F", "I", "B", "S", "W"] +ignore = [] +# Allow fix for all enabled rules (when `--fix`) is provided. +fixable = ["ALL"] +unfixable = [] +# Allow unused variables when underscore-prefixed. +dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" + +[tool.ruff.format] +# Like Black, use double quotes for strings. +quote-style = "double" +# Like Black, indent with spaces, rather than tabs. +indent-style = "space" +# Like Black, respect magic trailing commas. +skip-magic-trailing-comma = false +# Like Black, automatically detect the appropriate line ending. +line-ending = "auto" + [tool.pytest.ini_options] filterwarnings = ["ignore::DeprecationWarning:pyquil.*:", "ignore::DeprecationWarning:test.unit.*:"] [build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" +requires = ["maturin>=1,<2"] +build-backend = "maturin" + +[tool.maturin] +module-name = "pyquil._core" diff --git a/pyquil/__init__.py b/pyquil/__init__.py deleted file mode 100644 index 18127d0e3..000000000 --- a/pyquil/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from pyquil._version import pyquil_version -from pyquil.quil import Program -from pyquil.api import list_quantum_computers, get_qc - -__version__ = pyquil_version diff --git a/pyquil/simulation/__init__.py b/pyquil/simulation/__init__.py deleted file mode 100644 index 088a03965..000000000 --- a/pyquil/simulation/__init__.py +++ /dev/null @@ -1,21 +0,0 @@ -__all__ = [ - "get_measure_probabilities", - "NumpyWavefunctionSimulator", - "ReferenceDensitySimulator", - "ReferenceWavefunctionSimulator", - "targeted_einsum", - "targeted_tensordot", - "zero_state_matrix", -] - -from pyquil.simulation._numpy import ( - NumpyWavefunctionSimulator, - get_measure_probabilities, - targeted_einsum, - targeted_tensordot, -) -from pyquil.simulation._reference import ( - ReferenceDensitySimulator, - ReferenceWavefunctionSimulator, - zero_state_matrix, -) diff --git a/pyquil/simulation/_numpy.py b/pyquil/simulation/_numpy.py deleted file mode 100644 index 6f28d922c..000000000 --- a/pyquil/simulation/_numpy.py +++ /dev/null @@ -1,307 +0,0 @@ -############################################################################## -# Copyright 2016-2019 Rigetti Computing -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -############################################################################## -from typing import Any, List, Optional, Sequence, Tuple, Union, cast - -import numpy as np -from numpy.random.mtrand import RandomState - -from pyquil.paulis import PauliTerm, PauliSum -from pyquil.pyqvm import AbstractQuantumSimulator -from pyquil.quilbase import Gate -from pyquil.simulation.matrices import QUANTUM_GATES - -# The following function is lovingly copied from the Cirq project -# https://github.com/quantumlib/Cirq -# -# With the original copyright disclaimer: -# Copyright 2018 The Cirq Developers -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -from pyquil.simulation.tools import all_bitstrings - - -def targeted_einsum(gate: np.ndarray, wf: np.ndarray, wf_target_inds: List[int]) -> np.ndarray: - """Left-multiplies the given axes of the wf tensor by the given gate matrix. - - Note that the matrix must have a compatible tensor structure. - For example, if you have an 6-qubit state vector ``wf`` with shape - (2, 2, 2, 2, 2, 2), and a 2-qubit unitary operation ``op`` with shape - (2, 2, 2, 2), and you want to apply ``op`` to the 5th and 3rd qubits - within ``input_state``, then the output state vector is computed as follows:: - - output_state = targeted_einsum(op, input_state, [5, 3]) - - This method also works when the right hand side is a matrix instead of a - vector. If a unitary circuit's matrix is ``old_effect``, and you append - a CNOT(q1, q4) operation onto the circuit, where the control q1 is the qubit - at offset 1 and the target q4 is the qubit at offset 4, then the appended - circuit's unitary matrix is computed as follows:: - - new_effect = targeted_left_multiply(CNOT.reshape((2, 2, 2, 2)), old_effect, [1, 4]) - - :param gate: What to left-multiply the target tensor by. - :param wf: A tensor to carefully broadcast a left-multiply over. - :param wf_target_inds: Which axes of the target are being operated on. - :returns: The output tensor. - """ - k = len(wf_target_inds) - d = len(wf.shape) - work_indices = tuple(range(k)) - data_indices = tuple(range(k, k + d)) - used_data_indices = tuple(data_indices[q] for q in wf_target_inds) - input_indices = work_indices + used_data_indices - output_indices = list(data_indices) - for w, t in zip(work_indices, wf_target_inds): - output_indices[t] = w - - # TODO: `out` does not work if input matrices share memory with outputs, as is usually - # TODO: the case when propogating a wavefunction. This might be fixed in numpy 1.15 - # https://github.com/numpy/numpy/pull/11286 - # It might be worth re-investigating memory savings with `out` when numpy 1.15 becomes - # commonplace. - - return np.einsum(gate, input_indices, wf, data_indices, output_indices) # type: ignore - - -def targeted_tensordot(gate: np.ndarray, wf: np.ndarray, wf_target_inds: Sequence[int]) -> np.ndarray: - """Left-multiplies the given axes of the wf tensor by the given gate matrix. - - Compare with :py:func:`targeted_einsum`. The semantics of these two functions should be - identical, except this uses ``np.tensordot`` instead of ``np.einsum``. - - :param gate: What to left-multiply the target tensor by. - :param wf: A tensor to carefully broadcast a left-multiply over. - :param wf_target_inds: Which axes of the target are being operated on. - :returns: The output tensor. - """ - gate_n_qubits = gate.ndim // 2 - n_qubits = wf.ndim - - # the indices we want to sum over are the final half - gate_inds = np.arange(gate_n_qubits, 2 * gate_n_qubits) - assert len(wf_target_inds) == len(gate_inds), (wf_target_inds, gate_inds) - wf = np.tensordot(gate, wf, (gate_inds, wf_target_inds)) - - # tensordot dumps "output" indices into 0, 1, .. gate_n_qubits - # we need to move them to the right place. - - # First create a list of all the "unaffected" indices which is everything but the - # first `gate_n_qubits` - axes_ordering = list(range(gate_n_qubits, n_qubits)) - - # We want to "insert" the affected indices into the right place. This means - # we have to be extra careful about calling list.insert in the correct order. - # Namely, we have to insert low target indices first. - where_td_put_them = np.arange(gate_n_qubits) - sorty = np.argsort(wf_target_inds) - where_td_put_them = where_td_put_them[sorty] - sorted_targets = np.asarray(wf_target_inds)[sorty] - # now that everything is sorted, we can do the insertion. - for target_ind, from_ind in zip(sorted_targets, where_td_put_them): - axes_ordering.insert(target_ind, from_ind) - - # A quick call to transpose gives us the right thing. - return wf.transpose(axes_ordering) - - -def get_measure_probabilities(wf: np.ndarray, qubit: int) -> np.ndarray: - """ - Get the probabilities of measuring a qubit. - - :param wf: The statevector with a dimension for each qubit - :param qubit: The qubit to measure. We will sum over every axis except this one. - :return: A vector of classical probabilities. - """ - n_qubits = len(wf.shape) - all_inds = list(range(n_qubits)) - - return np.einsum(np.conj(wf), all_inds, wf, all_inds, [int(qubit)]) # type: ignore - - -def _get_gate_tensor_and_qubits(gate: Gate) -> Tuple[np.ndarray, List[int]]: - """Given a gate ``Instruction``, turn it into a matrix and extract qubit indices. - - :param gate: the instruction - :return: tensor, qubit_inds. - """ - if len(gate.params) > 0: - matrix = QUANTUM_GATES[gate.name](*gate.params) - else: - matrix = QUANTUM_GATES[gate.name] - - qubit_inds = gate.get_qubit_indices() - - # e.g. 2-qubit matrix is 4x4; turns into (2,2,2,2) tensor. - tensor = np.reshape(matrix, (2,) * len(qubit_inds) * 2) - - return tensor, qubit_inds - - -def _term_expectation(wf: np.ndarray, term: PauliTerm) -> Any: - # Computes - wf2 = wf - for qubit_i, op_str in term._ops.items(): - assert isinstance(qubit_i, int) - # Re-use QUANTUM_GATES since it has X, Y, Z - op_mat = QUANTUM_GATES[op_str] - wf2 = targeted_tensordot(gate=op_mat, wf=wf2, wf_target_inds=[qubit_i]) - - # `wf2` is XYZ..XXZ|psi> - # hit it with a np.ndarray: - """ - Sample bitstrings from the distribution defined by the wavefunction. - - Qubit 0 is at ``out[:, 0]``. - - :param n_samples: The number of bitstrings to sample - :return: An array of shape (n_samples, n_qubits) - """ - if self.rs is None: - raise ValueError( - "You have tried to perform a stochastic operation without setting the " - "random state of the simulator. Might I suggest using a PyQVM object?" - ) - - # note on reshape: it puts bitstrings in lexicographical order. - # would you look at that .. _all_bitstrings returns things in lexicographical order! - # reminder: qubit 0 is on the left in einsum simulator. - probabilities = np.abs(self.wf.reshape(-1)) ** 2 - possible_bitstrings = all_bitstrings(self.n_qubits) - inds = self.rs.choice(2**self.n_qubits, n_samples, p=probabilities) - return possible_bitstrings[inds, :] - - def do_measurement(self, qubit: int) -> int: - """ - Measure a qubit, collapse the wavefunction, and return the measurement result. - - :param qubit: Index of the qubit to measure. - :return: measured bit - """ - if self.rs is None: - raise ValueError( - "You have tried to perform a stochastic operation without setting the " - "random state of the simulator. Might I suggest using a PyQVM object?" - ) - - # Get probabilities - measurement_probs = get_measure_probabilities(self.wf, qubit) - - # Flip a coin and record the result - measured_bit = int(np.argmax(self.rs.uniform() < np.cumsum(measurement_probs))) - - # Zero out amplitudes corresponding to non-measured bistrings - other_bit = (measured_bit + 1) % 2 - other_bit_indices = (slice(None),) * qubit + (other_bit,) + (slice(None),) * (self.n_qubits - qubit - 1) - self.wf[other_bit_indices] = 0 - - # Re-normalize amplitudes corresponding to measured bistrings - meas_bit_indices = (slice(None),) * qubit + (measured_bit,) + (slice(None),) * (self.n_qubits - qubit - 1) - self.wf[meas_bit_indices] /= np.sqrt(measurement_probs[measured_bit]) - return measured_bit - - def do_gate(self, gate: Gate) -> "NumpyWavefunctionSimulator": - """ - Perform a gate. - - :return: ``self`` to support method chaining. - """ - gate_matrix, qubit_inds = _get_gate_tensor_and_qubits(gate=gate) - # Note to developers: you can use either einsum- or tensordot- based functions. - # tensordot seems a little faster, but feel free to experiment. - # self.wf = targeted_einsum(gate=gate_matrix, wf=self.wf, wf_target_inds=qubit_inds) - self.wf = targeted_tensordot(gate=gate_matrix, wf=self.wf, wf_target_inds=qubit_inds) - return self - - def do_gate_matrix(self, matrix: np.ndarray, qubits: Sequence[int]) -> "NumpyWavefunctionSimulator": - """ - Apply an arbitrary unitary; not necessarily a named gate. - - :param matrix: The unitary matrix to apply. No checks are done - :param qubits: A list of qubits to apply the unitary to. - :return: ``self`` to support method chaining. - """ - # e.g. 2-qubit matrix is 4x4; turns into (2,2,2,2) tensor. - tensor = np.reshape(matrix, (2,) * len(qubits) * 2) - - # Note to developers: you can use either einsum- or tensordot- based functions. - # tensordot seems a little faster, but feel free to experiment. - # self.wf = targeted_einsum(gate=gate_matrix, wf=self.wf, wf_target_inds=qubits) - self.wf = targeted_tensordot(gate=tensor, wf=self.wf, wf_target_inds=qubits) - return self - - def expectation(self, operator: Union[PauliTerm, PauliSum]) -> float: - """ - Compute the expectation of an operator. - - :param operator: The operator - :return: The operator's expectation value - """ - if not isinstance(operator, PauliSum): - operator = PauliSum([operator]) - - return sum(_term_expectation(self.wf, term) for term in operator) # type: ignore - - def reset(self) -> "NumpyWavefunctionSimulator": - """ - Reset the wavefunction to the ``|000...00>`` state. - - :return: ``self`` to support method chaining. - """ - self.wf.fill(0) - self.wf[(0,) * self.n_qubits] = complex(1.0, 0) - return self - - def do_post_gate_noise(self, noise_type: str, noise_prob: float, qubits: List[int]) -> "AbstractQuantumSimulator": - raise NotImplementedError("The numpy simulator cannot handle noise") diff --git a/pyquil/simulation/_reference.py b/pyquil/simulation/_reference.py deleted file mode 100644 index ea6f77bcc..000000000 --- a/pyquil/simulation/_reference.py +++ /dev/null @@ -1,364 +0,0 @@ -############################################################################## -# Copyright 2016-2019 Rigetti Computing -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -############################################################################## -import warnings -from typing import Any, List, Optional, Sequence, Union - -import numpy as np -from numpy.random.mtrand import RandomState - -from pyquil.paulis import PauliTerm, PauliSum -from pyquil.pyqvm import AbstractQuantumSimulator -from pyquil.quilbase import Gate -from pyquil.simulation.matrices import P0, P1, KRAUS_OPS, QUANTUM_GATES -from pyquil.simulation.tools import lifted_gate_matrix, lifted_gate, all_bitstrings - - -def _term_expectation(wf: np.ndarray, term: PauliTerm, n_qubits: int) -> Any: - # Computes - wf2 = wf - for qubit_i, op_str in term._ops.items(): - assert isinstance(qubit_i, int) - # Re-use QUANTUM_GATES since it has X, Y, Z - op_mat = QUANTUM_GATES[op_str] - op_mat = lifted_gate_matrix(matrix=op_mat, qubit_inds=[qubit_i], n_qubits=n_qubits) - wf2 = op_mat @ wf2 - - if not isinstance(term.coefficient, complex): - raise TypeError("Operation only supported for complex numbers") - - # `wf2` is XYZ..XXZ|psi> - # hit it with a bool: - """ - Checks if a quantum state is valid, i.e. the matrix is Hermitian; trace one, and that the - eigenvalues are non-negative. - - :param state_matrix: a D by D np.ndarray representing a quantum state - :param rtol: The relative tolerance parameter in np.allclose and np.isclose - :param atol: The absolute tolerance parameter in np.allclose and np.isclose - :return: bool - """ - hermitian = np.allclose(state_matrix, np.conjugate(state_matrix.transpose()), rtol, atol) - if not hermitian: - raise ValueError("The state matrix is not Hermitian.") - trace_one = np.isclose(np.trace(state_matrix), 1, rtol, atol) - if not trace_one: - raise ValueError("The state matrix is not trace one.") - evals = np.linalg.eigvals(state_matrix) - non_neg_eigs = all([False if val < -atol else True for val in evals]) - if not non_neg_eigs: - raise ValueError("The state matrix has negative Eigenvalues of order -" + str(atol) + ".") - return hermitian and trace_one and non_neg_eigs - - -class ReferenceWavefunctionSimulator(AbstractQuantumSimulator): - def __init__(self, n_qubits: int, rs: Optional[RandomState] = None): - """ - A wavefunction simulator that prioritizes readability over performance. - - Please consider using - :py:class:`PyQVM(..., wf_simulator_type=ReferenceWavefunctionSimulator)` rather - than using this class directly. - - This class uses a flat state-vector of length 2^n_qubits to store wavefunction - amplitudes. The basis is taken to be bitstrings ordered lexicographically with - qubit 0 as the rightmost bit. This is the same as the Rigetti Lisp QVM. - - :param n_qubits: Number of qubits to simulate. - :param rs: a RandomState (should be shared with the owning :py:class:`PyQVM`) for - doing anything stochastic. A value of ``None`` disallows doing anything stochastic. - """ - super().__init__(n_qubits=n_qubits, rs=rs) - - self.n_qubits = n_qubits - self.rs = rs - - self.wf = np.zeros(2**n_qubits, dtype=np.complex128) - self.wf[0] = complex(1.0, 0) - - def sample_bitstrings(self, n_samples: int) -> np.ndarray: - """ - Sample bitstrings from the distribution defined by the wavefunction. - - Qubit 0 is at ``out[:, 0]``. - - :param n_samples: The number of bitstrings to sample - :return: An array of shape (n_samples, n_qubits) - """ - if self.rs is None: - raise ValueError( - "You have tried to perform a stochastic operation without setting the " - "random state of the simulator. Might I suggest using a PyQVM object?" - ) - probabilities = np.abs(self.wf) ** 2 - possible_bitstrings = all_bitstrings(self.n_qubits) - inds = self.rs.choice(2**self.n_qubits, n_samples, p=probabilities) - bitstrings = possible_bitstrings[inds, :] - bitstrings = np.flip(bitstrings, axis=1) - return bitstrings - - def do_gate(self, gate: Gate) -> "ReferenceWavefunctionSimulator": - """ - Perform a gate. - - :return: ``self`` to support method chaining. - """ - unitary = lifted_gate(gate=gate, n_qubits=self.n_qubits) - self.wf = unitary.dot(self.wf) - return self - - def do_gate_matrix(self, matrix: np.ndarray, qubits: Sequence[int]) -> "ReferenceWavefunctionSimulator": - """ - Apply an arbitrary unitary; not necessarily a named gate. - - :param matrix: The unitary matrix to apply. No checks are done. - :param qubits: The qubits to apply the unitary to. - :return: ``self`` to support method chaining. - """ - unitary = lifted_gate_matrix(matrix, list(qubits), n_qubits=self.n_qubits) - self.wf = unitary.dot(self.wf) - return self - - def do_measurement(self, qubit: int) -> int: - """ - Measure a qubit, collapse the wavefunction, and return the measurement result. - - :param qubit: Index of the qubit to measure. - :return: measured bit - """ - if self.rs is None: - raise ValueError( - "You have tried to perform a stochastic operation without setting the " - "random state of the simulator. Might I suggest using a PyQVM object?" - ) - # lift projective measure operator to Hilbert space - # prob(0) = = psi* . P0* . P0 . psi - measure_0 = lifted_gate_matrix(matrix=P0, qubit_inds=[qubit], n_qubits=self.n_qubits) - proj_psi = measure_0 @ self.wf - prob_zero = np.conj(proj_psi).T @ proj_psi - - # generate random number to 'roll' for measure - if self.rs.uniform() < prob_zero: - # decohere state using the measure_0 operator - unitary = measure_0 @ (np.eye(2**self.n_qubits) / np.sqrt(prob_zero)) - self.wf = unitary.dot(self.wf) - return 0 - else: # measure one - measure_1 = lifted_gate_matrix(matrix=P1, qubit_inds=[qubit], n_qubits=self.n_qubits) - unitary = measure_1 @ (np.eye(2**self.n_qubits) / np.sqrt(1 - prob_zero)) - self.wf = unitary.dot(self.wf) - return 1 - - def expectation(self, operator: Union[PauliTerm, PauliSum]) -> float: - """ - Compute the expectation of an operator. - - :param operator: The operator - :return: The operator's expectation value - """ - if not isinstance(operator, PauliSum): - operator = PauliSum([operator]) - - return sum(_term_expectation(self.wf, term, n_qubits=self.n_qubits) for term in operator) # type: ignore - - def reset(self) -> "ReferenceWavefunctionSimulator": - """ - Reset the wavefunction to the ``|000...00>`` state. - - :return: ``self`` to support method chaining. - """ - self.wf.fill(0) - self.wf[0] = complex(1.0, 0) - return self - - def do_post_gate_noise(self, noise_type: str, noise_prob: float, qubits: List[int]) -> "AbstractQuantumSimulator": - raise NotImplementedError("The reference wavefunction simulator cannot handle noise") - - -def zero_state_matrix(n_qubits: int) -> np.ndarray: - """ - Construct a matrix corresponding to the tensor product of `n` ground states ``|0><0|``. - - :param n_qubits: The number of qubits. - :return: The state matrix ``|000...0><000...0|`` for `n_qubits`. - """ - state_matrix = np.zeros((2**n_qubits, 2**n_qubits), dtype=np.complex128) - state_matrix[0, 0] = complex(1.0, 0) - return state_matrix - - -class ReferenceDensitySimulator(AbstractQuantumSimulator): - """ - A density matrix simulator that prioritizes readability over performance. - - Please consider using - :py:class:`PyQVM(..., wf_simulator_type=ReferenceDensitySimulator)` rather - than using this class directly. - - This class uses a dense matrix of shape ``(2^n_qubits, 2^n_qubits)`` to store the - density matrix. - - :param n_qubits: Number of qubits to simulate. - :param rs: a RandomState (should be shared with the owning :py:class:`PyQVM`) for - doing anything stochastic. A value of ``None`` disallows doing anything stochastic. - """ - - def __init__(self, n_qubits: int, rs: Optional[RandomState] = None): - super().__init__(n_qubits=n_qubits, rs=rs) - - self.n_qubits = n_qubits - self.rs = rs - self.density: np.ndarray - self.set_initial_state(zero_state_matrix(n_qubits)).reset() - - def set_initial_state(self, state_matrix: np.ndarray) -> "ReferenceDensitySimulator": - """ - This method is the correct way (TM) to update the initial state matrix that is - initialized every time reset() is called. The default initial state of - ReferenceDensitySimulator is ``|000...00>``. - - Note that the current state matrix, i.e. ``self.density`` is not affected by this - method; you must change it directly or else call reset() after calling this method. - - To restore default state initialization behavior of ReferenceDensitySimulator pass in - a ``state_matrix`` equal to the default initial state on `n_qubits` (i.e. ``|000...00>``) - and then call ``reset()``. We have provided a helper function ``n_qubit_zero_state`` - in the ``_reference.py`` module to simplify this step. - - :param state_matrix: numpy.ndarray or None. - :return: ``self`` to support method chaining. - """ - rows, cols = state_matrix.shape - if rows != cols: - raise ValueError("The state matrix is not square.") - if self.n_qubits != int(np.log2(rows)): - raise ValueError("The state matrix is not defined on the same numbers of qubits as the QVM.") - if _is_valid_quantum_state(state_matrix): - self.initial_density = state_matrix - else: - raise ValueError( - "The state matrix is not valid. It must be Hermitian, trace one, " "and have non-negative eigenvalues." - ) - return self - - def sample_bitstrings(self, n_samples: int, tol_factor: float = 1e8) -> np.ndarray: - """ - Sample bitstrings from the distribution defined by the wavefunction. - - Qubit 0 is at ``out[:, 0]``. - - :param n_samples: The number of bitstrings to sample - :param tol_factor: Tolerance to set imaginary probabilities to zero, relative to - machine epsilon. - :return: An array of shape (n_samples, n_qubits) - """ - if self.rs is None: - raise ValueError( - "You have tried to perform a stochastic operation without setting the " - "random state of the simulator. Might I suggest using a PyQVM object?" - ) - - # for np.real_if_close the actual tolerance is (machine_eps * tol_factor), - # where `machine_epsilon = np.finfo(float).eps`. If we use tol_factor = 1e8, then the - # overall tolerance is \approx 2.2e-8. - probabilities = np.real_if_close(np.diagonal(self.density), tol=tol_factor) - # Next set negative probabilities to zero - probabilities = np.array([0 if p < 0.0 else p for p in probabilities]) - # Ensure they sum to one - probabilities = probabilities / np.sum(probabilities) - possible_bitstrings = all_bitstrings(self.n_qubits) - inds = self.rs.choice(2**self.n_qubits, n_samples, p=probabilities) - bitstrings = possible_bitstrings[inds, :] - bitstrings: np.ndarray = np.flip(bitstrings, axis=1) - return bitstrings - - def do_gate(self, gate: Gate) -> "AbstractQuantumSimulator": - """ - Perform a gate. - - :return: ``self`` to support method chaining. - """ - unitary = lifted_gate(gate=gate, n_qubits=self.n_qubits) - self.density = unitary.dot(self.density).dot(np.conj(unitary).T) - return self - - def do_gate_matrix(self, matrix: np.ndarray, qubits: Sequence[int]) -> "AbstractQuantumSimulator": - """ - Apply an arbitrary unitary; not necessarily a named gate. - - :param matrix: The unitary matrix to apply. No checks are done - :param qubits: A list of qubits to apply the unitary to. - :return: ``self`` to support method chaining. - """ - unitary = lifted_gate_matrix(matrix=matrix, qubit_inds=qubits, n_qubits=self.n_qubits) - self.density = unitary.dot(self.density).dot(np.conj(unitary).T) - return self - - def do_measurement(self, qubit: int) -> int: - """ - Measure a qubit and collapse the wavefunction - - :return: The measurement result. A 1 or a 0. - """ - if self.rs is None: - raise ValueError( - "You have tried to perform a stochastic operation without setting the " - "random state of the simulator. Might I suggest using a PyQVM object?" - ) - measure_0 = lifted_gate_matrix(matrix=P0, qubit_inds=[qubit], n_qubits=self.n_qubits) - prob_zero = np.trace(measure_0 @ self.density) - - # generate random number to 'roll' for measurement - if self.rs.uniform() < prob_zero: - # decohere state using the measure_0 operator - unitary = measure_0 @ (np.eye(2**self.n_qubits) / np.sqrt(prob_zero)) - self.density = unitary.dot(self.density).dot(np.conj(unitary.T)) - return 0 - else: # measure one - measure_1 = lifted_gate_matrix(matrix=P1, qubit_inds=[qubit], n_qubits=self.n_qubits) - unitary = measure_1 @ (np.eye(2**self.n_qubits) / np.sqrt(1 - prob_zero)) - self.density = unitary.dot(self.density).dot(np.conj(unitary.T)) - return 1 - - def expectation(self, operator: Union[PauliTerm, PauliSum]) -> complex: - raise NotImplementedError("To implement") - - def reset(self) -> "AbstractQuantumSimulator": - """ - Resets the current state of ReferenceDensitySimulator ``self.density`` to - ``self.initial_density``. - - :return: ``self`` to support method chaining. - """ - self.density = self.initial_density - return self - - def do_post_gate_noise(self, noise_type: str, noise_prob: float, qubits: List[int]) -> "ReferenceDensitySimulator": - kraus_ops = KRAUS_OPS[noise_type](p=noise_prob) - if np.isclose(noise_prob, 0.0): - warnings.warn(f"Skipping {noise_type} post-gate noise because noise_prob is close to 0", stacklevel=2) - return self - - for q in qubits: - new_density = np.zeros_like(self.density) - for kraus_op in kraus_ops: - lifted_kraus_op = lifted_gate_matrix(matrix=kraus_op, qubit_inds=[q], n_qubits=self.n_qubits) - new_density += lifted_kraus_op.dot(self.density).dot(np.conj(lifted_kraus_op.T)) - self.density = new_density - return self diff --git a/pyquil/simulation/matrices.py b/pyquil/simulation/matrices.py deleted file mode 100644 index 460af7192..000000000 --- a/pyquil/simulation/matrices.py +++ /dev/null @@ -1,454 +0,0 @@ -############################################################################## -# Copyright 2016-2019 Rigetti Computing -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -############################################################################## -r""" -Standard gate set, as detailed in Quil whitepaper (arXiV:1608:03355v2) - -Currently includes: - I - identity :math:`\begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}` - - X - Pauli-X :math:`\begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}` - - Y - Pauli-Y :math:`\begin{pmatrix} 0 & -i \\ i & 0 \end{pmatrix}` - - Z - Pauli-Z :math:`\begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix}` - - H - Hadamard - :math:`\frac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix}` - - S - PHASE(pi/2) - :math:`\begin{pmatrix} 1 & 0 \\ 0 & i \end{pmatrix}` - - T - PHASE(pi/4) - :math:`\begin{pmatrix} 1 & 0 \\ 0 & e^{i \pi / 4} \end{pmatrix}` - - PHASE(:math:`\phi`) - PHASE - :math:`\begin{pmatrix} 1 & 0 \\ 0 & e^{i \phi} \end{pmatrix}` - - RX(:math:`\phi`) - RX - :math:`\begin{pmatrix} \cos(\phi / 2) & -i \sin(\phi/2) \\ -i \sin(\phi/2) & \cos(\phi/2) \end{pmatrix}` - - RY(:math:`\phi`) - RY - :math:`\begin{pmatrix} \cos(\phi / 2) & -\sin(\phi / 2) \\ \sin(\phi/2) & \cos(\phi/2) \end{pmatrix}` - - RZ(:math:`\phi`) - RZ - :math:`\begin{pmatrix} \cos(\phi/2) - i \sin(\phi/2) & 0 \\ 0 & \cos(\phi/2) + i \sin(\phi/2) \end{pmatrix}` - - U(:math:`\theta, \phi, \lambda`) - U3 - :math:`\begin{pmatrix} \cos(\theta/2) & - \exp{i\lambda} \sin(\theta/2) \\ \exp{i\phi} \sin(\theta/2) & \exp{i\phi + \lambda} \cos(\theta/2) \end{pmatrix}` - - CZ - controlled-Z - :math:`P_0 \otimes I + P_1 \otimes Z = \begin{pmatrix} 1&0&0&0 \\ 0&1&0&0 \\ 0&0&1&0 \\ 0&0&0&-1 \end{pmatrix}` - - CNOT - controlled-X / controlled-NOT - :math:`P_0 \otimes I + P_1 \otimes X = \begin{pmatrix} 1&0&0&0 \\ 0&1&0&0 \\ 0&0&0&1 \\ 0&0&1&0 \end{pmatrix}` - - CCNOT - double-controlled-X - :math:`P_0 \otimes P_0 \otimes I + P_0 \otimes P_1 \otimes I + P_1 \otimes P_0 \otimes I + P_1 \otimes P_1 \otimes X` - - CPHASE00(:math:`\phi`) - controlled-phase-on-\|00\> - :math:`\text{diag}(e^{i \phi}, 1, 1, 1,)` - - CPHASE01(:math:`\phi`) - controlled-phase-on-\|01\> - :math:`\text{diag}(1, e^{i \phi}, 1, 1,)` - - CPHASE10(:math:`\phi`) - controlled-phase-on-\|10\> - :math:`\text{diag}(1, 1, e^{i \phi}, 1)` - - CPHASE(:math:`\phi`) - controlled-phase-on-\|11\> - :math:`\text{diag}(1, 1, 1, e^{i \phi})` - - SWAP - swap - :math:`\begin{pmatrix} 1&0&0&0 \\ 0&0&1&0 \\ 0&1&0&0 \\ 0&0&0&1 \end{pmatrix}` - - CSWAP - controlled-swap - :math:`P_0 \otimes I_2 + P_1 \otimes \text{SWAP}` - - ISWAP - i-phase-swap - :math:`\begin{pmatrix} 1&0&0&0 \\ 0&0&i&0 \\ 0&i&0&0 \\ 0&0&0&1 \end{pmatrix}` - - PSWAP(:math:`\phi`) - phi-phase-swap - :math:`\begin{pmatrix} 1&0&0&0 \\ 0&0&e^{i\phi}&0 \\ 0&e^{i\phi}&0&0 \\ 0&0&0&1 \end{pmatrix}` - - XY(:math:`\phi`) - XY-interaction - :math:`\begin{pmatrix} 1&0&0&0 \\ 0&\cos(\phi/2)&i\sin(\phi/2)&0 \\ 0&i\sin(\phi/2)&\cos(\phi/2)&0 \\ 0&0&0&1 \end{pmatrix}` - - SQISW - XY(:math: `\pi/2`)-interaction - :math:`\begin{pmatrix} 1&0&0&0 \\ 0&\frac{1}{\sqrt{2}}&\frac{i}{\sqrt{2}}&0 \\ \frac{i}{\sqrt{2}}&\frac{1}{\sqrt{2}} \\ 0&0&0&1 \end{pmatrix}` - - FSIM(:math:`\theta, \phi`) - XX+YY interaction with conditonal phase on \|11\> - :math:`\begin{pmatrix} 1&0&0&0 \\ 0&\cos(\frac{\theta}{2})&i\sin(\frac{\theta}{2})&0 \\ 0&i\sin(\frac{\theta}{2})&\cos(\frac{\theta}{2})&0 \\ 0&0&0&e^{i \phi} \end{pmatrix}` - - PHASEDFSIM(:math:`\theta, \zeta, \chi, \gamma, \phi`) - XX+YY interaction with conditonal phase on \|11\> - :math:`\begin{pmatrix} 1&0&0&0 \\ 0&\ e^{-i(\gamma+\zeta)}\cos(\frac{\theta}{2})&ie^{-i(\gamma-\chi)}\sin(\frac{\theta}{2})&0 \\ 0&ie^{-i(\gamma+\chi)}\sin(\frac{\theta}{2})&e^{-i(\gamma-\zeta)}\cos(\frac{\theta}{2})&0 \\ 0&0&0&e^{ i\phi - 2i\gamma} \end{pmatrix}` - - RXX(:math:`\phi`) - XX-interaction - :math:`\begin{pmatrix} \cos(\phi/2)&0&0&-i\sin(\phi/2) \\ 0&\cos(\phi/2)&-i\sin(\phi/2)&0 \\ 0&-i\sin(\phi/2)&\cos(\phi/2)&0 \\ -i\sin(\phi/2)&0&0&cos(\phi/2) \end{pmatrix}` - - RYY(:math:`\phi`) - YY-interaction - :math:`\begin{pmatrix} \cos(\phi/2)&0&0&i\sin(\phi/2) \\ 0&\cos(\phi/2)&-i\sin(\phi/2)&0 \\ 0&-i\sin(\phi/2)&\cos(\phi/2)&0 \\ i\sin(\phi/2)&0&0&cos(\phi/2) \end{pmatrix}` - - RZZ(:math:`\phi`) - ZZ-interaction - :math:`\begin{pmatrix} 1&0&0&0 \\ 0&\cos(\phi/2)&-i\sin(\phi/2)&0 \\ 0&-i\sin(\phi/2)&\cos(\phi/2)&0 \\ 0&0&0&1 \end{pmatrix}` - - -Specialized gates / internal utility gates: - BARENCO(:math:`\alpha, \phi, \theta`) - Barenco gate - :math:`\begin{pmatrix} 1&0&0&0 \\ 0&1&0&0 \\ 0&0&e^{i\phi} \cos\theta & -i e^{i(\alpha-\phi)} \sin\theta \\ 0&0&-i e^{i(\alpha+\phi)} \sin\theta & e^{i\alpha} \cos\theta \end{pmatrix}` - - P0 - project-onto-zero - :math:`\begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix}` - - P1 - project-onto-one - :math:`\begin{pmatrix} 0 & 0 \\ 0 & 1 \end{pmatrix}` -""" # noqa: E501 -import cmath -from typing import Tuple - -import numpy as np - -I = np.array([[1.0, 0.0], [0.0, 1.0]]) - -X = np.array([[0.0, 1.0], [1.0, 0.0]]) - -Y = np.array([[0.0, 0.0 - 1.0j], [0.0 + 1.0j, 0.0]]) - -Z = np.array([[1.0, 0.0], [0.0, -1.0]]) - -H = (1.0 / np.sqrt(2.0)) * np.array([[1.0, 1.0], [1.0, -1.0]]) - -S = np.array([[1.0, 0.0], [0.0, 1.0j]]) - -T = np.array([[1.0, 0.0], [0.0, cmath.exp(1.0j * np.pi / 4.0)]]) - - -def PHASE(phi: float) -> np.ndarray: - return np.array([[1.0, 0.0], [0.0, np.exp(1j * phi)]]) - - -def RX(phi: float) -> np.ndarray: - return np.array([[np.cos(phi / 2.0), -1j * np.sin(phi / 2.0)], [-1j * np.sin(phi / 2.0), np.cos(phi / 2.0)]]) - - -def RY(phi: float) -> np.ndarray: - return np.array([[np.cos(phi / 2.0), -np.sin(phi / 2.0)], [np.sin(phi / 2.0), np.cos(phi / 2.0)]]) - - -def RZ(phi: float) -> np.ndarray: - return np.array( - [ - [np.cos(phi / 2.0) - 1j * np.sin(phi / 2.0), 0], - [0, np.cos(phi / 2.0) + 1j * np.sin(phi / 2.0)], - ] - ) - - -def U(theta: float, phi: float, lam: float) -> np.ndarray: - return np.array( - [ - [np.cos(theta / 2.0), -1 * np.exp(1j * lam) * np.sin(theta / 2.0)], - [np.exp(1j * phi) * np.sin(theta / 2.0), np.exp(1j * (phi + lam)) * np.cos(theta / 2.0)], - ] - ) - - -CZ = np.array([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, -1]]) - -CNOT = np.array([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0]]) - -CCNOT = np.array( - [ - [1, 0, 0, 0, 0, 0, 0, 0], - [0, 1, 0, 0, 0, 0, 0, 0], - [0, 0, 1, 0, 0, 0, 0, 0], - [0, 0, 0, 1, 0, 0, 0, 0], - [0, 0, 0, 0, 1, 0, 0, 0], - [0, 0, 0, 0, 0, 1, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 1], - [0, 0, 0, 0, 0, 0, 1, 0], - ] -) - - -def CPHASE00(phi: float) -> np.ndarray: - return np.diag([np.exp(1j * phi), 1.0, 1.0, 1.0]) - - -def CPHASE01(phi: float) -> np.ndarray: - return np.diag([1.0, np.exp(1j * phi), 1.0, 1.0]) - - -def CPHASE10(phi: float) -> np.ndarray: - return np.diag([1.0, 1.0, np.exp(1j * phi), 1.0]) - - -def CPHASE(phi: float) -> np.ndarray: - return np.diag([1.0, 1.0, 1.0, np.exp(1j * phi)]) - - -SWAP = np.array([[1, 0, 0, 0], [0, 0, 1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) - -CSWAP = np.array( - [ - [1, 0, 0, 0, 0, 0, 0, 0], - [0, 1, 0, 0, 0, 0, 0, 0], - [0, 0, 1, 0, 0, 0, 0, 0], - [0, 0, 0, 1, 0, 0, 0, 0], - [0, 0, 0, 0, 1, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 1, 0], - [0, 0, 0, 0, 0, 1, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 1], - ] -) - -ISWAP = np.array([[1, 0, 0, 0], [0, 0, 1j, 0], [0, 1j, 0, 0], [0, 0, 0, 1]]) - - -def PSWAP(phi: float) -> np.ndarray: - return np.array([[1, 0, 0, 0], [0, 0, np.exp(1j * phi), 0], [0, np.exp(1j * phi), 0, 0], [0, 0, 0, 1]]) - - -def XY(phi: float) -> np.ndarray: - return np.array( - [ - [1, 0, 0, 0], - [0, np.cos(phi / 2), 1j * np.sin(phi / 2), 0], - [0, 1j * np.sin(phi / 2), np.cos(phi / 2), 0], - [0, 0, 0, 1], - ] - ) - - -def FSIM(theta: float, phi: float) -> np.ndarray: - return np.array( - [ - [1, 0, 0, 0], - [0, np.cos(theta / 2), 1j * np.sin(theta / 2), 0], - [0, 1j * np.sin(theta / 2), np.cos(theta / 2), 0], - [0, 0, 0, np.exp(1j * phi)], - ] - ) - - -def PHASEDFSIM(theta: float, zeta: float, chi: float, gamma: float, phi: float) -> np.ndarray: - return np.array( - [ - [1, 0, 0, 0], - [ - 0, - np.exp(-1j * (gamma + zeta)) * np.cos(theta / 2), - 1j * np.exp(-1j * (gamma - chi)) * np.sin(theta / 2), - 0, - ], - [ - 0, - 1j * np.exp(-1j * (gamma + chi)) * np.sin(theta / 2), - np.exp(-1j * (gamma - zeta)) * np.cos(theta / 2), - 0, - ], - [0, 0, 0, np.exp(1j * phi - 2j * gamma)], - ] - ) - - -def RZZ(phi: float) -> np.ndarray: - return np.array( - [ - [np.exp(-1j * phi / 2), 0, 0, 0], - [0, np.exp(+1j * phi / 2), 0, 0], - [0, 0, np.exp(+1j * phi / 2), 0], - [0, 0, 0, np.exp(-1j * phi / 2)], - ] - ) - - -def RXX(phi: float) -> np.ndarray: - return np.array( - [ - [np.cos(phi / 2), 0, 0, -1j * np.sin(phi / 2)], - [0, np.cos(phi / 2), -1j * np.sin(phi / 2), 0], - [0, -1j * np.sin(phi / 2), np.cos(phi / 2), 0], - [-1j * np.sin(phi / 2), 0, 0, np.cos(phi / 2)], - ] - ) - - -def RYY(phi: float) -> np.ndarray: - return np.array( - [ - [np.cos(phi / 2), 0, 0, +1j * np.sin(phi / 2)], - [0, np.cos(phi / 2), -1j * np.sin(phi / 2), 0], - [0, -1j * np.sin(phi / 2), np.cos(phi / 2), 0], - [+1j * np.sin(phi / 2), 0, 0, np.cos(phi / 2)], - ] - ) - - -SQISW = np.array( - [ - [1, 0, 0, 0], - [0, 1 / np.sqrt(2), 1j / np.sqrt(2), 0], - [0, 1j / np.sqrt(2), 1 / np.sqrt(2), 0], - [0, 0, 0, 1], - ] -) - -# Utility gates for internal QVM use -P0 = np.array([[1, 0], [0, 0]]) - -P1 = np.array([[0, 0], [0, 1]]) - - -# Specialized useful gates; not officially in standard gate set -def BARENCO(alpha: float, phi: float, theta: float) -> np.ndarray: - lower_unitary = np.array( - [ - [np.exp(1j * phi) * np.cos(theta), -1j * np.exp(1j * (alpha - phi)) * np.sin(theta)], - [-1j * np.exp(1j * (alpha + phi)) * np.sin(theta), np.exp(1j * alpha) * np.cos(theta)], - ] - ) - return np.kron(P0, np.eye(2)) + np.kron(P1, lower_unitary) - - -QUANTUM_GATES = { - "RZ": RZ, - "RX": RX, - "RY": RY, - "CZ": CZ, - "XY": XY, - "CPHASE": CPHASE, - "I": I, - "X": X, - "Y": Y, - "Z": Z, - "H": H, - "S": S, - "T": T, - "PHASE": PHASE, - "CNOT": CNOT, - "CCNOT": CCNOT, - "CPHASE00": CPHASE00, - "CPHASE01": CPHASE01, - "CPHASE10": CPHASE10, - "SWAP": SWAP, - "CSWAP": CSWAP, - "ISWAP": ISWAP, - "PSWAP": PSWAP, - "BARENCO": BARENCO, - "FSIM": FSIM, - "PHASEDFSIM": PHASEDFSIM, - "RXX": RXX, - "RYY": RYY, - "RZZ": RZZ, - "U": U, -} - - -def relaxation_operators(p: float) -> Tuple[np.ndarray, np.ndarray]: - """ - Return the amplitude damping Kraus operators - """ - k0 = np.array([[1.0, 0.0], [0.0, np.sqrt(1 - p)]]) - k1 = np.array([[0.0, np.sqrt(p)], [0.0, 0.0]]) - return k0, k1 - - -def dephasing_operators(p: float) -> Tuple[np.ndarray, np.ndarray]: - """ - Return the phase damping Kraus operators - """ - k0 = np.eye(2) * np.sqrt(1 - p / 2) - k1 = np.sqrt(p / 2) * Z - return k0, k1 - - -def depolarizing_operators(p: float) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: - """ - Return the phase damping Kraus operators - """ - k0 = np.sqrt(1.0 - p) * I - k1 = np.sqrt(p / 3.0) * X - k2 = np.sqrt(p / 3.0) * Y - k3 = np.sqrt(p / 3.0) * Z - return k0, k1, k2, k3 - - -def phase_flip_operators(p: float) -> Tuple[np.ndarray, np.ndarray]: - """ - Return the phase flip kraus operators - """ - k0 = np.sqrt(1 - p) * I - k1 = np.sqrt(p) * Z - return k0, k1 - - -def bit_flip_operators(p: float) -> Tuple[np.ndarray, np.ndarray]: - """ - Return the phase flip kraus operators - """ - k0 = np.sqrt(1 - p) * I - k1 = np.sqrt(p) * X - return k0, k1 - - -def bitphase_flip_operators(p: float) -> Tuple[np.ndarray, np.ndarray]: - """ - Return the bitphase flip kraus operators - """ - k0 = np.sqrt(1 - p) * I - k1 = np.sqrt(p) * Y - return k0, k1 - - -KRAUS_OPS = { - "relaxation": relaxation_operators, - "dephasing": dephasing_operators, - "depolarizing": depolarizing_operators, - "phase_flip": phase_flip_operators, - "bit_flip": bit_flip_operators, - "bitphase_flip": bitphase_flip_operators, -} - -SIC0 = np.array([1, 0]) -SIC1 = np.array([1, np.sqrt(2)]) / np.sqrt(3) -SIC2 = np.array([1, np.exp(-np.pi * 2j / 3) * np.sqrt(2)]) / np.sqrt(3) -SIC3 = np.array([1, np.exp(np.pi * 2j / 3) * np.sqrt(2)]) / np.sqrt(3) -""" -The symmetric informationally complete POVMs for a qubit. - -These can reduce the number of experiments to perform quantum process tomography. -For more information, please see http://info.phys.unm.edu/~caves/reports/infopovm.pdf -""" - -STATES = { - "X": [np.array([1, 1]) / np.sqrt(2), np.array([1, -1]) / np.sqrt(2)], - "Y": [np.array([1, 1j]) / np.sqrt(2), np.array([1, -1j]) / np.sqrt(2)], - "Z": [np.array([1, 0]), np.array([0, 1])], - "SIC": [SIC0, SIC1, SIC2, SIC3], -} - -__all__ = list(QUANTUM_GATES.keys()) + [ - "relaxation_operators", - "dephasing_operators", - "depolarizing_operators", - "phase_flip_operators", - "bit_flip_operators", - "bitphase_flip_operators", - "STATES", - "SIC0", - "SIC1", - "SIC2", - "SIC3", -] diff --git a/pyquil/simulation/tools.py b/pyquil/simulation/tools.py deleted file mode 100644 index f3afd6a78..000000000 --- a/pyquil/simulation/tools.py +++ /dev/null @@ -1,454 +0,0 @@ -############################################################################## -# Copyright 2016-2019 Rigetti Computing -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -############################################################################## -from typing import List, Sequence, Tuple, Union, cast - -import numpy as np - -from pyquil.experiment._setting import TensorProductState -from pyquil.paulis import PauliSum, PauliTerm -from pyquil.quil import Program -from pyquil.quilatom import Parameter -from pyquil.quilbase import Gate, Halt, _strip_modifiers -from pyquil.simulation.matrices import SWAP, STATES, QUANTUM_GATES - - -def all_bitstrings(n_bits: int) -> np.ndarray: - """All bitstrings in lexicographical order as a 2d np.ndarray. - - This should be the same as ``np.array(list(itertools.product([0,1], repeat=n_bits)))`` - but faster. - """ - n_bitstrings = 2**n_bits - out = np.zeros(shape=(n_bitstrings, n_bits), dtype=np.int8) - - tf = np.array([False, True]) - for i in range(n_bits): - # Lexicographical ordering gives a pattern of 1's - # where runs of 1s of length 2**j are tiled 2**i times - - # i indexes from the *left* - # j indexes from the *right* - j = n_bits - i - 1 - - out[np.tile(np.repeat(tf, 2**j), 2**i), i] = 1 - return out - - -def qubit_adjacent_lifted_gate(i: int, matrix: np.ndarray, n_qubits: int) -> np.ndarray: - """ - Lifts input k-qubit gate on adjacent qubits starting from qubit i - to complete Hilbert space of dimension 2 ** num_qubits. - - Ex: 1-qubit gate, lifts from qubit i - Ex: 2-qubit gate, lifts from qubits (i+1, i) - Ex: 3-qubit gate, lifts from qubits (i+2, i+1, i), operating in that order - - In general, this takes a k-qubit gate (2D matrix 2^k x 2^k) and lifts - it to the complete Hilbert space of dim 2^num_qubits, as defined by - the right-to-left tensor product (1) in arXiv:1608.03355. - - Developer note: Quil and the QVM like qubits to be ordered such that qubit 0 is on the right. - Therefore, in ``qubit_adjacent_lifted_gate``, ``lifted_pauli``, and ``lifted_state_operator``, - we build up the lifted matrix by performing the kronecker product from right to left. - - Note that while the qubits are addressed in decreasing order, - starting with num_qubit - 1 on the left and ending with qubit 0 on the - right (in a little-endian fashion), gates are still lifted to apply - on qubits in increasing index (right-to-left) order. - - :param i: starting qubit to lift matrix from (incr. index order) - :param matrix: the matrix to be lifted - :param n_qubits: number of overall qubits present in space - - :return: matrix representation of operator acting on the - complete Hilbert space of all num_qubits. - """ - n_rows, n_cols = matrix.shape - assert n_rows == n_cols, "Matrix must be square" - gate_size = np.log2(n_rows) - assert gate_size == int(gate_size), "Matrix must be 2^n by 2^n" - gate_size = int(gate_size) - - # Outer-product to lift gate to complete Hilbert space - - # bottom: i qubits below target - bottom_matrix = np.eye(2**i, dtype=np.complex128) - # top: Nq - i (bottom) - gate_size (gate) qubits above target - top_qubits = n_qubits - i - gate_size - top_matrix = np.eye(2**top_qubits, dtype=np.complex128) - - return np.kron(top_matrix, np.kron(matrix, bottom_matrix)) - - -def two_swap_helper(j: int, k: int, num_qubits: int, qubit_map: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: - """ - Generate the permutation matrix that permutes two single-particle Hilbert - spaces into adjacent positions. - - ALWAYS swaps j TO k. Recall that Hilbert spaces are ordered in decreasing - qubit index order. Hence, j > k implies that j is to the left of k. - - End results: - j == k: nothing happens - j > k: Swap j right to k, until j at ind (k) and k at ind (k+1). - j < k: Swap j left to k, until j at ind (k) and k at ind (k-1). - - Done in preparation for arbitrary 2-qubit gate application on ADJACENT - qubits. - - :param j: starting qubit index - :param k: ending qubit index - :param num_qubits: number of qubits in Hilbert space - :param qubit_map: current index mapping of qubits - :return: tuple of swap matrix for the specified permutation, - and the new qubit_map, after permutation is made - """ - if not (0 <= j < num_qubits and 0 <= k < num_qubits): - raise ValueError("Permutation SWAP index not valid") - - perm = np.eye(2**num_qubits, dtype=np.complex128) - new_qubit_map = np.copy(qubit_map) - - if j == k: - # nothing happens - return perm, new_qubit_map - elif j > k: - # swap j right to k, until j at ind (k) and k at ind (k+1) - for i in range(j, k, -1): - perm = qubit_adjacent_lifted_gate(i - 1, SWAP, num_qubits).dot(perm) - new_qubit_map[i - 1], new_qubit_map[i] = new_qubit_map[i], new_qubit_map[i - 1] - elif j < k: - # swap j left to k, until j at ind (k) and k at ind (k-1) - for i in range(j, k, 1): - perm = qubit_adjacent_lifted_gate(i, SWAP, num_qubits).dot(perm) - new_qubit_map[i], new_qubit_map[i + 1] = new_qubit_map[i + 1], new_qubit_map[i] - - return perm, new_qubit_map - - -def permutation_arbitrary(qubit_inds: Sequence[int], n_qubits: int) -> Tuple[np.ndarray, np.ndarray, int]: - """ - Generate the permutation matrix that permutes an arbitrary number of - single-particle Hilbert spaces into adjacent positions. - - Transposes the qubit indices in the order they are passed to a - contiguous region in the complete Hilbert space, in increasing - qubit index order (preserving the order they are passed in). - - Gates are usually defined as `GATE 0 1 2`, with such an argument ordering - dictating the layout of the matrix corresponding to GATE. If such an - instruction is given, actual qubits (0, 1, 2) need to be swapped into the - positions (2, 1, 0), because the lifting operation taking the 8 x 8 matrix - of GATE is done in the little-endian (reverse) addressed qubit space. - - For example, suppose I have a Quil command CCNOT 20 15 10. - The median of the qubit indices is 15 - hence, we permute qubits - [20, 15, 10] into the final map [16, 15, 14] to minimize the number of - swaps needed, and so we can directly operate with the final CCNOT, when - lifted from indices [16, 15, 14] to the complete Hilbert space. - - Notes: assumes qubit indices are unique (assured in parent call). - - See documentation for further details and explanation. - - Done in preparation for arbitrary gate application on - adjacent qubits. - - :param qubit_inds: Qubit indices in the order the gate is applied to. - :param n_qubits: Number of qubits in system - :return: - perm - permutation matrix providing the desired qubit reordering - qubit_arr - new indexing of qubits presented in left to right decreasing index order. - start_i - starting index to lift gate from - """ # noqa: E501 - # Begin construction of permutation - perm = np.eye(2**n_qubits, dtype=np.complex128) - - # First, sort the list and find the median. - sorted_inds = np.sort(qubit_inds) - med_i = len(qubit_inds) // 2 - med = sorted_inds[med_i] - - # The starting position of all specified Hilbert spaces begins at - # the qubit at (median - med_i) - start = med - med_i - # Array of final indices the arguments are mapped to, from - # high index to low index, left to right ordering - final_map = np.arange(start, start + len(qubit_inds))[::-1] - start_i = final_map[-1] - - # Note that the lifting operation takes a k-qubit gate operating - # on the qubits i+k-1, i+k-2, ... i (left to right). - # two_swap_helper can be used to build the - # permutation matrix by filling out the final map by sweeping over - # the qubit_inds from left to right and back again, swapping qubits into - # position. we loop over the qubit_inds until the final mapping matches - # the argument. - qubit_arr = np.arange(n_qubits) # current qubit indexing - - made_it = False - right = True - while not made_it: - array = range(len(qubit_inds)) if right else range(len(qubit_inds))[::-1] - for i in array: - pmod, qubit_arr = two_swap_helper( - np.where(qubit_arr == qubit_inds[i])[0][0], final_map[i], n_qubits, qubit_arr - ) - - # update permutation matrix - perm = pmod.dot(perm) - if np.allclose(qubit_arr[final_map[-1] : final_map[0] + 1][::-1], qubit_inds): - made_it = True - break - - # for next iteration, go in opposite direction - right = not right - - assert np.allclose(qubit_arr[final_map[-1] : final_map[0] + 1][::-1], qubit_inds) - return perm, qubit_arr[::-1], start_i - - -def lifted_gate_matrix(matrix: np.ndarray, qubit_inds: Sequence[int], n_qubits: int) -> np.ndarray: - """ - Lift a unitary matrix to act on the specified qubits in a full ``n_qubits``-qubit - Hilbert space. - - For 1-qubit gates, this is easy and can be achieved with appropriate kronning of identity - matrices. For 2-qubit gates acting on adjacent qubit indices, it is also easy. However, - for a multiqubit gate acting on non-adjactent qubit indices, we must first apply a permutation - matrix to make the qubits adjacent and then apply the inverse permutation. - - :param matrix: A 2^k by 2^k matrix encoding an n-qubit operation, where ``k == len(qubit_inds)`` - :param qubit_inds: The qubit indices we wish the matrix to act on. - :param n_qubits: The total number of qubits. - :return: A 2^n by 2^n lifted version of the unitary matrix acting on the specified qubits. - """ - n_rows, n_cols = matrix.shape - assert n_rows == n_cols, "Matrix must be square" - gate_size = np.log2(n_rows) - assert gate_size == int(gate_size), "Matrix must be 2^n by 2^n" - gate_size = int(gate_size) - - pi_permutation_matrix, final_map, start_i = permutation_arbitrary(qubit_inds, n_qubits) - if start_i > 0: - check = final_map[-gate_size - start_i : -start_i] - else: - # Python can't deal with `arr[:-0]` - check = final_map[-gate_size - start_i :] - np.testing.assert_allclose(check, qubit_inds) - - v_matrix = qubit_adjacent_lifted_gate(start_i, matrix, n_qubits) - return np.dot(np.conj(pi_permutation_matrix.T), np.dot(v_matrix, pi_permutation_matrix)) # type: ignore - - -def lifted_gate(gate: Gate, n_qubits: int) -> np.ndarray: - """ - Lift a pyquil :py:class:`Gate` in a full ``n_qubits``-qubit Hilbert space. - - This function looks up the matrix form of the gate and then dispatches to - :py:func:`lifted_gate_matrix` with the target qubits. - - :param gate: A gate - :param n_qubits: The total number of qubits. - :return: A 2^n by 2^n lifted version of the gate acting on its specified qubits. - """ - - zero = np.eye(2) - zero[1, 1] = 0 - one = np.eye(2) - one[0, 0] = 0 - - if any(isinstance(param, Parameter) for param in gate.params): - raise TypeError("Cannot produce a matrix from a gate with non-constant parameters.") - - # The main source of complexity is in handling handling FORKED gates. Given - # a gate with modifiers, such as `FORKED CONTROLLED FORKED RX(a,b,c,d) 0 1 - # 2 3`, we get a tree, as in - # - # FORKED CONTROLLED FORKED RX(a,b,c,d) 0 1 2 3 - # / \ - # CONTROLLED FORKED RX(a,b) 1 2 3 CONTROLLED FORKED RX(c,d) 1 2 3 - # | | - # FORKED RX(a,b) 2 3 FORKED RX(c,d) 2 3 - # / \ / \ - # RX(a) 3 RX(b) 3 RX(c) 3 RX(d) 3 - # - # We recurse on this structure using _gate_matrix below. - - def _gate_matrix(gate: Gate) -> np.ndarray: - if len(gate.modifiers) == 0: # base case - if len(gate.params) > 0: - return QUANTUM_GATES[gate.name](*gate.params) # type: ignore - else: - return QUANTUM_GATES[gate.name] # type: ignore - else: - mod = gate.modifiers[0] - if mod == "DAGGER": - child = _strip_modifiers(gate, limit=1) - return _gate_matrix(child).conj().T - elif mod == "CONTROLLED": - child = _strip_modifiers(gate, limit=1) - matrix = _gate_matrix(child) - return np.kron(zero, np.eye(*matrix.shape)) + np.kron(one, matrix) # type: ignore - elif mod == "FORKED": - assert len(gate.params) % 2 == 0 - p0, p1 = gate.params[: len(gate.params) // 2], gate.params[len(gate.params) // 2 :] - child = _strip_modifiers(gate, limit=1) - # handle the first half of the FORKED params - child.params = p0 - mat0 = _gate_matrix(child) - # handle the second half of the FORKED params - child.params = p1 - mat1 = _gate_matrix(child) - return np.kron(zero, mat0) + np.kron(one, mat1) - else: - raise TypeError("Unsupported gate modifier {}".format(mod)) - - matrix = _gate_matrix(gate) - - return lifted_gate_matrix(matrix=matrix, qubit_inds=gate.get_qubit_indices(), n_qubits=n_qubits) - - -def program_unitary(program: Program, n_qubits: int) -> np.ndarray: - """ - Return the unitary of a pyQuil program. - - :param program: A program consisting only of :py:class:`Gate`.: - :return: a unitary corresponding to the composition of the program's gates. - """ - umat: np.ndarray = np.eye(2**n_qubits) - for instruction in program: - if isinstance(instruction, Gate): - unitary = lifted_gate(gate=instruction, n_qubits=n_qubits) - umat = unitary.dot(umat) - elif isinstance(instruction, Halt): - pass - else: - raise ValueError( - "Can only compute program unitary for programs composed of `Gate`s. " - f"Found unsupported instruction: {instruction}" - ) - return umat - - -def lifted_pauli(pauli_sum: Union[PauliSum, PauliTerm], qubits: List[int]) -> np.ndarray: - """ - Takes a PauliSum object along with a list of - qubits and returns a matrix corresponding the tensor representation of the - object. - - Useful for generating the full Hamiltonian after a particular fermion to - pauli transformation. For example: - - Converting a PauliSum X0Y1 + Y1X0 into the matrix - - .. code-block:: python - - [[ 0.+0.j, 0.+0.j, 0.+0.j, 0.-2.j], - [ 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j], - [ 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j], - [ 0.+2.j, 0.+0.j, 0.+0.j, 0.+0.j]] - - Developer note: Quil and the QVM like qubits to be ordered such that qubit 0 is on the right. - Therefore, in ``qubit_adjacent_lifted_gate``, ``lifted_pauli``, and ``lifted_state_operator``, - we build up the lifted matrix by performing the kronecker product from right to left. - - :param pauli_sum: Pauli representation of an operator - :param qubits: list of qubits in the order they will be represented in the resultant matrix. - :return: matrix representation of the pauli_sum operator - """ - if isinstance(pauli_sum, PauliTerm): - pauli_sum = PauliSum([pauli_sum]) - - n_qubits = len(qubits) - result_hilbert = np.zeros((2**n_qubits, 2**n_qubits), dtype=np.complex128) - # left kronecker product corresponds to the correct basis ordering - for term in pauli_sum.terms: - term_hilbert = np.array([1]) - for qubit in qubits: - term_hilbert = np.kron(QUANTUM_GATES[term[qubit]], term_hilbert) - - result_hilbert += term_hilbert * cast(complex, term.coefficient) - - return result_hilbert - - -def tensor_up(pauli_sum: Union[PauliSum, PauliTerm], qubits: List[int]) -> np.ndarray: - """ - Takes a PauliSum object along with a list of - qubits and returns a matrix corresponding the tensor representation of the - object. - - This is the same as :py:func:`lifted_pauli`. Nick R originally wrote this functionality - and really likes the name ``tensor_up``. Who can blame him? - - :param pauli_sum: Pauli representation of an operator - :param qubits: list of qubits in the order they will be represented in the resultant matrix. - :return: matrix representation of the pauli_sum operator - """ - return lifted_pauli(pauli_sum=pauli_sum, qubits=qubits) - - -def lifted_state_operator(state: TensorProductState, qubits: List[int]) -> np.ndarray: - """Take a TensorProductState along with a list of qubits and return a matrix - corresponding to the tensored-up representation of the states' density operator form. - - Developer note: Quil and the QVM like qubits to be ordered such that qubit 0 is on the right. - Therefore, in ``qubit_adjacent_lifted_gate``, ``lifted_pauli``, and ``lifted_state_operator``, - we build up the lifted matrix by using the *left* kronecker product. - - :param state: The state - :param qubits: list of qubits in the order they will be represented in the resultant matrix. - """ - mat: np.ndarray = np.eye(1) - for qubit in qubits: - oneq_state = state[qubit] - assert oneq_state.qubit == qubit - state_vector = STATES[oneq_state.label][oneq_state.index][:, np.newaxis] - state_matrix = state_vector @ state_vector.conj().T - mat = np.kron(state_matrix, mat) - return mat - - -def scale_out_phase(unitary1: np.ndarray, unitary2: np.ndarray) -> np.ndarray: - """ - Returns a matrix m equal to unitary1/θ where ɑ satisfies unitary2 - = e^(iθ)·unitary1. - - :param unitary1: The unitary matrix from which the constant of - proportionality should be scaled-out. - :param unitary2: The reference matrix. - - :return: A matrix (same shape as the input matrices) with the - constant of proportionality scaled-out. - """ - # h/t quilc - rescale_value = 1.0 - goodness_value = 0.0 - - for j in range(unitary1.shape[0]): - if np.abs(unitary1[j, 0]) > goodness_value: - goodness_value = np.abs(unitary1[j, 0]) - rescale_value = unitary2[j, 0] / unitary1[j, 0] - - return rescale_value * unitary1 - - -def unitary_equal(A: np.ndarray, B: np.ndarray) -> bool: - """Check if two matrices are unitarily equal.""" - assert A.shape == B.shape - dim = A.shape[0] - return np.allclose(np.abs(np.trace(A.T.conjugate() @ B) / dim), 1.0) diff --git a/rust/Cargo.lock b/rust/Cargo.lock new file mode 100644 index 000000000..9f9cd7b69 --- /dev/null +++ b/rust/Cargo.lock @@ -0,0 +1,678 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-complex", + "num-traits", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bytecount" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e5f035d16fc623ae5f74981db80a439803888314e3a555fd6f04acd51a3205" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "either" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "hashbrown" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fa0ae458eb99874f54c09f4f9174f8b45fb87e854536a4e608696247f0c23" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "indoc" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" + +[[package]] +name = "inventory" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "lexical" +version = "6.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7aefb36fd43fef7003334742cbf77b243fcd36418a1d1bdd480d613a67968f6" +dependencies = [ + "lexical-core", +] + +[[package]] +name = "lexical-core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" +dependencies = [ + "lexical-parse-float", + "lexical-parse-integer", + "lexical-util", + "lexical-write-float", + "lexical-write-integer", +] + +[[package]] +name = "lexical-parse-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" +dependencies = [ + "lexical-parse-integer", + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-parse-integer" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-util" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "lexical-write-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" +dependencies = [ + "lexical-util", + "lexical-write-integer", + "static_assertions", +] + +[[package]] +name = "lexical-write-integer" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "matrixmultiply" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "memchr" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "ndarray" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32" +dependencies = [ + "approx", + "matrixmultiply", + "num-complex", + "num-integer", + "num-traits", + "rawpointer", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nom_locate" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e3c83c053b0713da60c5b8de47fe8e494fe3ece5267b2f23090a07a053ba8f3" +dependencies = [ + "bytecount", + "memchr", + "nom", +] + +[[package]] +name = "num-complex" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets", +] + +[[package]] +name = "petgraph" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +dependencies = [ + "fixedbitset", + "indexmap", +] + +[[package]] +name = "portable-atomic" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + +[[package]] +name = "proc-macro2" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "pyo3" +version = "0.21.0-beta.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0c41d899f822e5f39186d6da130a822a0a43edb19992b51bf4ef6cd0b4cfd1" +dependencies = [ + "cfg-if", + "indexmap", + "indoc", + "inventory", + "libc", + "memoffset", + "num-complex", + "parking_lot", + "portable-atomic", + "pyo3-build-config", + "pyo3-ffi", + "pyo3-macros", + "serde", + "unindent", +] + +[[package]] +name = "pyo3-build-config" +version = "0.21.0-beta.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5509c2aa78c7e770077e41ba86f806e60dcee812e924ccb2d6fe78c0a0128ce2" +dependencies = [ + "once_cell", + "target-lexicon", +] + +[[package]] +name = "pyo3-ffi" +version = "0.21.0-beta.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6bb234a86ed619a661f3bb3c2493aaff9cb937e33e198d17f5f20a15881e155" +dependencies = [ + "libc", + "pyo3-build-config", +] + +[[package]] +name = "pyo3-macros" +version = "0.21.0-beta.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0b787de2c6832eb1eb393c9f82f976a5a87bda979780d9b853878846a8d2e4b" +dependencies = [ + "proc-macro2", + "pyo3-macros-backend", + "quote", + "syn", +] + +[[package]] +name = "pyo3-macros-backend" +version = "0.21.0-beta.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e3b7beed357786d2afe845871964e824ad8af0df38a403f7d01cdc81aadb211" +dependencies = [ + "heck", + "proc-macro2", + "pyo3-build-config", + "quote", + "syn", +] + +[[package]] +name = "pyquil" +version = "0.1.0" +dependencies = [ + "bincode", + "indexmap", + "num-complex", + "pyo3", + "quil-rs", + "serde", +] + +[[package]] +name = "quil-rs" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f00dde56e853c3883c387c741f5e132c22d95a6986ec87f4db1013b5b5e941e" +dependencies = [ + "approx", + "indexmap", + "itertools", + "lexical", + "ndarray", + "nom", + "nom_locate", + "num-complex", + "once_cell", + "petgraph", + "regex", + "serde", + "strum", + "thiserror", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "smallvec" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strum" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "syn" +version = "2.0.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "target-lexicon" +version = "0.12.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" + +[[package]] +name = "thiserror" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unindent" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" diff --git a/rust/Cargo.toml b/rust/Cargo.toml new file mode 100644 index 000000000..97248c582 --- /dev/null +++ b/rust/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "pyquil" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[lib] +# The name of the native library. This is the name which will be used in Python to import the +# library (i.e. `import string_sum`). If you change this, you must also change the name of the +# `#[pymodule]` in `src/lib.rs`. +name = "pyquil" + +# "cdylib" is necessary to produce a shared library for Python to import from. +crate-type = ["cdylib"] + +[dependencies] +num-complex = "0.4.5" +pyo3 = { version = "0.21.0-beta.0", features = ["extension-module", "num-complex", "multiple-pymethods", "serde", "indexmap"] } +indexmap = "2.2.6" +serde = "1.0.197" +bincode = "1.3.3" +quil-rs = "0.23.0" diff --git a/rust/src/conversion.rs b/rust/src/conversion.rs new file mode 100644 index 000000000..32ef9ddf0 --- /dev/null +++ b/rust/src/conversion.rs @@ -0,0 +1,92 @@ +//! Conversion functions that can be used to convert pyQuil types to [`quil_rs`] types. +//! +//! This module contains two kinds of functions: +//! - `py_to_${quil_rs::t}` functions convert a #[pyo3::PyAny] into some quil-rs type `t`. These methods are +//! compatible with the #[pyo3(from_py_with="")] field attribute for function arguments. +//! - `${quil_rs::t}_from_{k}` functions return some quil-rs type `t` from some other type `k`. +//! +//! Both types of functions will raise an error if the input values cannot be used to construct a +//! valid quil-rs type. +//! +//! This module should generally be used to convert pyo3 base types or Rust atomics to a quil-rs +//! type that has no equivalent class in PyQuil already. If a PyQuil class exists for that type +//! prefer to use it and [`std::convert::From`] to convert to a quil-rs type. For example, pyQuil +//! expresses offsets as (u64, String). +use pyo3::{ + exceptions::{PyRuntimeError, PyValueError}, + prelude::*, +}; +use quil_rs::quil::Quil; + +/// Converts a pyQuil's Tuple[int, str] to a quil-rs vector of offsets. +pub(crate) fn py_to_offsets( + value: &Bound<'_, PyAny>, +) -> PyResult> { + let offsets: Option> = value.extract()?; + offsets + .unwrap_or_default() + .into_iter() + .map(offset_from_tuple) + .collect() +} + +/// Converts a pyQuil's Tuple[int, str] to a quil-rs offset. +pub(crate) fn py_to_offset(value: &Bound<'_, PyAny>) -> PyResult { + let offset_tuple: (u64, String) = value.extract()?; + offset_from_tuple(offset_tuple) +} + +pub(crate) fn offset_from_tuple( + (length, memory_type): (u64, String), +) -> PyResult { + Ok(quil_rs::instruction::Offset::new( + length, + scalar_type_from_string(memory_type)?, + )) +} + +pub(crate) fn tuple_from_offset(offset: quil_rs::instruction::Offset) -> PyResult<(u64, String)> { + Ok((offset.offset, string_from_scalar_type(offset.data_type)?)) +} + +pub(crate) fn optional_tuples_from_offsets( + offsets: Vec, +) -> PyResult>> { + let tuples: Vec<(u64, String)> = offsets + .into_iter() + .map(tuple_from_offset) + .collect::>()?; + if tuples.is_empty() { + Ok(None) + } else { + Ok(Some(tuples)) + } +} + +/// Converts a pyQuil memory type string to a quil-rs ScalarType +pub(crate) fn py_to_scalar_type( + value: &Bound<'_, PyAny>, +) -> PyResult { + let memory_type: String = value.extract()?; + scalar_type_from_string(memory_type) +} + +pub(crate) fn scalar_type_from_string(s: String) -> PyResult { + match s.to_uppercase().as_str() { + "BIT" => Ok(quil_rs::instruction::ScalarType::Bit), + "INT" => Ok(quil_rs::instruction::ScalarType::Integer), + "REAL" => Ok(quil_rs::instruction::ScalarType::Real), + "OCTET" => Ok(quil_rs::instruction::ScalarType::Octet), + _ => Err(PyValueError::new_err( + "{} is not a valid memory type. Must be BIT, INT, REAL, or OCTET.", + )), + } +} + +pub(crate) fn string_from_scalar_type( + scalar_type: quil_rs::instruction::ScalarType, +) -> PyResult { + scalar_type.to_quil().map_err(|e| { + PyRuntimeError::new_err(format!("Could not convert scalar type to Quil string: {e}")) + }) +} diff --git a/rust/src/expression/mod.rs b/rust/src/expression/mod.rs new file mode 100644 index 000000000..3cb1b9e85 --- /dev/null +++ b/rust/src/expression/mod.rs @@ -0,0 +1,46 @@ +use pyo3::prelude::*; + +pub(crate) fn init_module(py: Python<'_>) -> PyResult> { + let m = PyModule::new_bound(py, "expression")?; + m.add_class::()?; + m.add_class::()?; + Ok(m) +} + +#[pyclass] +#[derive(Clone, Debug)] +pub struct Expression {} + +impl From for quil_rs::expression::Expression { + fn from(_: Expression) -> Self { + todo!() + } +} + +impl From for Expression { + fn from(_: quil_rs::expression::Expression) -> Self { + todo!() + } +} + +#[pyclass] +#[derive(Clone, Debug)] +pub struct MemoryReference {} + +impl std::fmt::Display for MemoryReference { + fn fmt(&self, _f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + todo!() + } +} + +impl From for quil_rs::instruction::MemoryReference { + fn from(_: MemoryReference) -> Self { + todo!() + } +} + +impl From for MemoryReference { + fn from(_: quil_rs::instruction::MemoryReference) -> Self { + todo!() + } +} diff --git a/rust/src/instruction/declaration.rs b/rust/src/instruction/declaration.rs new file mode 100644 index 000000000..af99a2afb --- /dev/null +++ b/rust/src/instruction/declaration.rs @@ -0,0 +1,145 @@ +use pyo3::prelude::*; +use pyo3::types::PyDict; + +use crate::conversion::{optional_tuples_from_offsets, string_from_scalar_type}; +use crate::instruction::Instruction; +use crate::{conversion, extract_instruction_as, extract_instruction_as_mut, impl_from_quil_rs}; + +#[pyclass(extends=Instruction)] +#[derive(Debug, Clone)] +pub struct Declare {} +impl_from_quil_rs!(Declare, quil_rs::instruction::Declaration, Declaration); + +#[pymethods] +impl Declare { + #[new] + #[pyo3(signature=(name, memory_type, memory_size=1, shared_region=None, offsets=Vec::new()))] + pub fn new( + name: String, + #[pyo3(from_py_with = "conversion::py_to_scalar_type")] + memory_type: quil_rs::instruction::ScalarType, + memory_size: u64, + shared_region: Option, + #[pyo3(from_py_with = "conversion::py_to_offsets")] offsets: Vec< + quil_rs::instruction::Offset, + >, + ) -> PyResult<(Self, Instruction)> { + let sharing = shared_region.map(|name| quil_rs::instruction::Sharing::new(name, offsets)); + + Ok(( + Self {}, + Instruction { + inner: quil_rs::instruction::Instruction::Declaration( + quil_rs::instruction::Declaration::new( + name, + quil_rs::instruction::Vector::new(memory_type, memory_size), + sharing, + ), + ), + }, + )) + } + + #[getter] + fn memory_type(self_: PyRef<'_, Self>) -> PyResult { + let instruction = self_.into_super(); + let declaration = extract_instruction_as!(instruction, Declaration)?; + string_from_scalar_type(declaration.size.data_type) + } + + #[setter] + fn set_memory_type(self_: PyRefMut<'_, Self>, memory_type: Bound<'_, PyAny>) -> PyResult<()> { + let mut instruction = self_.into_super(); + let memory_type = conversion::py_to_scalar_type(&memory_type)?; + let declaration = extract_instruction_as_mut!(instruction, Declaration)?; + declaration.size.data_type = memory_type; + Ok(()) + } + + #[getter] + fn memory_size(self_: PyRef<'_, Self>) -> PyResult { + let instruction = self_.into_super(); + let declaration = extract_instruction_as!(instruction, Declaration)?; + Ok(declaration.size.length) + } + + #[setter] + fn set_memory_size(self_: PyRefMut<'_, Self>, memory_size: u64) -> PyResult<()> { + let mut instruction = self_.into_super(); + let declaration = extract_instruction_as_mut!(instruction, Declaration)?; + declaration.size.length = memory_size; + Ok(()) + } + + #[getter] + fn shared_region(self_: PyRef<'_, Self>) -> PyResult> { + let instruction = self_.into_super(); + let declaration = extract_instruction_as!(instruction, Declaration)?; + Ok(declaration.sharing.clone().map(|sharing| sharing.name)) + } + + #[setter] + fn set_shared_region(self_: PyRefMut<'_, Self>, shared_region: Option) -> PyResult<()> { + let mut instruction = self_.into_super(); + let declaration = extract_instruction_as_mut!(instruction, Declaration)?; + declaration.sharing = shared_region.map(|region_name| { + quil_rs::instruction::Sharing::new( + region_name, + declaration + .sharing + .take() + .map(|sharing| sharing.offsets) + .unwrap_or_default(), + ) + }); + Ok(()) + } + + #[getter] + fn offsets(self_: PyRef<'_, Self>) -> PyResult>> { + let instruction = self_.into_super(); + let declaration = extract_instruction_as!(instruction, Declaration)?; + Ok(match &declaration.sharing { + None => None, + Some(sharing) => optional_tuples_from_offsets(sharing.offsets.clone())?, + }) + } + + #[setter] + fn set_offsets(self_: PyRefMut<'_, Self>, offsets: Bound<'_, PyAny>) -> PyResult<()> { + let mut instruction = self_.into_super(); + let offsets = conversion::py_to_offsets(&offsets)?; + let declaration = extract_instruction_as_mut!(instruction, Declaration)?; + match declaration.sharing { + None => {} + Some(ref mut sharing) => sharing.offsets = offsets, + } + Ok(()) + } + + fn asdict<'a>(self_: PyRef<'a, Self>, py: Python<'a>) -> PyResult> { + let instruction = self_.into_super(); + let declaration: &quil_rs::instruction::Declaration = + extract_instruction_as!(instruction, Declaration)?; + let dict = PyDict::new_bound(py); + dict.set_item("name", declaration.name.clone())?; + dict.set_item( + "memory_type", + string_from_scalar_type(declaration.size.data_type)?, + )?; + dict.set_item("memory_size", declaration.size.length)?; + dict.set_item( + "shared_region", + declaration.sharing.clone().map(|sharing| sharing.name), + )?; + dict.set_item( + "offsets", + match &declaration.sharing { + None => None, + Some(sharing) => optional_tuples_from_offsets(sharing.offsets.clone())?, + }, + )?; + + Ok(dict) + } +} diff --git a/rust/src/instruction/gate.rs b/rust/src/instruction/gate.rs new file mode 100644 index 000000000..aed680c38 --- /dev/null +++ b/rust/src/instruction/gate.rs @@ -0,0 +1,19 @@ +use pyo3::prelude::*; + +#[pyclass] +#[derive(Clone, Debug)] +pub enum GateModifier { + Controlled, + Dagger, + Forked, +} + +impl From for quil_rs::instruction::GateModifier { + fn from(modifier: GateModifier) -> Self { + match modifier { + GateModifier::Controlled => quil_rs::instruction::GateModifier::Controlled, + GateModifier::Dagger => quil_rs::instruction::GateModifier::Dagger, + GateModifier::Forked => quil_rs::instruction::GateModifier::Forked, + } + } +} diff --git a/rust/src/instruction/mod.rs b/rust/src/instruction/mod.rs new file mode 100644 index 000000000..779a0e542 --- /dev/null +++ b/rust/src/instruction/mod.rs @@ -0,0 +1,217 @@ +use pyo3::{ + exceptions::{PyRuntimeError, PyValueError}, + prelude::*, + types::PyBytes, +}; + +use std::{collections::HashMap, str::FromStr}; + +use quil_rs::quil::Quil; + +mod declaration; +mod gate; +mod quilt; + +pub use declaration::Declare; +pub use gate::*; +pub use quilt::*; + +use crate::impl_eq; + +pub fn init_module(_py: Python<'_>) -> PyResult> { + let m = PyModule::new_bound(_py, "instruction")?; + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + Ok(m) +} + +#[pyclass(subclass)] +#[derive(Clone, Debug, PartialEq)] +pub struct Instruction { + inner: quil_rs::instruction::Instruction, +} +impl_eq!(Instruction); + +impl From for quil_rs::instruction::Instruction { + fn from(instruction: Instruction) -> Self { + instruction.inner + } +} + +impl From for Instruction { + fn from(instruction: quil_rs::instruction::Instruction) -> Self { + Self { inner: instruction } + } +} + +#[pymethods] +impl Instruction { + fn out(&self) -> PyResult { + self.inner + .to_quil() + .map_err(|e| PyValueError::new_err(e.to_string())) + } + + pub fn __str__(&self) -> String { + self.inner.to_quil_or_debug() + } + + pub fn __repr__(&self) -> String { + self.inner.to_quil_or_debug() + } + + pub fn __deepcopy__(self_: PyRef<'_, Self>, _memo: &pyo3::types::PyDict) -> Self { + let mut instruction = Self { + inner: self_.inner.clone(), + }; + + let mut placeholders: HashMap< + quil_rs::instruction::QubitPlaceholder, + quil_rs::instruction::QubitPlaceholder, + > = HashMap::new(); + + for qubit in instruction.inner.get_qubits_mut() { + match qubit { + quil_rs::instruction::Qubit::Fixed(_) + | quil_rs::instruction::Qubit::Variable(_) => *qubit = qubit.clone(), + quil_rs::instruction::Qubit::Placeholder(placeholder) => { + *qubit = quil_rs::instruction::Qubit::Placeholder( + placeholders.entry(placeholder.clone()).or_default().clone(), + ) + } + } + } + + instruction + } + + pub fn __copy__(&self) -> Self { + self.clone() + } + + /// + pub fn __getstate__<'a>(&self, py: Python<'a>) -> PyResult> { + Ok(PyBytes::new_bound( + py, + self.inner + .to_quil() + .map_err(|e| { + PyValueError::new_err(format!("Could not serialize instruction: {}", e,)) + })? + .as_bytes(), + )) + } + + pub fn __setstate__<'a>( + &mut self, + _py: Python<'a>, + state: &Bound<'a, PyBytes>, + ) -> PyResult<()> { + let instructions = + quil_rs::program::Program::from_str(std::str::from_utf8(state.as_bytes()).map_err( + |e| PyValueError::new_err(format!("Could not deserialize non-utf-8 string: {}", e)), + )?) + .map_err(|e| PyRuntimeError::new_err(format!("Could not deserialize {}", e)))? + .into_instructions(); + + if instructions.len() != 1 { + return Err(PyRuntimeError::new_err(format!( + "Expected to deserialize a single instruction, got {}: {:?}", + instructions.len(), + instructions + ))); + } + + *self = Instruction { + inner: instructions + .into_iter() + .next() + .expect("Instructions has exactly one instruction."), + }; + + Ok(()) + } +} + +impl Instruction { + pub(crate) fn from_quil_rs(instruction: quil_rs::instruction::Instruction) -> Self { + Self { inner: instruction } + } +} + +#[macro_export] +macro_rules! impl_from_quil_rs( + ($name: ident, $rs_instruction: path, $variant_name: ident) => { + impl $name { + pub(crate) fn from_quil_rs(py: Python<'_>, rs_instruction: $rs_instruction) -> pyo3::PyResult { + let instruction = Instruction { + inner: quil_rs::instruction::Instruction::$variant_name(rs_instruction) + }; + + // This roundabout way of returning an Instruction subclass is necessary because + // a pyclass that extends another does not implement IntoPy, which makes it + // impossible to return from a pymethod. This is currently the only way to return + // a child class. + // https://github.com/PyO3/pyo3/issues/1836 + use pyo3::PyTypeInfo; + use pyo3::pyclass_init::PyObjectInit; + + // Adding a subclass of Self isn't strictly necessary, but it ensures that Self is + // truly a class that extends Instruction. If it's not, then the compiler will + // raise an error. + let initializer = pyo3::pyclass_init::PyClassInitializer::from(instruction).add_subclass::(Self {}); + + // SAFETY: `into_new_object` requires that the provided subtype be a valid + // pointer to a type object of the initializers T. We derive the type + // object from `Self`, which is also used to construct the initializer. + unsafe { + initializer + .into_new_object(py, Self::type_object_raw(py)) + .map(|ptr| PyObject::from_owned_ptr(py, ptr)) + } + } + } + } +); + +/// Attempts to return a reference to the inner quil-rs instruction of an [`Instruction`]. Returns +/// a result containing the reference if extraction was successful, or an error if the desired +/// type didn't match the contents of the instruction. +/// +/// * $py_ref is expected to be of type [`PyRef<'_, Instruction>`]. +/// * $dst_type should be the name of the variant as it appears on the +/// [`quil_rs::instruction::Instruction`] enum. +#[macro_export] +macro_rules! extract_instruction_as( + ($py_ref: ident, $dst_type: ident) => { + { + if let quil_rs::instruction::Instruction::$dst_type(__inner) = &$py_ref.inner { + Ok(__inner) + } else { + Err(pyo3::exceptions::PyRuntimeError::new_err(format!("Expected {} instruction, got: {:?}", stringify!($dst_type), $py_ref.inner))) + } + } + } +); + +/// Attempts to return a mutable reference to the inner quil-rs instruction of an [`Instruction`]. +/// Returns a result containing the reference if extraction was successful, or an error if the +/// desired type didn't match the contents of the instruction. +/// +/// * $py_ref is expected to be of type [`PyRefMut<'_, Instruction>`]. +/// * $dst_type should be the name of the variant as it appears on the +/// [`quil_rs::instruction::Instruction`] enum. +#[macro_export] +macro_rules! extract_instruction_as_mut( + ($py_ref_mut: ident, $dst_type: ident) => { + { + if let quil_rs::instruction::Instruction::$dst_type(__inner) = &mut $py_ref_mut.inner { + Ok(__inner) + } else { + Err(pyo3::exceptions::PyRuntimeError::new_err(format!("Expected {} instruction, got: {:?}", stringify!($dst_type), $py_ref_mut.inner))) + } + } + } +); diff --git a/rust/src/instruction/quilt.rs b/rust/src/instruction/quilt.rs new file mode 100644 index 000000000..3b7c7f268 --- /dev/null +++ b/rust/src/instruction/quilt.rs @@ -0,0 +1,322 @@ +//! [TODO:description] + +use pyo3::{ + exceptions::PyValueError, prelude::*, pyclass_init::PyObjectInit, type_object::PyTypeInfo, +}; + +use crate::{ + expression::{self, Expression, MemoryReference}, + impl_from_quil_rs, + instruction::Instruction, + primitive::QubitDesignator, +}; + +use super::GateModifier; + +#[pyclass(extends=Instruction)] +#[derive(Clone, Debug)] +pub struct DefCalibration {} +impl_from_quil_rs!( + DefCalibration, + quil_rs::instruction::Calibration, + CalibrationDefinition +); + +#[derive(FromPyObject, Clone, Debug)] +pub enum Parameter { + Expression(expression::Expression), + MemoryReference(expression::MemoryReference), + I64(i64), + F64(f64), + Complex(crate::Complex), + U64(u64), +} + +impl ToPyObject for Parameter { + fn to_object(&self, py: Python<'_>) -> PyObject { + match self { + Parameter::Expression(expression) => expression.clone().into_py(py), + Parameter::MemoryReference(memory_reference) => memory_reference.clone().into_py(py), + Parameter::I64(number) => number.to_object(py), + Parameter::F64(number) => number.to_object(py), + Parameter::Complex(number) => number.to_object(py), + Parameter::U64(number) => number.to_object(py), + } + } +} + +impl From for quil_rs::expression::Expression { + fn from(value: Parameter) -> Self { + match value { + Parameter::Expression(expression) => expression.into(), + Parameter::MemoryReference(memory_reference) => { + quil_rs::expression::Expression::Address(memory_reference.into()) + } + Parameter::I64(number) => quil_rs::expression::Expression::Number(crate::Complex { + re: number as f64, + im: 0.0, + }), + Parameter::U64(number) => quil_rs::expression::Expression::Number(crate::Complex { + re: number as f64, + im: 0.0, + }), + Parameter::F64(number) => quil_rs::expression::Expression::Number(number.into()), + Parameter::Complex(number) => quil_rs::expression::Expression::Number(number), + } + } +} + +impl From for Parameter { + fn from(value: quil_rs::expression::Expression) -> Self { + match value { + quil_rs::expression::Expression::Number(number) => { + if number.im == 0.0 { + if number.re as i64 as f64 == number.re { + Parameter::I64(number.re as i64) + } else if number.re as u64 as f64 == number.re { + Parameter::U64(number.re as u64) + } else { + Parameter::F64(number.re) + } + } else { + Parameter::Complex(number) + } + } + quil_rs::expression::Expression::Address(address) => { + Parameter::MemoryReference(address.into()) + } + quil_rs::expression::Expression::Prefix(_) + | quil_rs::expression::Expression::Infix(_) + | quil_rs::expression::Expression::FunctionCall(_) + | quil_rs::expression::Expression::Variable(_) + | quil_rs::expression::Expression::PiConstant => { + Parameter::Expression(Expression::from(value)) + } + } + } +} + +#[pymethods] +impl DefCalibration { + #[new] + fn new( + name: &str, + parameters: Vec, + qubits: Vec, + instructions: Vec, + modifiers: Option>, + ) -> PyResult<(Self, Instruction)> { + let calibration = quil_rs::instruction::Calibration::new( + name, + parameters + .into_iter() + .map(quil_rs::expression::Expression::from) + .collect(), + qubits + .into_iter() + .map(quil_rs::instruction::Qubit::from) + .collect(), + instructions + .into_iter() + .map(quil_rs::instruction::Instruction::from) + .collect(), + modifiers + .unwrap_or_default() + .into_iter() + .map(quil_rs::instruction::GateModifier::from) + .collect(), + ) + .map_err(|e| PyValueError::new_err(e.to_string()))?; + + Ok(( + Self {}, + Instruction::from_quil_rs(quil_rs::instruction::Instruction::CalibrationDefinition( + calibration, + )), + )) + } + + #[getter] + fn parameters(self_: PyRef<'_, Self>, py: Python<'_>) -> Vec { + let instruction = self_.into_super(); + if let quil_rs::instruction::Instruction::CalibrationDefinition(calibration) = + &(*instruction).inner + { + calibration + .parameters + .iter() + .cloned() + .map(|p| Parameter::from(p).to_object(py)) + .collect() + } else { + unreachable!() + } + } + + fn set_parameters(self_: PyRefMut<'_, Self>, parameters: Vec) { + let mut instruction = self_.into_super(); + if let quil_rs::instruction::Instruction::CalibrationDefinition(calibration) = + &mut instruction.inner + { + calibration.parameters = parameters + .into_iter() + .map(quil_rs::expression::Expression::from) + .collect() + } + } + + #[getter] + fn qubits(self_: PyRef<'_, Self>, py: Python) -> Vec { + let instruction = self_.into_super(); + if let quil_rs::instruction::Instruction::CalibrationDefinition(calibration) = + &(*instruction).inner + { + calibration + .qubits + .iter() + .cloned() + .map(|p| QubitDesignator::from(p).to_object(py)) + .collect() + } else { + unreachable!() + } + } + + #[setter] + fn set_qubits(self_: PyRefMut<'_, Self>, qubits: Vec) { + let mut instruction = self_.into_super(); + if let quil_rs::instruction::Instruction::CalibrationDefinition(calibration) = + &mut instruction.inner + { + calibration.qubits = qubits + .into_iter() + .map(quil_rs::instruction::Qubit::from) + .collect() + } + } + + #[getter] + fn instrs(self_: PyRef<'_, Self>, py: Python) -> Vec { + let instruction = self_.into_super(); + if let quil_rs::instruction::Instruction::CalibrationDefinition(calibration) = + &(*instruction).inner + { + calibration + .instructions + .iter() + .cloned() + .map(|p| Instruction::from(p).into_py(py)) + .collect() + } else { + unreachable!() + } + } + + #[setter] + fn set_instrs(self_: PyRefMut<'_, Self>, instructions: Vec) { + let mut instruction = self_.into_super(); + if let quil_rs::instruction::Instruction::CalibrationDefinition(calibration) = + &mut instruction.inner + { + calibration.instructions = instructions + .into_iter() + .map(quil_rs::instruction::Instruction::from) + .collect() + } else { + unreachable!() + } + } +} + +#[pyclass(extends=Instruction)] +#[derive(Clone, Debug)] +pub struct DefMeasureCalibration {} +impl_from_quil_rs!( + DefMeasureCalibration, + quil_rs::instruction::MeasureCalibrationDefinition, + MeasureCalibrationDefinition +); + +#[pymethods] +impl DefMeasureCalibration { + #[new] + #[pyo3(signature = (qubit, memory_reference, instrs))] + fn __new__( + qubit: Option, + memory_reference: MemoryReference, + instrs: Vec, + ) -> (Self, Instruction) { + ( + Self {}, + Instruction { + inner: quil_rs::instruction::Instruction::MeasureCalibrationDefinition( + quil_rs::instruction::MeasureCalibrationDefinition::new( + qubit.map(quil_rs::instruction::Qubit::from), + memory_reference.to_string(), + instrs + .into_iter() + .map(quil_rs::instruction::Instruction::from) + .collect(), + ), + ), + }, + ) + } + + #[getter] + fn qubit(self_: PyRef<'_, Self>, py: Python) -> Option { + let instruction = self_.into_super(); + if let quil_rs::instruction::Instruction::MeasureCalibrationDefinition(calibration) = + &instruction.inner + { + calibration + .qubit + .clone() + .map(|q| QubitDesignator::from(q).to_object(py)) + } else { + unreachable!() + } + } + + #[setter] + fn set_qubit(self_: PyRefMut<'_, Self>, qubit: Option) { + let mut instruction = self_.into_super(); + if let quil_rs::instruction::Instruction::MeasureCalibrationDefinition(calibration) = + &mut instruction.inner + { + calibration.qubit = qubit.map(quil_rs::instruction::Qubit::from) + } + } + + #[getter] + fn instrs(self_: PyRef<'_, Self>, py: Python<'_>) -> Vec { + let instruction = self_.into_super(); + if let quil_rs::instruction::Instruction::MeasureCalibrationDefinition(calibration) = + &(*instruction).inner + { + calibration + .instructions + .iter() + .cloned() + .map(|p| Instruction::from(p).into_py(py)) + .collect() + } else { + unreachable!() + } + } + + #[setter] + fn set_instrs(self_: PyRefMut<'_, Self>, instructions: Vec) { + let mut instruction = self_.into_super(); + if let quil_rs::instruction::Instruction::MeasureCalibrationDefinition(calibration) = + &mut instruction.inner + { + calibration.instructions = instructions + .into_iter() + .map(quil_rs::instruction::Instruction::from) + .collect() + } else { + unreachable!() + } + } +} diff --git a/rust/src/lib.rs b/rust/src/lib.rs new file mode 100644 index 000000000..224781bde --- /dev/null +++ b/rust/src/lib.rs @@ -0,0 +1,117 @@ +#![deny(clippy::all)] + +use pyo3::prelude::*; + +mod conversion; +mod expression; +mod instruction; +mod primitive; +mod program; + +// A standard complex number type for the crate to use. +// This is equivalent to numpy's complex128 type. +pub type Complex = num_complex::Complex; + +#[pymodule] +#[pyo3(name = "_core")] +fn pyquil(py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> { + initalize_submodule(py, "instruction", m, &instruction::init_module(py)?)?; + initalize_submodule(py, "expression", m, &expression::init_module(py)?)?; + initalize_submodule(py, "primitive", m, &primitive::init_module(py)?)?; + Ok(()) +} + +fn initalize_submodule( + py: Python<'_>, + name: &str, + parent_module: &Bound<'_, PyModule>, + submodule: &Bound<'_, PyModule>, +) -> PyResult<()> { + parent_module.add_submodule(submodule)?; + let sys_modules = py.import_bound("sys")?.getattr("modules")?; + let qualified_name = format!( + "{}.{}", + parent_module.getattr("__name__")?.extract::()?, + name + ); + sys_modules.set_item(&qualified_name, submodule)?; + submodule.setattr("__name__", &qualified_name)?; + Ok(()) +} + +/// Implement the __hash__ dunder method for a pyclass. The pyclass must impl [`std::hash::Hash`]. +#[macro_export] +macro_rules! impl_hash { + ($name: ident) => { + #[pymethods] + impl $name { + fn __hash__(&self) -> u64 { + use std::hash::{DefaultHasher, Hasher}; + let mut state = DefaultHasher::new(); + self.hash(&mut state); + state.finish() + } + } + }; +} + +/// Implement the == and != operators for a pyclass by implementing the __richcmp__ dunder method. +/// The pyclass must implement [`std::cmp::PartialEq`]. +#[macro_export] +macro_rules! impl_eq { + ($name: ident) => { + #[pymethods] + impl $name { + fn __richcmp__( + &self, + other: &Self, + op: pyo3::class::basic::CompareOp, + py: Python<'_>, + ) -> PyObject { + match op { + pyo3::class::basic::CompareOp::Eq => (self == other).into_py(py), + pyo3::class::basic::CompareOp::Ne => (self != other).into_py(py), + _ => py.NotImplemented(), + } + } + } + }; +} + +/// Implement pickling for a pyclass. The pyclass must implement [`serde::Serialize`] and +/// [`serde::Deserialize`]. +#[macro_export] +macro_rules! impl_pickle_for_serialize { + ($name: ident) => { + impl $name { + pub fn __getstate__<'a>( + &self, + py: pyo3::Python<'a>, + ) -> PyResult> { + Ok(pyo3::types::PyBytes::new_bound( + py, + &bincode::serialize(&self).map_err(|e| { + pyo3::exceptions::PyRuntimeError::new_err(format!( + "Could not serialize: {}", + e.to_string() + )) + })?, + )) + } + + pub fn __setstate__<'a>( + &mut self, + _py: pyo3::Python<'a>, + state: pyo3::Bound<'a, pyo3::types::PyBytes>, + ) -> PyResult<()> { + *self = bincode::deserialize(state.as_bytes()).map_err(|e| { + pyo3::exceptions::PyRuntimeError::new_err(format!( + "Could not serialize: {}", + e.to_string() + )) + })?; + Ok(()) + } + } + }; +} diff --git a/rust/src/primitive/mod.rs b/rust/src/primitive/mod.rs new file mode 100644 index 000000000..de4f79ad0 --- /dev/null +++ b/rust/src/primitive/mod.rs @@ -0,0 +1,11 @@ +use pyo3::prelude::*; + +mod qubit; + +pub use qubit::*; + +pub(crate) fn init_module(py: Python) -> PyResult> { + let m = PyModule::new_bound(py, "primitive")?; + m.add_class::()?; + Ok(m) +} diff --git a/rust/src/primitive/qubit.rs b/rust/src/primitive/qubit.rs new file mode 100644 index 000000000..fb0eeab15 --- /dev/null +++ b/rust/src/primitive/qubit.rs @@ -0,0 +1,90 @@ +use std::hash::Hash; + +use pyo3::prelude::*; + +use crate::{impl_eq, impl_hash}; + +#[derive(FromPyObject, Clone)] +pub enum QubitDesignator { + Fixed(Qubit), + FixedInt(u64), + FormalArgument(FormalArgument), + Placeholder(QubitPlaceholder), +} + +impl From for quil_rs::instruction::Qubit { + fn from(designator: QubitDesignator) -> Self { + match designator { + QubitDesignator::Fixed(qubit) => quil_rs::instruction::Qubit::Fixed(qubit.index), + QubitDesignator::FixedInt(qubit) => quil_rs::instruction::Qubit::Fixed(qubit), + QubitDesignator::FormalArgument(argument) => { + quil_rs::instruction::Qubit::Variable(argument.0) + } + QubitDesignator::Placeholder(placeholder) => { + quil_rs::instruction::Qubit::Placeholder(placeholder.0) + } + } + } +} + +impl From for QubitDesignator { + fn from(value: quil_rs::instruction::Qubit) -> Self { + match value { + quil_rs::instruction::Qubit::Fixed(index) => QubitDesignator::Fixed(Qubit { index }), + quil_rs::instruction::Qubit::Variable(argument) => { + QubitDesignator::FormalArgument(FormalArgument(argument)) + } + quil_rs::instruction::Qubit::Placeholder(placeholder) => { + QubitDesignator::Placeholder(QubitPlaceholder(placeholder)) + } + } + } +} + +impl ToPyObject for QubitDesignator { + fn to_object(&self, py: Python<'_>) -> PyObject { + match self { + QubitDesignator::Fixed(qubit) => qubit.clone().into_py(py), + QubitDesignator::FixedInt(qubit) => qubit.to_object(py), + QubitDesignator::FormalArgument(argument) => argument.clone().into_py(py), + QubitDesignator::Placeholder(placeholder) => placeholder.clone().into_py(py), + } + } +} + +#[pyclass] +#[derive(Clone, Debug, Hash, PartialEq)] +pub struct QubitPlaceholder(quil_rs::instruction::QubitPlaceholder); + +#[pyclass] +#[derive(Clone, Debug, Hash, PartialEq)] +pub struct FormalArgument(String); + +#[pyclass] +#[derive(Clone, Debug, Hash, PartialEq, Eq)] +pub struct Qubit { + #[pyo3(get, set)] + index: u64, +} +impl_hash!(Qubit); +impl_eq!(Qubit); + +#[pymethods] +impl Qubit { + #[new] + fn __new__(index: u64) -> Self { + Qubit { index } + } + + fn out(&self) -> String { + self.index.to_string() + } + + fn __str__(&self) -> String { + self.out() + } + + fn __repr__(&self) -> String { + format!("", self.index) + } +} diff --git a/rust/src/program.rs b/rust/src/program.rs new file mode 100644 index 000000000..5e9890805 --- /dev/null +++ b/rust/src/program.rs @@ -0,0 +1,129 @@ +use std::str::FromStr; + +use indexmap::IndexMap; +use pyo3::{exceptions::PyValueError, prelude::*}; + +use crate::instruction::{Declare, DefCalibration, DefMeasureCalibration, Instruction}; + +#[pyclass] +#[derive(Clone, Debug)] +pub struct Program { + inner: quil_rs::Program, + #[pyo3(get, set)] + num_shots: u64, +} + +#[derive(FromPyObject, Clone, Debug)] +pub enum InstructionDesignator { + Instruction(Instruction), + // RsInstruction(quil_rs::instruction::Instruction), + Serialized(String), + Program(Program), + // RsProgram(quil_rs::Program), + // Sequence(Vec), + // Tuple + // Generator +} + +#[pymethods] +impl Program { + #[new] + #[pyo3(signature=(instructions = None, *, num_shots = None))] + fn new(instructions: Option, num_shots: Option) -> PyResult { + let num_shots = num_shots.unwrap_or(1); + Ok(match instructions { + None => Self { + inner: quil_rs::Program::new(), + num_shots, + }, + Some(InstructionDesignator::Instruction(instruction)) => Self { + inner: quil_rs::Program::from_instructions(vec![instruction.into()]), + num_shots, + }, + // Some(InstructionDesignator::RsInstruction(instruction)) => Self { + // inner: quil_rs::Program::from_instructions(vec![instruction]), + // num_shots, + // }, + Some(InstructionDesignator::Serialized(program)) => Self { + inner: quil_rs::Program::from_str(&program).map_err(|e| { + PyValueError::new_err(format!("Failed to parse Quil program: {e}")) + })?, + num_shots, + }, + Some(InstructionDesignator::Program(program)) => program.clone(), + // Some(InstructionDesignator::RsProgram(program)) => Self { + // inner: program.clone(), + // num_shots, + // }, + }) + } + + #[getter] + fn calibrations(&self, py: Python<'_>) -> PyResult> { + self.inner + .calibrations + .calibrations() + .iter() + .cloned() + .map(|c| DefCalibration::from_quil_rs(py, c)) + .collect::>>() + } + + #[getter] + fn measure_calibrations(&self, py: Python<'_>) -> PyResult> { + self.inner + .calibrations + .measure_calibrations() + .iter() + .cloned() + .map(|c| DefMeasureCalibration::from_quil_rs(py, c)) + .collect::>>() + } + + fn declarations(&self, py: Python<'_>) -> PyResult> { + self.iter_declarations() + .map(|declaration| { + Ok(( + declaration.name.clone(), + Declare::from_quil_rs(py, declaration)?, + )) + }) + .collect() + } + + #[getter] + fn instructions(&self) -> Vec { + // pyQuil defines this property as Declarations + quil_rs body instructions + self.iter_declarations() + .map(|declaration| { + Instruction::from_quil_rs(quil_rs::instruction::Instruction::Declaration( + declaration, + )) + }) + .chain( + self.inner + .body_instructions() + .cloned() + .map(Instruction::from_quil_rs), + ) + .collect() + } +} + +impl Program { + fn iter_declarations(&self) -> impl Iterator { + self.inner + .memory_regions + .clone() + .into_iter() + .map(|(name, descriptor)| { + quil_rs::instruction::Declaration::new(name, descriptor.size, descriptor.sharing) + }) + } +} + +#[pymodule] +pub fn program(_py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> { + m.add_class::()?; + Ok(()) +} diff --git a/src/pyquil/__init__.py b/src/pyquil/__init__.py new file mode 100644 index 000000000..65b19d2fe --- /dev/null +++ b/src/pyquil/__init__.py @@ -0,0 +1,7 @@ +from pyquil._version import pyquil_version +from pyquil.api import get_qc, list_quantum_computers +from pyquil.quil import Program + +__version__ = pyquil_version + +__all__ = ["__version__", "Program", "get_qc", "list_quantum_computers"] diff --git a/src/pyquil/_instruction/__init__.py b/src/pyquil/_instruction/__init__.py new file mode 100644 index 000000000..b186b5d54 --- /dev/null +++ b/src/pyquil/_instruction/__init__.py @@ -0,0 +1,3 @@ +from pyquil._core import instruction + +DefCalibration = instruction.DefCalibration diff --git a/pyquil/_version.py b/src/pyquil/_version.py similarity index 100% rename from pyquil/_version.py rename to src/pyquil/_version.py diff --git a/pyquil/api/__init__.py b/src/pyquil/api/__init__.py similarity index 100% rename from pyquil/api/__init__.py rename to src/pyquil/api/__init__.py diff --git a/pyquil/api/_abstract_compiler.py b/src/pyquil/api/_abstract_compiler.py similarity index 100% rename from pyquil/api/_abstract_compiler.py rename to src/pyquil/api/_abstract_compiler.py diff --git a/pyquil/api/_benchmark.py b/src/pyquil/api/_benchmark.py similarity index 100% rename from pyquil/api/_benchmark.py rename to src/pyquil/api/_benchmark.py diff --git a/pyquil/api/_compiler.py b/src/pyquil/api/_compiler.py similarity index 100% rename from pyquil/api/_compiler.py rename to src/pyquil/api/_compiler.py diff --git a/pyquil/api/_compiler_client.py b/src/pyquil/api/_compiler_client.py similarity index 100% rename from pyquil/api/_compiler_client.py rename to src/pyquil/api/_compiler_client.py diff --git a/pyquil/api/_errors.py b/src/pyquil/api/_errors.py similarity index 100% rename from pyquil/api/_errors.py rename to src/pyquil/api/_errors.py diff --git a/pyquil/api/_logger.py b/src/pyquil/api/_logger.py similarity index 100% rename from pyquil/api/_logger.py rename to src/pyquil/api/_logger.py diff --git a/pyquil/api/_qam.py b/src/pyquil/api/_qam.py similarity index 100% rename from pyquil/api/_qam.py rename to src/pyquil/api/_qam.py diff --git a/pyquil/api/_qpu.py b/src/pyquil/api/_qpu.py similarity index 100% rename from pyquil/api/_qpu.py rename to src/pyquil/api/_qpu.py diff --git a/pyquil/api/_quantum_computer.py b/src/pyquil/api/_quantum_computer.py similarity index 100% rename from pyquil/api/_quantum_computer.py rename to src/pyquil/api/_quantum_computer.py diff --git a/pyquil/api/_qvm.py b/src/pyquil/api/_qvm.py similarity index 100% rename from pyquil/api/_qvm.py rename to src/pyquil/api/_qvm.py diff --git a/pyquil/api/_rewrite_arithmetic.py b/src/pyquil/api/_rewrite_arithmetic.py similarity index 100% rename from pyquil/api/_rewrite_arithmetic.py rename to src/pyquil/api/_rewrite_arithmetic.py diff --git a/pyquil/api/_wavefunction_simulator.py b/src/pyquil/api/_wavefunction_simulator.py similarity index 100% rename from pyquil/api/_wavefunction_simulator.py rename to src/pyquil/api/_wavefunction_simulator.py diff --git a/pyquil/conftest.py b/src/pyquil/conftest.py similarity index 100% rename from pyquil/conftest.py rename to src/pyquil/conftest.py diff --git a/pyquil/diagnostics.py b/src/pyquil/diagnostics.py similarity index 100% rename from pyquil/diagnostics.py rename to src/pyquil/diagnostics.py diff --git a/pyquil/experiment/__init__.py b/src/pyquil/experiment/__init__.py similarity index 100% rename from pyquil/experiment/__init__.py rename to src/pyquil/experiment/__init__.py diff --git a/pyquil/experiment/_calibration.py b/src/pyquil/experiment/_calibration.py similarity index 100% rename from pyquil/experiment/_calibration.py rename to src/pyquil/experiment/_calibration.py diff --git a/pyquil/experiment/_group.py b/src/pyquil/experiment/_group.py similarity index 100% rename from pyquil/experiment/_group.py rename to src/pyquil/experiment/_group.py diff --git a/pyquil/experiment/_main.py b/src/pyquil/experiment/_main.py similarity index 100% rename from pyquil/experiment/_main.py rename to src/pyquil/experiment/_main.py diff --git a/pyquil/experiment/_memory.py b/src/pyquil/experiment/_memory.py similarity index 100% rename from pyquil/experiment/_memory.py rename to src/pyquil/experiment/_memory.py diff --git a/pyquil/experiment/_program.py b/src/pyquil/experiment/_program.py similarity index 100% rename from pyquil/experiment/_program.py rename to src/pyquil/experiment/_program.py diff --git a/pyquil/experiment/_result.py b/src/pyquil/experiment/_result.py similarity index 100% rename from pyquil/experiment/_result.py rename to src/pyquil/experiment/_result.py diff --git a/pyquil/experiment/_setting.py b/src/pyquil/experiment/_setting.py similarity index 100% rename from pyquil/experiment/_setting.py rename to src/pyquil/experiment/_setting.py diff --git a/pyquil/experiment/_symmetrization.py b/src/pyquil/experiment/_symmetrization.py similarity index 100% rename from pyquil/experiment/_symmetrization.py rename to src/pyquil/experiment/_symmetrization.py diff --git a/pyquil/external/README.md b/src/pyquil/external/README.md similarity index 100% rename from pyquil/external/README.md rename to src/pyquil/external/README.md diff --git a/pyquil/external/__init__.py b/src/pyquil/external/__init__.py similarity index 100% rename from pyquil/external/__init__.py rename to src/pyquil/external/__init__.py diff --git a/pyquil/external/rpcq.py b/src/pyquil/external/rpcq.py similarity index 100% rename from pyquil/external/rpcq.py rename to src/pyquil/external/rpcq.py diff --git a/pyquil/gates.py b/src/pyquil/gates.py similarity index 100% rename from pyquil/gates.py rename to src/pyquil/gates.py diff --git a/pyquil/latex/__init__.py b/src/pyquil/latex/__init__.py similarity index 100% rename from pyquil/latex/__init__.py rename to src/pyquil/latex/__init__.py diff --git a/pyquil/latex/_diagram.py b/src/pyquil/latex/_diagram.py similarity index 100% rename from pyquil/latex/_diagram.py rename to src/pyquil/latex/_diagram.py diff --git a/pyquil/latex/_ipython.py b/src/pyquil/latex/_ipython.py similarity index 100% rename from pyquil/latex/_ipython.py rename to src/pyquil/latex/_ipython.py diff --git a/pyquil/latex/_main.py b/src/pyquil/latex/_main.py similarity index 100% rename from pyquil/latex/_main.py rename to src/pyquil/latex/_main.py diff --git a/pyquil/latex/latex_generation.py b/src/pyquil/latex/latex_generation.py similarity index 100% rename from pyquil/latex/latex_generation.py rename to src/pyquil/latex/latex_generation.py diff --git a/pyquil/noise.py b/src/pyquil/noise.py similarity index 100% rename from pyquil/noise.py rename to src/pyquil/noise.py diff --git a/pyquil/noise_gates.py b/src/pyquil/noise_gates.py similarity index 100% rename from pyquil/noise_gates.py rename to src/pyquil/noise_gates.py diff --git a/pyquil/operator_estimation.py b/src/pyquil/operator_estimation.py similarity index 100% rename from pyquil/operator_estimation.py rename to src/pyquil/operator_estimation.py diff --git a/pyquil/paulis.py b/src/pyquil/paulis.py similarity index 100% rename from pyquil/paulis.py rename to src/pyquil/paulis.py diff --git a/pyquil/py.typed b/src/pyquil/py.typed similarity index 100% rename from pyquil/py.typed rename to src/pyquil/py.typed diff --git a/pyquil/pyqvm.py b/src/pyquil/pyqvm.py similarity index 100% rename from pyquil/pyqvm.py rename to src/pyquil/pyqvm.py diff --git a/pyquil/quantum_processor/__init__.py b/src/pyquil/quantum_processor/__init__.py similarity index 100% rename from pyquil/quantum_processor/__init__.py rename to src/pyquil/quantum_processor/__init__.py diff --git a/pyquil/quantum_processor/_base.py b/src/pyquil/quantum_processor/_base.py similarity index 100% rename from pyquil/quantum_processor/_base.py rename to src/pyquil/quantum_processor/_base.py diff --git a/pyquil/quantum_processor/_isa.py b/src/pyquil/quantum_processor/_isa.py similarity index 100% rename from pyquil/quantum_processor/_isa.py rename to src/pyquil/quantum_processor/_isa.py diff --git a/pyquil/quantum_processor/compiler.py b/src/pyquil/quantum_processor/compiler.py similarity index 100% rename from pyquil/quantum_processor/compiler.py rename to src/pyquil/quantum_processor/compiler.py diff --git a/pyquil/quantum_processor/graph.py b/src/pyquil/quantum_processor/graph.py similarity index 100% rename from pyquil/quantum_processor/graph.py rename to src/pyquil/quantum_processor/graph.py diff --git a/pyquil/quantum_processor/qcs.py b/src/pyquil/quantum_processor/qcs.py similarity index 100% rename from pyquil/quantum_processor/qcs.py rename to src/pyquil/quantum_processor/qcs.py diff --git a/pyquil/quantum_processor/transformers/__init__.py b/src/pyquil/quantum_processor/transformers/__init__.py similarity index 100% rename from pyquil/quantum_processor/transformers/__init__.py rename to src/pyquil/quantum_processor/transformers/__init__.py diff --git a/pyquil/quantum_processor/transformers/compiler_isa_to_graph.py b/src/pyquil/quantum_processor/transformers/compiler_isa_to_graph.py similarity index 100% rename from pyquil/quantum_processor/transformers/compiler_isa_to_graph.py rename to src/pyquil/quantum_processor/transformers/compiler_isa_to_graph.py diff --git a/pyquil/quantum_processor/transformers/graph_to_compiler_isa.py b/src/pyquil/quantum_processor/transformers/graph_to_compiler_isa.py similarity index 100% rename from pyquil/quantum_processor/transformers/graph_to_compiler_isa.py rename to src/pyquil/quantum_processor/transformers/graph_to_compiler_isa.py diff --git a/pyquil/quantum_processor/transformers/qcs_isa_to_compiler_isa.py b/src/pyquil/quantum_processor/transformers/qcs_isa_to_compiler_isa.py similarity index 100% rename from pyquil/quantum_processor/transformers/qcs_isa_to_compiler_isa.py rename to src/pyquil/quantum_processor/transformers/qcs_isa_to_compiler_isa.py diff --git a/pyquil/quantum_processor/transformers/qcs_isa_to_graph.py b/src/pyquil/quantum_processor/transformers/qcs_isa_to_graph.py similarity index 100% rename from pyquil/quantum_processor/transformers/qcs_isa_to_graph.py rename to src/pyquil/quantum_processor/transformers/qcs_isa_to_graph.py diff --git a/pyquil/quil.py b/src/pyquil/quil.py similarity index 100% rename from pyquil/quil.py rename to src/pyquil/quil.py diff --git a/pyquil/quilatom.py b/src/pyquil/quilatom.py similarity index 95% rename from pyquil/quilatom.py rename to src/pyquil/quilatom.py index 7cd7e7c53..680718176 100644 --- a/pyquil/quilatom.py +++ b/src/pyquil/quilatom.py @@ -13,39 +13,36 @@ # See the License for the specific language governing permissions and # limitations under the License. ############################################################################## -from fractions import Fraction import inspect +from fractions import Fraction from numbers import Number from typing import ( Any, Callable, ClassVar, Dict, - List, Iterable, + List, Mapping, NoReturn, Optional, - Set, Sequence, + Set, Tuple, Type, Union, cast, ) -from typing_extensions import Self -from deprecated.sphinx import deprecated import numpy as np - -import quil.instructions as quil_rs import quil.expression as quil_rs_expr +import quil.instructions as quil_rs +from deprecated.sphinx import deprecated +from typing_extensions import Self class QuilAtom(object): - """ - Abstract class for atomic elements of Quil. - """ + """Abstract class for atomic elements of Quil.""" def out(self) -> str: raise NotImplementedError() @@ -64,8 +61,7 @@ def __hash__(self) -> int: class Qubit(QuilAtom): - """ - Representation of a qubit. + """Representation of a qubit. :param index: Index of the qubit. """ @@ -92,8 +88,7 @@ def __eq__(self, other: object) -> bool: class FormalArgument(QuilAtom): - """ - Representation of a formal argument associated with a DEFCIRCUIT or DEFGATE ... AS PAULI-SUM + """Representation of a formal argument associated with a DEFCIRCUIT or DEFGATE ... AS PAULI-SUM or DEFCAL form. """ @@ -220,8 +215,7 @@ def _convert_to_py_qubits(qubits: Iterable[Union[QubitDesignator, quil_rs.Qubit] def unpack_qubit(qubit: Union[QubitDesignator, FormalArgument]) -> Union[Qubit, QubitPlaceholder, FormalArgument]: - """ - Get a qubit from an object. + """Get a qubit from an object. :param qubit: the qubit designator to unpack. :return: A Qubit or QubitPlaceholder instance @@ -239,8 +233,7 @@ def unpack_qubit(qubit: Union[QubitDesignator, FormalArgument]) -> Union[Qubit, def qubit_index(qubit: QubitDesignator) -> int: - """ - Get the index of a QubitDesignator. + """Get the index of a QubitDesignator. :param qubit: the qubit designator. :return: An int that is the qubit index. @@ -261,8 +254,7 @@ def qubit_index(qubit: QubitDesignator) -> int: def unpack_classical_reg(c: MemoryReferenceDesignator) -> "MemoryReference": - """ - Get the address for a classical register. + """Get the address for a classical register. :param c: A list of length 2, a pair, a string (to be interpreted as name[0]), or a MemoryReference. @@ -287,8 +279,7 @@ def unpack_classical_reg(c: MemoryReferenceDesignator) -> "MemoryReference": class Label(QuilAtom): - """ - Representation of a label. + """Representation of a label. :param label_name: The label name. """ @@ -382,8 +373,7 @@ def _convert_to_rs_expressions( @deprecated(version="4.0", reason="This function has been superseded by the `quil` package and will be removed soon.") def format_parameter(element: ParameterDesignator) -> str: - """ - Formats a particular parameter. Essentially the same as built-in formatting except using 'i' + """Formats a particular parameter. Essentially the same as built-in formatting except using 'i' instead of 'j' for the imaginary number. :param element: The parameter to format for Quil output. @@ -481,8 +471,7 @@ def _convert_to_py_expressions( class Expression(object): - """ - Expression involving some unbound parameters. Parameters in Quil are represented as a label + """Expression involving some unbound parameters. Parameters in Quil are represented as a label like '%x' for the parameter named 'x'. An example expression therefore may be '%x*(%y/4)'. Expressions may also have function calls, supported functions in Quil are sin, cos, sqrt, exp, @@ -542,8 +531,7 @@ def _substitute(self, d: Any) -> ExpressionDesignator: def substitute(expr: ExpressionDesignator, d: ParameterSubstitutionsMapDesignator) -> ExpressionDesignator: - """ - Using a dictionary of substitutions ``d``, try and explicitly evaluate as much of ``expr`` as + """Using a dictionary of substitutions ``d``, try and explicitly evaluate as much of ``expr`` as possible. This supports substitution of both parameters and memory references. Each memory reference must be individually assigned a value at each memory offset to be substituted. @@ -557,8 +545,7 @@ def substitute(expr: ExpressionDesignator, d: ParameterSubstitutionsMapDesignato def substitute_array(a: Union[Sequence[Expression], np.ndarray], d: ParameterSubstitutionsMapDesignator) -> np.ndarray: - """ - Apply ``substitute`` to all elements of an array ``a`` and return the resulting array. + """Apply ``substitute`` to all elements of an array ``a`` and return the resulting array. :param a: The array of expressions whose parameters or memory references are to be substituted. :param d: Numerical substitutions for parameters or memory references, for all array elements. @@ -569,9 +556,7 @@ def substitute_array(a: Union[Sequence[Expression], np.ndarray], d: ParameterSub class Parameter(QuilAtom, Expression): - """ - Parameters in Quil are represented as a label like '%x' for the parameter named 'x'. - """ + """Parameters in Quil are represented as a label like '%x' for the parameter named 'x'.""" def __init__(self, name: str): self.name = name @@ -593,9 +578,7 @@ def __eq__(self, other: object) -> bool: class Function(Expression): - """ - Supported functions in Quil are sin, cos, sqrt, exp, and cis - """ + """Supported functions in Quil are sin, cos, sqrt, exp, and cis""" def __init__( self, @@ -766,8 +749,7 @@ def __init__(self, op1: ExpressionDesignator, op2: ExpressionDesignator): def _expression_to_string(expression: ExpressionDesignator) -> str: - """ - Recursively converts an expression to a string taking into account precedence and associativity + """Recursively converts an expression to a string taking into account precedence and associativity for placing parenthesis. :param expression: expression involving parameters @@ -805,8 +787,7 @@ def _expression_to_string(expression: ExpressionDesignator) -> str: def _contained_parameters(expression: ExpressionDesignator) -> Set[Parameter]: - """ - Determine which parameters are contained in this expression. + """Determine which parameters are contained in this expression. :param expression: expression involving parameters :return: set of parameters contained in this expression @@ -822,8 +803,7 @@ def _contained_parameters(expression: ExpressionDesignator) -> Set[Parameter]: def _check_for_pi(element: float) -> str: - """ - Check to see if there exists a rational number r = p/q + """Check to see if there exists a rational number r = p/q in reduced form for which the difference between element/np.pi and r is small and q <= 8. @@ -849,8 +829,7 @@ def _check_for_pi(element: float) -> str: class MemoryReference(QuilAtom, Expression): - """ - Representation of a reference to a classical memory address. + """Representation of a reference to a classical memory address. :param name: The name of the variable :param offset: Everything in Quil is a C-style array, so every memory reference has an offset. @@ -925,8 +904,7 @@ def _substitute( def _contained_mrefs(expression: ExpressionDesignator) -> Set[MemoryReference]: - """ - Determine which memory references are contained in this expression. + """Determine which memory references are contained in this expression. :param expression: expression involving parameters :return: set of parameters contained in this expression @@ -942,9 +920,7 @@ def _contained_mrefs(expression: ExpressionDesignator) -> Set[MemoryReference]: class Frame(quil_rs.FrameIdentifier): - """ - Representation of a frame descriptor. - """ + """Representation of a frame descriptor.""" def __new__(cls, qubits: Sequence[QubitDesignator], name: str) -> Self: return super().__new__(cls, name, _convert_to_rs_qubits(qubits)) @@ -996,9 +972,7 @@ def __str__(self) -> str: reason="The WaveformReference class will be removed, consider using WaveformInvocation instead.", ) class WaveformReference(WaveformInvocation): - """ - Representation of a Waveform reference. - """ + """Representation of a Waveform reference.""" def __new__(cls, name: str) -> Self: return super().__new__(cls, name, {}) @@ -1007,12 +981,12 @@ def __new__(cls, name: str) -> Self: def _template_waveform_property( name: str, *, dtype: Optional[Union[Type[int], Type[float]]] = None, doc: Optional[str] = None ) -> property: - """ - Helper method for initializing getters, setters, and deleters for + """Helper method for initializing getters, setters, and deleters for parameters on a ``TemplateWaveform``. Should only be used inside of ``TemplateWaveform`` or one its base classes. - Parameters: + Parameters + ---------- name - The name of the property dtype - `dtype` is an optional parameter that takes the int or float type, and attempts to convert the underlying complex value by casting the real part to `dtype`. If set, this @@ -1115,19 +1089,18 @@ def samples(self, rate: float) -> np.ndarray: @classmethod def _from_rs_waveform_invocation(cls, waveform: quil_rs.WaveformInvocation) -> "TemplateWaveform": - """ - The ``quil`` package has no equivalent to ``TemplateWaveform``s, this function checks the name and + """The ``quil`` package has no equivalent to ``TemplateWaveform``s, this function checks the name and properties of a ``quil`` ``WaveformInvocation`` to see if they potentially match a subclass of ``TemplateWaveform``. If a match is found and construction succeeds, then that type is returned. Otherwise, a generic ``WaveformInvocation`` is returned. """ from pyquil.quiltwaveforms import ( + BoxcarAveragerKernel, + DragGaussianWaveform, + ErfSquareWaveform, FlatWaveform, GaussianWaveform, - DragGaussianWaveform, HrmGaussianWaveform, - ErfSquareWaveform, - BoxcarAveragerKernel, ) template: Type["TemplateWaveform"] # mypy needs a type annotation here to understand this. diff --git a/pyquil/quilbase.py b/src/pyquil/quilbase.py similarity index 94% rename from pyquil/quilbase.py rename to src/pyquil/quilbase.py index 281aff2af..31410dcd6 100644 --- a/pyquil/quilbase.py +++ b/src/pyquil/quilbase.py @@ -13,12 +13,11 @@ # See the License for the specific language governing permissions and # limitations under the License. ############################################################################## -""" -Contains the core pyQuil objects that correspond to Quil instructions. +"""Contains the core pyQuil objects that correspond to Quil instructions. """ import abc - from typing import ( + TYPE_CHECKING, Any, Callable, ClassVar, @@ -31,48 +30,48 @@ Set, Tuple, Union, - TYPE_CHECKING, ) -from typing_extensions import Self import numpy as np from deprecated.sphinx import deprecated +from typing_extensions import Self from pyquil.quilatom import ( Expression, + FormalArgument, + Frame, Label, LabelPlaceholder, MemoryReference, Parameter, ParameterDesignator, - Frame, - Waveform, Qubit, QubitDesignator, QubitPlaceholder, - FormalArgument, + Waveform, + _convert_to_py_expression, + _convert_to_py_expressions, _convert_to_py_qubit, _convert_to_py_qubits, + _convert_to_py_waveform, _convert_to_rs_expression, _convert_to_rs_expressions, _convert_to_rs_qubit, _convert_to_rs_qubits, - _convert_to_py_expression, - _convert_to_py_expressions, - _convert_to_py_waveform, unpack_qubit, ) if TYPE_CHECKING: # avoids circular import from pyquil.paulis import PauliSum -import quil.instructions as quil_rs import quil.expression as quil_rs_expr +import quil.instructions as quil_rs + +from pyquil._instruction import DefCalibration class _InstructionMeta(abc.ABCMeta): - """ - A metaclass that allows us to group all instruction types from quil-rs and pyQuil as an `AbstractInstruction`. + """A metaclass that allows us to group all instruction types from quil-rs and pyQuil as an `AbstractInstruction`. As such, this should _only_ be used as a metaclass for `AbstractInstruction`. """ @@ -97,9 +96,7 @@ def __instancecheck__(self, __instance: Any) -> bool: class AbstractInstruction(metaclass=_InstructionMeta): - """ - Abstract class for representing single instructions. - """ + """Abstract class for representing single instructions.""" def __str__(self) -> str: return self.__repr__() @@ -330,9 +327,7 @@ def _convert_to_py_instructions(instrs: Iterable[quil_rs.Instruction]) -> List[A class Gate(quil_rs.Gate, AbstractInstruction): - """ - This is the pyQuil object for a quantum gate instruction. - """ + """This is the pyQuil object for a quantum gate instruction.""" def __new__( cls, @@ -407,8 +402,7 @@ def controlled( Sequence[Union[QubitDesignator, quil_rs.Qubit]], ], ) -> "Gate": - """ - Add the CONTROLLED modifier to the gate with the given control qubit or Sequence of control + """Add the CONTROLLED modifier to the gate with the given control qubit or Sequence of control qubits. """ if isinstance(control_qubit, Sequence): @@ -424,8 +418,7 @@ def forked( fork_qubit: Union[quil_rs.Qubit, QubitDesignator], alt_params: Union[Sequence[ParameterDesignator], Sequence[quil_rs_expr.Expression]], ) -> "Gate": - """ - Add the FORKED modifier to the gate with the given fork qubit and given additional + """Add the FORKED modifier to the gate with the given fork qubit and given additional parameters. """ forked = super().forked(_convert_to_rs_qubit(fork_qubit), _convert_to_rs_expressions(alt_params)) @@ -433,9 +426,7 @@ def forked( return self def dagger(self) -> "Gate": - """ - Add the DAGGER modifier to the gate. - """ + """Add the DAGGER modifier to the gate.""" self._update_super(super().dagger()) return self @@ -443,8 +434,7 @@ def out(self) -> str: return super().to_quil() def _update_super(self, gate: quil_rs.Gate) -> None: - """ - Updates the state of the super class using a new gate. + """Updates the state of the super class using a new gate. The super class does not mutate the value of a gate when adding modifiers with methods like `dagger()`, but pyQuil does. """ @@ -464,8 +454,7 @@ def __deepcopy__(self, memo: Dict) -> "Gate": def _strip_modifiers(gate: Gate, limit: Optional[int] = None) -> Gate: - """ - Remove modifiers from :py:class:`Gate`. + """Remove modifiers from :py:class:`Gate`. This function removes up to ``limit`` gate modifiers from the given gate, starting from the leftmost gate modifier. @@ -503,9 +492,7 @@ def _strip_modifiers(gate: Gate, limit: Optional[int] = None) -> Gate: class Measurement(quil_rs.Measurement, AbstractInstruction): - """ - This is the pyQuil object for a Quil measurement instruction. - """ + """This is the pyQuil object for a Quil measurement instruction.""" def __new__( cls, @@ -576,9 +563,7 @@ def __deepcopy__(self, memo: Dict) -> "Measurement": class Reset(quil_rs.Reset, AbstractInstruction): - """ - The RESET instruction. - """ + """The RESET instruction.""" def __new__(cls, qubit: Optional[Union[Qubit, QubitPlaceholder, FormalArgument, int]] = None) -> Self: rs_qubit: Optional[quil_rs.Qubit] = None @@ -635,9 +620,7 @@ def __deepcopy__(self, memo: Dict) -> "Reset": class ResetQubit(Reset): - """ - This is the pyQuil object for a Quil targeted reset instruction. - """ + """This is the pyQuil object for a Quil targeted reset instruction.""" def __new__(cls, qubit: Union[Qubit, QubitPlaceholder, FormalArgument, int]) -> Self: if qubit is None: @@ -653,8 +636,7 @@ def _from_rs_reset(cls, reset: quil_rs.Reset) -> "ResetQubit": class DefGate(quil_rs.GateDefinition, AbstractInstruction): - """ - A DEFGATE directive. + """A DEFGATE directive. :param name: The name of the newly defined gate. :param matrix: The matrix defining this gate. @@ -711,9 +693,8 @@ def out(self) -> str: return super().to_quil() def get_constructor(self) -> Union[Callable[..., Gate], Callable[..., Callable[..., Gate]]]: - """ - :returns: A function that constructs this gate on variable qubit indices. E.g. - `mygate.get_constructor()(1) applies the gate to qubit 1.` + """:returns: A function that constructs this gate on variable qubit indices. E.g. + `mygate.get_constructor()(1) applies the gate to qubit 1.` """ if self.parameters: return lambda *params: lambda *qubits: Gate( @@ -723,9 +704,7 @@ def get_constructor(self) -> Union[Callable[..., Gate], Callable[..., Callable[. return lambda *qubits: Gate(name=self.name, params=[], qubits=list(map(unpack_qubit, qubits))) def num_args(self) -> int: - """ - :return: The number of qubit arguments the gate takes. - """ + """:return: The number of qubit arguments the gate takes.""" rows = len(self.matrix) return int(np.log2(rows)) @@ -779,9 +758,7 @@ def permutation(self, permutation: List[int]) -> None: quil_rs.GateDefinition.specification.__set__(self, specification) # type: ignore[attr-defined] def num_args(self) -> int: - """ - :return: The number of qubit arguments the gate takes. - """ + """:return: The number of qubit arguments the gate takes.""" return int(np.log2(len(self.permutation))) def __str__(self) -> str: @@ -789,9 +766,7 @@ def __str__(self) -> str: class DefGateByPaulis(DefGate): - """ - Records a gate definition as the exponentiation of a PauliSum. - """ + """Records a gate definition as the exponentiation of a PauliSum.""" def __new__( cls, @@ -844,9 +819,7 @@ def __str__(self) -> str: class JumpTarget(quil_rs.Label, AbstractInstruction): - """ - Representation of a target that can be jumped to. - """ + """Representation of a target that can be jumped to.""" def __new__(cls, label: Union[Label, LabelPlaceholder]) -> Self: return super().__new__(cls, label.target) @@ -875,9 +848,7 @@ def __deepcopy__(self, memo: Dict) -> "JumpTarget": class JumpWhen(quil_rs.JumpWhen, AbstractInstruction): - """ - The JUMP-WHEN instruction. - """ + """The JUMP-WHEN instruction.""" def __new__(cls, target: Union[Label, LabelPlaceholder], condition: MemoryReference) -> Self: return super().__new__(cls, target.target, condition._to_rs_memory_reference()) @@ -918,9 +889,7 @@ def __deepcopy__(self, memo: Dict) -> "JumpWhen": class JumpUnless(quil_rs.JumpUnless, AbstractInstruction): - """ - The JUMP-UNLESS instruction. - """ + """The JUMP-UNLESS instruction.""" def __new__(cls, target: Union[Label, LabelPlaceholder], condition: MemoryReference) -> Self: return super().__new__(cls, target.target, condition._to_rs_memory_reference()) @@ -961,9 +930,7 @@ def __deepcopy__(self, memo: Dict) -> "JumpUnless": class SimpleInstruction(AbstractInstruction): - """ - Abstract class for simple instructions with no arguments. - """ + """Abstract class for simple instructions with no arguments.""" instruction: ClassVar[quil_rs.Instruction] @@ -981,33 +948,25 @@ def __deepcopy__(self, memo: Dict) -> "SimpleInstruction": class Halt(SimpleInstruction): - """ - The HALT instruction. - """ + """The HALT instruction.""" instruction = quil_rs.Instruction.new_halt() class Wait(SimpleInstruction): - """ - The WAIT instruction. - """ + """The WAIT instruction.""" instruction = quil_rs.Instruction.new_wait() class Nop(SimpleInstruction): - """ - The NOP instruction. - """ + """The NOP instruction.""" instruction = quil_rs.Instruction.new_nop() class UnaryClassicalInstruction(quil_rs.UnaryLogic, AbstractInstruction): - """ - The abstract class for unary classical instructions. - """ + """The abstract class for unary classical instructions.""" op: ClassVar[quil_rs.UnaryOperator] @@ -1042,25 +1001,19 @@ def __deepcopy__(self, memo: Dict) -> "UnaryClassicalInstruction": class ClassicalNeg(UnaryClassicalInstruction): - """ - The NEG instruction. - """ + """The NEG instruction.""" op = quil_rs.UnaryOperator.Neg class ClassicalNot(UnaryClassicalInstruction): - """ - The NOT instruction. - """ + """The NOT instruction.""" op = quil_rs.UnaryOperator.Not class LogicalBinaryOp(quil_rs.BinaryLogic, AbstractInstruction): - """ - The abstract class for binary logical classical instructions. - """ + """The abstract class for binary logical classical instructions.""" op: ClassVar[quil_rs.BinaryOperator] @@ -1126,33 +1079,25 @@ def __deepcopy__(self, memo: Dict) -> "LogicalBinaryOp": class ClassicalAnd(LogicalBinaryOp): - """ - The AND instruction. - """ + """The AND instruction.""" op = quil_rs.BinaryOperator.And class ClassicalInclusiveOr(LogicalBinaryOp): - """ - The IOR instruction. - """ + """The IOR instruction.""" op = quil_rs.BinaryOperator.Ior class ClassicalExclusiveOr(LogicalBinaryOp): - """ - The XOR instruction. - """ + """The XOR instruction.""" op = quil_rs.BinaryOperator.Xor class ArithmeticBinaryOp(quil_rs.Arithmetic, AbstractInstruction): - """ - The abstract class for binary arithmetic classical instructions. - """ + """The abstract class for binary arithmetic classical instructions.""" op: ClassVar[quil_rs.ArithmeticOperator] @@ -1199,41 +1144,31 @@ def __deepcopy__(self, memo: Dict) -> "ArithmeticBinaryOp": class ClassicalAdd(ArithmeticBinaryOp): - """ - The ADD instruction. - """ + """The ADD instruction.""" op = quil_rs.ArithmeticOperator.Add class ClassicalSub(ArithmeticBinaryOp): - """ - The SUB instruction. - """ + """The SUB instruction.""" op = quil_rs.ArithmeticOperator.Subtract class ClassicalMul(ArithmeticBinaryOp): - """ - The MUL instruction. - """ + """The MUL instruction.""" op = quil_rs.ArithmeticOperator.Multiply class ClassicalDiv(ArithmeticBinaryOp): - """ - The DIV instruction. - """ + """The DIV instruction.""" op = quil_rs.ArithmeticOperator.Divide class ClassicalMove(quil_rs.Move, AbstractInstruction): - """ - The MOVE instruction. - """ + """The MOVE instruction.""" def __new__(cls, left: MemoryReference, right: Union[MemoryReference, int, float]) -> "ClassicalMove": return super().__new__(cls, left._to_rs_memory_reference(), _to_rs_arithmetic_operand(right)) @@ -1272,9 +1207,7 @@ def __deepcopy__(self, memo: Dict) -> "ClassicalMove": class ClassicalExchange(quil_rs.Exchange, AbstractInstruction): - """ - The EXCHANGE instruction. - """ + """The EXCHANGE instruction.""" def __new__( cls, @@ -1317,9 +1250,7 @@ def __deepcopy__(self, memo: Dict) -> "ClassicalExchange": class ClassicalConvert(quil_rs.Convert, AbstractInstruction): - """ - The CONVERT instruction. - """ + """The CONVERT instruction.""" def __new__(cls, left: MemoryReference, right: MemoryReference) -> "ClassicalConvert": return super().__new__(cls, left._to_rs_memory_reference(), right._to_rs_memory_reference()) @@ -1358,9 +1289,7 @@ def __deepcopy__(self, memo: Dict) -> "ClassicalConvert": class ClassicalLoad(quil_rs.Load, AbstractInstruction): - """ - The LOAD instruction. - """ + """The LOAD instruction.""" def __new__(cls, target: MemoryReference, left: str, right: MemoryReference) -> "ClassicalLoad": return super().__new__(cls, target._to_rs_memory_reference(), left, right._to_rs_memory_reference()) @@ -1426,9 +1355,7 @@ def _to_py_arithmetic_operand(operand: quil_rs.ArithmeticOperand) -> Union[Memor class ClassicalStore(quil_rs.Store, AbstractInstruction): - """ - The STORE instruction. - """ + """The STORE instruction.""" def __new__(cls, target: str, left: MemoryReference, right: Union[MemoryReference, int, float]) -> "ClassicalStore": rs_right = _to_rs_arithmetic_operand(right) @@ -1476,9 +1403,7 @@ def __deepcopy__(self, memo: Dict) -> "ClassicalStore": class ClassicalComparison(quil_rs.Comparison, AbstractInstruction): - """ - Abstract class for ternary comparison instructions. - """ + """Abstract class for ternary comparison instructions.""" op: ClassVar[quil_rs.ComparisonOperator] @@ -1560,49 +1485,37 @@ def __deepcopy__(self, memo: Dict) -> "ClassicalComparison": class ClassicalEqual(ClassicalComparison): - """ - The EQ comparison instruction. - """ + """The EQ comparison instruction.""" op = quil_rs.ComparisonOperator.Equal class ClassicalLessThan(ClassicalComparison): - """ - The LT comparison instruction. - """ + """The LT comparison instruction.""" op = quil_rs.ComparisonOperator.LessThan class ClassicalLessEqual(ClassicalComparison): - """ - The LE comparison instruction. - """ + """The LE comparison instruction.""" op = quil_rs.ComparisonOperator.LessThanOrEqual class ClassicalGreaterThan(ClassicalComparison): - """ - The GT comparison instruction. - """ + """The GT comparison instruction.""" op = quil_rs.ComparisonOperator.GreaterThan class ClassicalGreaterEqual(ClassicalComparison): - """ - The GE comparison instruction. - """ + """The GE comparison instruction.""" op = quil_rs.ComparisonOperator.GreaterThanOrEqual class Jump(quil_rs.Jump, AbstractInstruction): - """ - Representation of an unconditional jump instruction (JUMP). - """ + """Representation of an unconditional jump instruction (JUMP).""" def __new__(cls, target: Union[Label, LabelPlaceholder]) -> Self: return super().__new__(cls, target.target) @@ -1635,8 +1548,7 @@ def __deepcopy__(self, memo: Dict) -> "Jump": class Pragma(quil_rs.Pragma, AbstractInstruction): - """ - A PRAGMA instruction. + """A PRAGMA instruction. This is printed in QUIL as: @@ -1719,8 +1631,7 @@ def __deepcopy__(self, memo: Dict) -> "Pragma": class Declare(quil_rs.Declaration, AbstractInstruction): - """ - A DECLARE directive. + """A DECLARE directive. This is printed in Quil as:: @@ -2472,9 +2383,7 @@ def __deepcopy__(self, memo: Dict) -> "Fence": class FenceAll(Fence): - """ - The FENCE instruction. - """ + """The FENCE instruction.""" def __new__(cls) -> Self: return super().__new__(cls, []) @@ -2595,70 +2504,71 @@ def __deepcopy__(self, memo: Dict) -> "DefCircuit": return DefCircuit._from_rs_circuit_definition(super().__deepcopy__(memo)) -class DefCalibration(quil_rs.Calibration, AbstractInstruction): - def __new__( - cls, - name: str, - parameters: Sequence[ParameterDesignator], - qubits: Sequence[Union[Qubit, FormalArgument]], - instrs: Sequence[AbstractInstruction], - modifiers: Optional[List[quil_rs.GateModifier]] = None, - ) -> Self: - return super().__new__( - cls, - name, - _convert_to_rs_expressions(parameters), - _convert_to_rs_qubits(qubits), - _convert_to_rs_instructions(instrs), - modifiers or [], - ) - - @classmethod - def _from_rs_calibration(cls, calibration: quil_rs.Calibration) -> "DefCalibration": - return super().__new__( - cls, - calibration.name, - calibration.parameters, - calibration.qubits, - calibration.instructions, - calibration.modifiers, - ) - - @property # type: ignore[override] - def parameters(self) -> Sequence[ParameterDesignator]: - return _convert_to_py_expressions(super().parameters) - - @parameters.setter - def parameters(self, parameters: Sequence[ParameterDesignator]) -> None: - quil_rs.Calibration.parameters.__set__(self, _convert_to_rs_expressions(parameters)) # type: ignore[attr-defined] # noqa - - @property # type: ignore[override] - def qubits(self) -> List[QubitDesignator]: - return _convert_to_py_qubits(super().qubits) - - @qubits.setter - def qubits(self, qubits: Sequence[QubitDesignator]) -> None: - quil_rs.Calibration.qubits.__set__(self, _convert_to_rs_qubits(qubits)) # type: ignore[attr-defined] - - @property - def instrs(self) -> List[AbstractInstruction]: - return _convert_to_py_instructions(super().instructions) - - @instrs.setter - def instrs(self, instrs: Sequence[AbstractInstruction]) -> None: - quil_rs.Calibration.instructions.__set__(self, _convert_to_rs_instructions(instrs)) # type: ignore[attr-defined] # noqa - - def out(self) -> str: - return super().to_quil() - - def __str__(self) -> str: - return super().to_quil_or_debug() - - def __copy__(self) -> Self: - return self - - def __deepcopy__(self, memo: Dict) -> "DefCalibration": - return DefCalibration._from_rs_calibration(super().__deepcopy__(memo)) +# class DefCalibration(quil_rs.Calibration, AbstractInstruction): +# def __new__( +# cls, +# name: str, +# parameters: Sequence[ParameterDesignator], +# qubits: Sequence[Union[Qubit, FormalArgument]], +# instrs: Sequence[AbstractInstruction], +# modifiers: Optional[List[quil_rs.GateModifier]] = None, +# ) -> Self: +# return super().__new__( +# cls, +# name, +# _convert_to_rs_expressions(parameters), +# _convert_to_rs_qubits(qubits), +# _convert_to_rs_instructions(instrs), +# modifiers or [], +# ) +# +# @classmethod +# def _from_rs_calibration(cls, calibration: quil_rs.Calibration) -> "DefCalibration": +# return super().__new__( +# cls, +# calibration.name, +# calibration.parameters, +# calibration.qubits, +# calibration.instructions, +# calibration.modifiers, +# ) +# +# @property # type: ignore[override] +# def parameters(self) -> Sequence[ParameterDesignator]: +# return _convert_to_py_expressions(super().parameters) +# +# @parameters.setter +# def parameters(self, parameters: Sequence[ParameterDesignator]) -> None: +# quil_rs.Calibration.parameters.__set__(self, _convert_to_rs_expressions(parameters)) # type: ignore[attr-defined] # noqa +# +# @property # type: ignore[override] +# def qubits(self) -> List[QubitDesignator]: +# return _convert_to_py_qubits(super().qubits) +# +# @qubits.setter +# def qubits(self, qubits: Sequence[QubitDesignator]) -> None: +# quil_rs.Calibration.qubits.__set__(self, _convert_to_rs_qubits(qubits)) # type: ignore[attr-defined] +# +# @property +# def instrs(self) -> List[AbstractInstruction]: +# return _convert_to_py_instructions(super().instructions) +# +# @instrs.setter +# def instrs(self, instrs: Sequence[AbstractInstruction]) -> None: +# quil_rs.Calibration.instructions.__set__(self, _convert_to_rs_instructions(instrs)) # type: ignore[attr-defined] # noqa +# +# def out(self) -> str: +# return super().to_quil() +# +# def __str__(self) -> str: +# return super().to_quil_or_debug() +# +# def __copy__(self) -> Self: +# return self +# +# def __deepcopy__(self, memo: Dict) -> "DefCalibration": +# return DefCalibration._from_rs_calibration(super().__deepcopy__(memo)) +# class DefMeasureCalibration(quil_rs.MeasureCalibrationDefinition, AbstractInstruction): diff --git a/pyquil/quiltcalibrations.py b/src/pyquil/quiltcalibrations.py similarity index 100% rename from pyquil/quiltcalibrations.py rename to src/pyquil/quiltcalibrations.py diff --git a/pyquil/quiltwaveforms.py b/src/pyquil/quiltwaveforms.py similarity index 100% rename from pyquil/quiltwaveforms.py rename to src/pyquil/quiltwaveforms.py diff --git a/pyquil/wavefunction.py b/src/pyquil/wavefunction.py similarity index 100% rename from pyquil/wavefunction.py rename to src/pyquil/wavefunction.py diff --git a/test/unit/test_quilbase.py b/test/unit/test_quilbase.py index f1c7fcdbf..d65d294bf 100644 --- a/test/unit/test_quilbase.py +++ b/test/unit/test_quilbase.py @@ -1,90 +1,99 @@ import copy from math import pi -from typing import Any, List, Optional, Iterable, Tuple, Union from numbers import Complex, Number +from typing import Any, Iterable, List, Optional, Tuple, Union import numpy as np import pytest -from syrupy.assertion import SnapshotAssertion - -from pyquil.quilatom import quil_cos, quil_sin +from pyquil.api._compiler import QPUCompiler from pyquil.gates import X +from pyquil.paulis import PauliSum, PauliTerm from pyquil.quil import Program +from pyquil.quilatom import ( + BinaryExp, + Expression, + Frame, + Mul, + Qubit, + TemplateWaveform, + Waveform, + WaveformReference, + quil_cos, + quil_sin, +) from pyquil.quilbase import ( - _convert_to_rs_instruction, - _convert_to_py_instruction, AbstractInstruction, ArithmeticBinaryOp, Capture, ClassicalAdd, ClassicalAnd, - ClassicalExclusiveOr, - ClassicalInclusiveOr, - ClassicalSub, - ClassicalMul, - ClassicalDiv, ClassicalComparison, ClassicalConvert, + ClassicalDiv, + ClassicalEqual, ClassicalExchange, + ClassicalExclusiveOr, + ClassicalGreaterEqual, + ClassicalGreaterThan, + ClassicalInclusiveOr, + ClassicalLessEqual, + ClassicalLessThan, ClassicalLoad, ClassicalMove, + ClassicalMul, ClassicalNeg, ClassicalNot, ClassicalStore, - ClassicalEqual, - ClassicalLessThan, - ClassicalLessEqual, - ClassicalGreaterThan, - ClassicalGreaterEqual, + ClassicalSub, Declare, DefCalibration, DefCircuit, DefFrame, DefGate, - DefWaveform, - DefPermutationGate, DefGateByPaulis, DefMeasureCalibration, + DefPermutationGate, + DefWaveform, DelayFrames, DelayQubits, Fence, FenceAll, FormalArgument, Gate, + Halt, Include, LogicalBinaryOp, Measurement, MemoryReference, - ParameterDesignator, + Nop, Parameter, + ParameterDesignator, Pragma, Pulse, QubitDesignator, RawCapture, + Reset, + ResetQubit, SetFrequency, SetPhase, SetScale, ShiftFrequency, ShiftPhase, SwapPhases, - Reset, - ResetQubit, UnaryClassicalInstruction, Wait, - Halt, - Nop, + _convert_to_py_instruction, + _convert_to_rs_instruction, ) -from pyquil.paulis import PauliSum, PauliTerm -from pyquil.quilatom import BinaryExp, Mul, Frame, Qubit, Expression, Waveform, WaveformReference, TemplateWaveform -from pyquil.api._compiler import QPUCompiler from pyquil.quiltwaveforms import ( + BoxcarAveragerKernel, + DragGaussianWaveform, + ErfSquareWaveform, FlatWaveform, GaussianWaveform, - DragGaussianWaveform, HrmGaussianWaveform, - ErfSquareWaveform, - BoxcarAveragerKernel, ) +from syrupy.assertion import SnapshotAssertion @pytest.mark.parametrize( @@ -363,10 +372,12 @@ def test_body(self, def_gate_pauli: DefGateByPaulis, body: PauliSum): @pytest.mark.parametrize( ("name", "parameters", "qubits", "instrs"), [ - ("Calibrate", [], [Qubit(0)], [X(0)]), - ("Calibrate", [Parameter("X")], [Qubit(0)], [X(0)]), + # ("Calibrate", [], [Qubit(0)], [X(0)]), + ("Calibrate", [], [0], []), + # ("Calibrate", [Parameter("X")], [Qubit(0)], [X(0)]), ], - ids=("No-Params", "Params"), + # ids=("No-Params", "Fixed-Qubit", "Params"), + ids=("Fixed-Qubit",), ) class TestDefCalibration: @pytest.fixture From b0f2f0852746bcddc11193c2146cfa0bdc6af68b Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Sun, 24 Mar 2024 09:52:34 -0700 Subject: [PATCH 03/23] merge benchmarks --- .../fixtures/ankaa-9q-1-calibrations.quil | 918 ++ test/bench/fixtures/over-9000.quil | 9001 +++++++++++++++++ test/bench/test_program.py | 27 + 3 files changed, 9946 insertions(+) create mode 100644 test/bench/fixtures/ankaa-9q-1-calibrations.quil create mode 100644 test/bench/fixtures/over-9000.quil create mode 100644 test/bench/test_program.py diff --git a/test/bench/fixtures/ankaa-9q-1-calibrations.quil b/test/bench/fixtures/ankaa-9q-1-calibrations.quil new file mode 100644 index 000000000..e93435a2e --- /dev/null +++ b/test/bench/fixtures/ankaa-9q-1-calibrations.quil @@ -0,0 +1,918 @@ +DEFFRAME 2 "Transmon-2_charge_tx": + INITIAL-FREQUENCY: 4744872053.973973 + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 4750000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 2, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + CHANNEL-DELAY: 2.52e-7 + DIRECTION: "tx" +DEFFRAME 19 "Transmon-19_flux_tx_c": + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 0 + CHANNEL-DELAY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 4, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 2, \"sequencer_index\": 2, \"nco_index\": 0}" + DIRECTION: "tx" + CENTER-FREQUENCY: 0 +DEFFRAME 5 "Transmon-5_flux_tx_b4": + CHANNEL-DELAY: 0 + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 0 + INITIAL-FREQUENCY: 250000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 3, \"sequencer_index\": 3, \"nco_index\": 0}" +DEFFRAME 3 "Transmon-3_flux_tx_b1": + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 250000000 + CENTER-FREQUENCY: 0 + CHANNEL-DELAY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" +DEFFRAME 2 "Transmon-2_readout_tx": + INITIAL-FREQUENCY: 7482345757.293075 + DIRECTION: "tx" + CHANNEL-DELAY: 2.84e-7 + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 7250000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" +DEFFRAME 1 "Transmon-1_readout_rx": + INITIAL-FREQUENCY: 7280659957.4951 + CHANNEL-DELAY: 7.72e-7 + SAMPLE-RATE: 2000000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 1, \"sequencer_index\": 4, \"nco_index\": 0}" + DIRECTION: "rx" +DEFFRAME 3 "Transmon-3_flux_tx_c0": + DIRECTION: "tx" + CHANNEL-DELAY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 2}" + CENTER-FREQUENCY: 0 + INITIAL-FREQUENCY: 275000000 + SAMPLE-RATE: 1000000000 +DEFFRAME 2 "Transmon-2_readout_rx": + CHANNEL-DELAY: 8e-7 + SAMPLE-RATE: 2000000000 + INITIAL-FREQUENCY: 7482345757.293075 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + DIRECTION: "rx" +DEFFRAME 4 "Transmon-4_charge_tx": + CHANNEL-DELAY: 2.52e-7 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 1, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + INITIAL-FREQUENCY: 4587978549.047542 + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 4750000000 + DIRECTION: "tx" +DEFFRAME 11 "Transmon-11_flux_tx_b": + CHANNEL-DELAY: 0 + DIRECTION: "tx" + INITIAL-FREQUENCY: 0 + SAMPLE-RATE: 1000000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 2, \"sequencer_index\": 2, \"nco_index\": 0}" + CENTER-FREQUENCY: 0 +DEFFRAME 20 "Transmon-20_flux_tx_c": + CENTER-FREQUENCY: 0 + CHANNEL-DELAY: 0 + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 0 + DIRECTION: "tx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 3, \"sequencer_index\": 3, \"nco_index\": 0}" +DEFFRAME 8 "Transmon-8_readout_tx": + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 + CHANNEL-DELAY: 2.84e-7 + INITIAL-FREQUENCY: 7368124413.990194 + CENTER-FREQUENCY: 7250000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 0, \"sequencer_index\": 2, \"nco_index\": 0}" +DEFFRAME 1 "Transmon-1_flux_tx_b4": + CENTER-FREQUENCY: 0 + INITIAL-FREQUENCY: 250000000 + CHANNEL-DELAY: 0 + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 3, \"sequencer_index\": 3, \"nco_index\": 0}" +DEFFRAME 17 "Transmon-17_flux_tx_b": + CHANNEL-DELAY: 0 + CENTER-FREQUENCY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + INITIAL-FREQUENCY: 0 + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 +DEFFRAME 18 "Transmon-18_flux_tx_c": + DIRECTION: "tx" + CENTER-FREQUENCY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" + INITIAL-FREQUENCY: 0 + SAMPLE-RATE: 1000000000 + CHANNEL-DELAY: 0 +DEFFRAME 4 "Transmon-4_flux_tx_c0": + SAMPLE-RATE: 1000000000 + DIRECTION: "tx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 1}" + INITIAL-FREQUENCY: 100000000 + CENTER-FREQUENCY: 0 + CHANNEL-DELAY: 0 +DEFFRAME 6 "Transmon-6_flux_tx_c2": + INITIAL-FREQUENCY: 100000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 2, \"sequencer_index\": 2, \"nco_index\": 0}" + CHANNEL-DELAY: 0 + CENTER-FREQUENCY: 0 + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 +DEFFRAME 3 "Transmon-3_flux_tx_b4": + CENTER-FREQUENCY: 0 + SAMPLE-RATE: 1000000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 1}" + INITIAL-FREQUENCY: 200000000 + CHANNEL-DELAY: 0 + DIRECTION: "tx" +DEFFRAME 7 "Transmon-7_readout_tx": + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 1, \"sequencer_index\": 10, \"nco_index\": 0}" + INITIAL-FREQUENCY: 7119237054.836132 + DIRECTION: "tx" + CENTER-FREQUENCY: 7250000000 + SAMPLE-RATE: 1000000000 + CHANNEL-DELAY: 2.84e-7 +DEFFRAME 1 "Transmon-1_charge_tx": + INITIAL-FREQUENCY: 4511844168.512795 + CHANNEL-DELAY: 2.52e-7 + SAMPLE-RATE: 1000000000 + DIRECTION: "tx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 3, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" + CENTER-FREQUENCY: 4500000000 +DEFFRAME 0 "Transmon-0_charge_tx": + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 4250000000 + INITIAL-FREQUENCY: 4214284674.965277 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 3, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + DIRECTION: "tx" + CHANNEL-DELAY: 2.52e-7 +DEFFRAME 3 "Transmon-3_readout_rx": + CHANNEL-DELAY: 7.84e-7 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 0, \"sequencer_index\": 1, \"nco_index\": 0}" + SAMPLE-RATE: 2000000000 + DIRECTION: "rx" + INITIAL-FREQUENCY: 7170938482.445692 +DEFFRAME 8 "Transmon-8_flux_tx_c2": + SAMPLE-RATE: 1000000000 + CHANNEL-DELAY: 0 + DIRECTION: "tx" + CENTER-FREQUENCY: 0 + INITIAL-FREQUENCY: 100000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 4, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" +DEFFRAME 8 "Transmon-8_readout_rx": + CHANNEL-DELAY: 8e-7 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 0, \"sequencer_index\": 2, \"nco_index\": 0}" + INITIAL-FREQUENCY: 7368124413.990194 + SAMPLE-RATE: 2000000000 + DIRECTION: "rx" +DEFFRAME 7 "Transmon-7_flux_tx_b3": + INITIAL-FREQUENCY: 200000000 + CENTER-FREQUENCY: 0 + SAMPLE-RATE: 1000000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 1}" + CHANNEL-DELAY: 0 + DIRECTION: "tx" +DEFFRAME 3 "Transmon-3_readout_tx": + CHANNEL-DELAY: 2.84e-7 + CENTER-FREQUENCY: 7250000000 + DIRECTION: "tx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 0, \"sequencer_index\": 1, \"nco_index\": 0}" + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 7170938482.445692 +DEFFRAME 14 "Transmon-14_flux_tx_b": + INITIAL-FREQUENCY: 0 + CHANNEL-DELAY: 0 + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 4, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" + CENTER-FREQUENCY: 0 +DEFFRAME 0 "Transmon-0_readout_tx": + CENTER-FREQUENCY: 7250000000 + SAMPLE-RATE: 1000000000 + DIRECTION: "tx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + CHANNEL-DELAY: 2.84e-7 + INITIAL-FREQUENCY: 6990456867.39162 +DEFFRAME 13 "Transmon-13_flux_tx_c": + DIRECTION: "tx" + CHANNEL-DELAY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 0 + INITIAL-FREQUENCY: 0 +DEFFRAME 7 "Transmon-7_charge_tx": + CENTER-FREQUENCY: 4500000000 + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 4462660006.263186 + CHANNEL-DELAY: 2.52e-7 + DIRECTION: "tx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 3, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" +DEFFRAME 6 "Transmon-6_readout_tx": + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 7312051902.007999 + CHANNEL-DELAY: 2.84e-7 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 0, \"sequencer_index\": 2, \"nco_index\": 0}" + CENTER-FREQUENCY: 7250000000 + DIRECTION: "tx" +DEFFRAME 2 "Transmon-2_flux_tx_b0": + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 250000000 + CHANNEL-DELAY: 0 + CENTER-FREQUENCY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 2, \"sequencer_index\": 2, \"nco_index\": 1}" + DIRECTION: "tx" +DEFFRAME 2 "Transmon-2_flux_tx_c0": + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 2, \"sequencer_index\": 2, \"nco_index\": 0}" + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 100000000 + CHANNEL-DELAY: 0 + CENTER-FREQUENCY: 0 + DIRECTION: "tx" +DEFFRAME 1 "Transmon-1_readout_tx": + CENTER-FREQUENCY: 7250000000 + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 1, \"sequencer_index\": 8, \"nco_index\": 0}" + CHANNEL-DELAY: 2.84e-7 + INITIAL-FREQUENCY: 7280659957.4951 +DEFFRAME 7 "Transmon-7_flux_tx_b4": + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 0 + DIRECTION: "tx" + CHANNEL-DELAY: 0 + INITIAL-FREQUENCY: 250000000 +DEFFRAME 12 "Transmon-12_flux_tx_b": + CHANNEL-DELAY: 0 + INITIAL-FREQUENCY: 0 + DIRECTION: "tx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 4, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 3, \"sequencer_index\": 3, \"nco_index\": 0}" + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 0 +DEFFRAME 0 "Transmon-0_readout_rx": + SAMPLE-RATE: 2000000000 + DIRECTION: "rx" + INITIAL-FREQUENCY: 6990456867.39162 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + CHANNEL-DELAY: 7.84e-7 +DEFFRAME 4 "Transmon-4_readout_rx": + SAMPLE-RATE: 2000000000 + INITIAL-FREQUENCY: 7428260492.511801 + CHANNEL-DELAY: 7.72e-7 + DIRECTION: "rx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 1, \"sequencer_index\": 5, \"nco_index\": 0}" +DEFFRAME 5 "Transmon-5_charge_tx": + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 4435292009.421719 + CHANNEL-DELAY: 2.52e-7 + CENTER-FREQUENCY: 4500000000 + DIRECTION: "tx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 1, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" +DEFFRAME 6 "Transmon-6_charge_tx": + CENTER-FREQUENCY: 4500000000 + CHANNEL-DELAY: 2.52e-7 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 3, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + INITIAL-FREQUENCY: 4553423149.699226 + SAMPLE-RATE: 1000000000 + DIRECTION: "tx" +DEFFRAME 4 "Transmon-4_readout_tx": + CENTER-FREQUENCY: 7250000000 + CHANNEL-DELAY: 2.84e-7 + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 1, \"sequencer_index\": 9, \"nco_index\": 0}" + INITIAL-FREQUENCY: 7428260492.511801 +DEFFRAME 5 "Transmon-5_readout_tx": + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 7250000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 0, \"sequencer_index\": 1, \"nco_index\": 0}" + CHANNEL-DELAY: 2.84e-7 + INITIAL-FREQUENCY: 7231384204.806551 +DEFFRAME 15 "Transmon-15_flux_tx_c": + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 0 + INITIAL-FREQUENCY: 0 + CHANNEL-DELAY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 2, \"sequencer_index\": 2, \"nco_index\": 0}" + DIRECTION: "tx" +DEFFRAME 6 "Transmon-6_readout_rx": + CHANNEL-DELAY: 7.84e-7 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 0, \"sequencer_index\": 2, \"nco_index\": 0}" + SAMPLE-RATE: 2000000000 + DIRECTION: "rx" + INITIAL-FREQUENCY: 7312051902.007999 +DEFFRAME 0 "Transmon-0_flux_tx_b3": + INITIAL-FREQUENCY: 200000000 + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 0 + CHANNEL-DELAY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + DIRECTION: "tx" +DEFFRAME 16 "Transmon-16_flux_tx_c": + INITIAL-FREQUENCY: 0 + SAMPLE-RATE: 1000000000 + DIRECTION: "tx" + CENTER-FREQUENCY: 0 + CHANNEL-DELAY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 3, \"sequencer_index\": 3, \"nco_index\": 0}" +DEFFRAME 4 "Transmon-4_flux_tx_c2": + INITIAL-FREQUENCY: 250000000 + DIRECTION: "tx" + CHANNEL-DELAY: 0 + SAMPLE-RATE: 1000000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + CENTER-FREQUENCY: 0 +DEFFRAME 9 "Transmon-9_flux_tx": + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 4, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + DIRECTION: "tx" + INITIAL-FREQUENCY: 0 + CHANNEL-DELAY: 0 + CENTER-FREQUENCY: 0 + SAMPLE-RATE: 1000000000 +DEFFRAME 8 "Transmon-8_charge_tx": + CENTER-FREQUENCY: 4500000000 + DIRECTION: "tx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 2, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + INITIAL-FREQUENCY: 4525513742.529455 + SAMPLE-RATE: 1000000000 + CHANNEL-DELAY: 2.52e-7 +DEFFRAME 5 "Transmon-5_readout_rx": + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 0, \"sequencer_index\": 1, \"nco_index\": 0}" + SAMPLE-RATE: 2000000000 + CHANNEL-DELAY: 8e-7 + INITIAL-FREQUENCY: 7231384204.806551 + DIRECTION: "rx" +DEFFRAME 0 "Transmon-0_flux_tx_b1": + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 1}" + INITIAL-FREQUENCY: 250000000 + CHANNEL-DELAY: 0 + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 0 + DIRECTION: "tx" +DEFFRAME 10 "Transmon-10_flux_tx_c": + CHANNEL-DELAY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" + INITIAL-FREQUENCY: 0 + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 0 + DIRECTION: "tx" +DEFFRAME 7 "Transmon-7_readout_rx": + DIRECTION: "rx" + CHANNEL-DELAY: 7.72e-7 + INITIAL-FREQUENCY: 7119237054.836132 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 1, \"sequencer_index\": 6, \"nco_index\": 0}" + SAMPLE-RATE: 2000000000 +DEFFRAME 3 "Transmon-3_charge_tx": + CHANNEL-DELAY: 2.52e-7 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 2, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" + INITIAL-FREQUENCY: 4412657358.639686 + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 4500000000 +DEFCAL ISWAP 8 7: + FENCE 8 7 + SWAP-PHASES 8 "Transmon-8_charge_tx" 7 "Transmon-7_charge_tx" + FENCE 8 20 7 + SET-PHASE 8 "Transmon-8_flux_tx_c2" 0 + SET-PHASE 20 "Transmon-20_flux_tx_c" 0 + NONBLOCKING PULSE 8 "Transmon-8_flux_tx_c2" erf_square(detuning: 0, duration: 8e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.09293827229138203) + NONBLOCKING PULSE 20 "Transmon-20_flux_tx_c" erf_square(detuning: 0, duration: 8e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.02320033220152222) + SHIFT-PHASE 8 "Transmon-8_charge_tx" 0.22382890863359997 + SHIFT-PHASE 7 "Transmon-7_charge_tx" 0.05984138769003293 + FENCE 8 20 7 +DEFCAL RX(3.141592653589793) 2: + FENCE 2 + NONBLOCKING PULSE 2 "Transmon-2_charge_tx" drag_gaussian(alpha: -0.07878787893661655, anh: -222900000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.6379325598123723, t0: 2e-8) + FENCE 2 +DEFCAL RX(3.141592653589793) 0: + FENCE 0 + NONBLOCKING PULSE 0 "Transmon-0_charge_tx" drag_gaussian(alpha: 0.13542738846114907, anh: -222600000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.9902768425482965, t0: 2e-8) + FENCE 0 +DEFCAL RX(1.5707963267948966) 6: + FENCE 6 + NONBLOCKING PULSE 6 "Transmon-6_charge_tx" drag_gaussian(alpha: -2.155859812397402, anh: -226800000.00000003, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.28513019332981027, t0: 2e-8) + FENCE 6 +DEFCAL ISWAP 6 7: + FENCE 6 7 + SWAP-PHASES 6 "Transmon-6_charge_tx" 7 "Transmon-7_charge_tx" + FENCE 19 6 7 + SET-PHASE 6 "Transmon-6_flux_tx_c2" 0 + SET-PHASE 19 "Transmon-19_flux_tx_c" 0 + NONBLOCKING PULSE 6 "Transmon-6_flux_tx_c2" erf_square(detuning: 0, duration: 7.6e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.10696673028620417) + NONBLOCKING PULSE 19 "Transmon-19_flux_tx_c" erf_square(detuning: 0, duration: 7.6e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.033422037308021256) + SHIFT-PHASE 6 "Transmon-6_charge_tx" 5.447361532820828 + SHIFT-PHASE 7 "Transmon-7_charge_tx" 4.843612683696903 + FENCE 19 6 7 +DEFCAL ISWAP 6 3: + FENCE 6 3 + SWAP-PHASES 6 "Transmon-6_charge_tx" 3 "Transmon-3_charge_tx" + FENCE 16 3 6 + SET-PHASE 6 "Transmon-6_flux_tx_c2" 0 + SET-PHASE 16 "Transmon-16_flux_tx_c" 0 + NONBLOCKING PULSE 6 "Transmon-6_flux_tx_c2" erf_square(detuning: 0, duration: 7.6e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.13792843585777595) + NONBLOCKING PULSE 16 "Transmon-16_flux_tx_c" erf_square(detuning: 0, duration: 7.6e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.031094767203778725) + SHIFT-PHASE 3 "Transmon-3_charge_tx" 0.9243471453465009 + SHIFT-PHASE 6 "Transmon-6_charge_tx" 5.8705789844451495 + FENCE 16 3 6 +DEFCAL RX(3.141592653589793) 1: + FENCE 1 + NONBLOCKING PULSE 1 "Transmon-1_charge_tx" drag_gaussian(alpha: -2.162882178363339, anh: -217900000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.6841599120529729, t0: 2e-8) + FENCE 1 +DEFCAL RX(3.141592653589793) 5: + FENCE 5 + NONBLOCKING PULSE 5 "Transmon-5_charge_tx" drag_gaussian(alpha: 0.039350003132839505, anh: -215600000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.7671503966503441, t0: 2e-8) + FENCE 5 +DEFCAL ISWAP 2 5: + FENCE 2 5 + SWAP-PHASES 2 "Transmon-2_charge_tx" 5 "Transmon-5_charge_tx" + FENCE 2 5 13 + SET-PHASE 2 "Transmon-2_flux_tx_c0" 0 + SET-PHASE 13 "Transmon-13_flux_tx_c" 0 + NONBLOCKING PULSE 2 "Transmon-2_flux_tx_c0" erf_square(detuning: 0, duration: 6.4e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.3841622628177994) + NONBLOCKING PULSE 13 "Transmon-13_flux_tx_c" erf_square(detuning: 0, duration: 6.4e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.05280849375101514) + SHIFT-PHASE 2 "Transmon-2_charge_tx" 6.147836062395494 + SHIFT-PHASE 5 "Transmon-5_charge_tx" 5.5261357732341345 + FENCE 2 5 13 +DEFCAL RX(3.141592653589793) 7: + FENCE 7 + NONBLOCKING PULSE 7 "Transmon-7_charge_tx" drag_gaussian(alpha: 0.9096363806764934, anh: -217400000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.826625959782886, t0: 2e-8) + FENCE 7 +DEFCAL CZ 3 6: + FENCE 16 3 6 + SET-PHASE 3 "Transmon-3_flux_tx_b1" 0 + SET-PHASE 16 "Transmon-16_flux_tx_c" 0 + NONBLOCKING PULSE 3 "Transmon-3_flux_tx_b1" erf_square(detuning: 0, duration: 1.08e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.1675860693882438) + NONBLOCKING PULSE 16 "Transmon-16_flux_tx_c" erf_square(detuning: 0, duration: 1.08e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.030384311575257488) + SHIFT-PHASE 3 "Transmon-3_charge_tx" 3.9694481754701703 + SHIFT-PHASE 6 "Transmon-6_charge_tx" 3.768018465636489 + FENCE 16 3 6 +DEFCAL CZ 1 4: + FENCE 1 12 4 + SET-PHASE 1 "Transmon-1_flux_tx_b4" 0 + SET-PHASE 12 "Transmon-12_flux_tx_b" 0 + NONBLOCKING PULSE 1 "Transmon-1_flux_tx_b4" erf_square(detuning: 0, duration: 9.2e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.17006527407557853) + NONBLOCKING PULSE 12 "Transmon-12_flux_tx_b" erf_square(detuning: 0, duration: 9.2e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.03619982805504285) + SHIFT-PHASE 1 "Transmon-1_charge_tx" 3.125009353160881 + SHIFT-PHASE 4 "Transmon-4_charge_tx" 3.460623213658636 + FENCE 1 12 4 +DEFCAL RX(1.5707963267948966) 7: + FENCE 7 + NONBLOCKING PULSE 7 "Transmon-7_charge_tx" drag_gaussian(alpha: 0.9096363806764934, anh: -217400000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.4065273116435608, t0: 2e-8) + FENCE 7 +DEFCAL CZ 7 4: + FENCE 17 4 7 + SET-PHASE 7 "Transmon-7_flux_tx_b4" 0 + SET-PHASE 17 "Transmon-17_flux_tx_b" 0 + NONBLOCKING PULSE 7 "Transmon-7_flux_tx_b4" erf_square(detuning: 0, duration: 8.400000000000001e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.15852175541643804) + NONBLOCKING PULSE 17 "Transmon-17_flux_tx_b" erf_square(detuning: 0, duration: 8.400000000000001e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.04982597954141329) + SHIFT-PHASE 7 "Transmon-7_charge_tx" 1.5059039834765204 + SHIFT-PHASE 4 "Transmon-4_charge_tx" 3.3143840660325132 + FENCE 17 4 7 +DEFCAL ISWAP 1 0: + FENCE 1 0 + SWAP-PHASES 1 "Transmon-1_charge_tx" 0 "Transmon-0_charge_tx" + FENCE 0 1 9 + SET-PHASE 1 "Transmon-1_flux_tx_b4" 0 + SET-PHASE 9 "Transmon-9_flux_tx" 0 + NONBLOCKING PULSE 1 "Transmon-1_flux_tx_b4" erf_square(detuning: 0, duration: 7.200000000000001e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.2661529302374707) + NONBLOCKING PULSE 9 "Transmon-9_flux_tx" erf_square(detuning: 0, duration: 7.200000000000001e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.041660813279822996) + SHIFT-PHASE 0 "Transmon-0_charge_tx" 4.551676837184467 + SHIFT-PHASE 1 "Transmon-1_charge_tx" 4.438079971662577 + FENCE 0 1 9 +DEFCAL ISWAP 4 7: + FENCE 4 7 + SWAP-PHASES 4 "Transmon-4_charge_tx" 7 "Transmon-7_charge_tx" + FENCE 17 4 7 + SET-PHASE 4 "Transmon-4_flux_tx_c2" 0 + SET-PHASE 17 "Transmon-17_flux_tx_b" 0 + NONBLOCKING PULSE 4 "Transmon-4_flux_tx_c2" erf_square(detuning: 0, duration: 8e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.19478981173083013) + NONBLOCKING PULSE 17 "Transmon-17_flux_tx_b" erf_square(detuning: 0, duration: 8e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.03957503281828901) + SHIFT-PHASE 4 "Transmon-4_charge_tx" 3.964358319805802 + SHIFT-PHASE 7 "Transmon-7_charge_tx" 4.409912201428099 + FENCE 17 4 7 +DEFCAL ISWAP 8 5: + FENCE 8 5 + SWAP-PHASES 8 "Transmon-8_charge_tx" 5 "Transmon-5_charge_tx" + FENCE 8 18 5 + SET-PHASE 8 "Transmon-8_flux_tx_c2" 0 + SET-PHASE 18 "Transmon-18_flux_tx_c" 0 + NONBLOCKING PULSE 8 "Transmon-8_flux_tx_c2" erf_square(detuning: 0, duration: 6.4e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.11162638835503749) + NONBLOCKING PULSE 18 "Transmon-18_flux_tx_c" erf_square(detuning: 0, duration: 6.4e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.05775362805201258) + SHIFT-PHASE 5 "Transmon-5_charge_tx" 6.262391345804057 + SHIFT-PHASE 8 "Transmon-8_charge_tx" 3.1076107865617995 + FENCE 8 18 5 +DEFCAL RX(1.5707963267948966) 2: + FENCE 2 + NONBLOCKING PULSE 2 "Transmon-2_charge_tx" drag_gaussian(alpha: -0.07878787893661655, anh: -222900000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.31564388178872366, t0: 2e-8) + FENCE 2 +DEFCAL ISWAP 4 5: + FENCE 4 5 + SWAP-PHASES 4 "Transmon-4_charge_tx" 5 "Transmon-5_charge_tx" + FENCE 4 5 15 + SET-PHASE 4 "Transmon-4_flux_tx_c0" 0 + SET-PHASE 15 "Transmon-15_flux_tx_c" 0 + NONBLOCKING PULSE 4 "Transmon-4_flux_tx_c0" erf_square(detuning: 0, duration: 1.28e-7, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.08829493474332083) + NONBLOCKING PULSE 15 "Transmon-15_flux_tx_c" erf_square(detuning: 0, duration: 1.28e-7, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.042292612665509495) + SHIFT-PHASE 4 "Transmon-4_charge_tx" 1.276585397129048 + SHIFT-PHASE 5 "Transmon-5_charge_tx" 4.183710360629959 + FENCE 4 5 15 +DEFCAL CZ 3 4: + FENCE 3 4 14 + SET-PHASE 3 "Transmon-3_flux_tx_b4" 0 + SET-PHASE 14 "Transmon-14_flux_tx_b" 0 + NONBLOCKING PULSE 3 "Transmon-3_flux_tx_b4" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.09648977820438134) + NONBLOCKING PULSE 14 "Transmon-14_flux_tx_b" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.044587720599283405) + SHIFT-PHASE 3 "Transmon-3_charge_tx" 4.014642793816454 + SHIFT-PHASE 4 "Transmon-4_charge_tx" 4.62241160330081 + FENCE 3 4 14 +DEFCAL ISWAP 4 1: + FENCE 4 1 + SWAP-PHASES 4 "Transmon-4_charge_tx" 1 "Transmon-1_charge_tx" + FENCE 1 4 12 + SET-PHASE 4 "Transmon-4_flux_tx_c0" 0 + SET-PHASE 12 "Transmon-12_flux_tx_b" 0 + NONBLOCKING PULSE 4 "Transmon-4_flux_tx_c0" erf_square(detuning: 0, duration: 9.600000000000001e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.1999790746312584) + NONBLOCKING PULSE 12 "Transmon-12_flux_tx_b" erf_square(detuning: 0, duration: 9.600000000000001e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.030756024611389165) + SHIFT-PHASE 1 "Transmon-1_charge_tx" 2.9089542675332494 + SHIFT-PHASE 4 "Transmon-4_charge_tx" 4.227476835608439 + FENCE 1 4 12 +DEFCAL ISWAP 2 1: + FENCE 2 1 + SWAP-PHASES 2 "Transmon-2_charge_tx" 1 "Transmon-1_charge_tx" + FENCE 1 2 10 + SET-PHASE 2 "Transmon-2_flux_tx_c0" 0 + SET-PHASE 10 "Transmon-10_flux_tx_c" 0 + NONBLOCKING PULSE 2 "Transmon-2_flux_tx_c0" erf_square(detuning: 0, duration: 9.2e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.17416181833420805) + NONBLOCKING PULSE 10 "Transmon-10_flux_tx_c" erf_square(detuning: 0, duration: 9.2e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.045061767211637536) + SHIFT-PHASE 2 "Transmon-2_charge_tx" 0.855014035434708 + SHIFT-PHASE 1 "Transmon-1_charge_tx" 5.613210087120642 + FENCE 1 2 10 +DEFCAL CZ 2 5: + FENCE 2 5 13 + SET-PHASE 2 "Transmon-2_flux_tx_b0" 0 + SET-PHASE 13 "Transmon-13_flux_tx_c" 0 + NONBLOCKING PULSE 2 "Transmon-2_flux_tx_b0" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.1358371274462241) + NONBLOCKING PULSE 13 "Transmon-13_flux_tx_c" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.0390269261261847) + SHIFT-PHASE 2 "Transmon-2_charge_tx" 3.768990537566626 + SHIFT-PHASE 5 "Transmon-5_charge_tx" 3.0365394439550686 + FENCE 2 5 13 +DEFCAL RX(1.5707963267948966) 0: + FENCE 0 + NONBLOCKING PULSE 0 "Transmon-0_charge_tx" drag_gaussian(alpha: 0.13542738846114907, anh: -222600000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.47907538311271863, t0: 2e-8) + FENCE 0 +DEFCAL CZ 0 3: + FENCE 0 3 11 + SET-PHASE 0 "Transmon-0_flux_tx_b3" 0 + SET-PHASE 11 "Transmon-11_flux_tx_b" 0 + NONBLOCKING PULSE 0 "Transmon-0_flux_tx_b3" erf_square(detuning: 0, duration: 8.8e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.18223888045995248) + NONBLOCKING PULSE 11 "Transmon-11_flux_tx_b" erf_square(detuning: 0, duration: 8.8e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.03996313063453536) + SHIFT-PHASE 0 "Transmon-0_charge_tx" 2.0800631197652306 + SHIFT-PHASE 3 "Transmon-3_charge_tx" 4.191991209282252 + FENCE 0 3 11 +DEFCAL CZ 5 4: + FENCE 4 5 15 + SET-PHASE 5 "Transmon-5_flux_tx_b4" 0 + SET-PHASE 15 "Transmon-15_flux_tx_c" 0 + NONBLOCKING PULSE 5 "Transmon-5_flux_tx_b4" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.14966399310753775) + NONBLOCKING PULSE 15 "Transmon-15_flux_tx_c" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.04537887656706088) + SHIFT-PHASE 5 "Transmon-5_charge_tx" 1.431831310466891 + SHIFT-PHASE 4 "Transmon-4_charge_tx" 2.733409195243092 + FENCE 4 5 15 +DEFCAL CZ 2 1: + FENCE 1 2 10 + SET-PHASE 2 "Transmon-2_flux_tx_b0" 0 + SET-PHASE 10 "Transmon-10_flux_tx_c" 0 + NONBLOCKING PULSE 2 "Transmon-2_flux_tx_b0" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.11873924927771093) + NONBLOCKING PULSE 10 "Transmon-10_flux_tx_c" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.04431239611800164) + SHIFT-PHASE 2 "Transmon-2_charge_tx" 2.848733001435783 + SHIFT-PHASE 1 "Transmon-1_charge_tx" 3.8870744915475393 + FENCE 1 2 10 +DEFCAL CZ 7 6: + FENCE 19 6 7 + SET-PHASE 7 "Transmon-7_flux_tx_b4" 0 + SET-PHASE 19 "Transmon-19_flux_tx_c" 0 + NONBLOCKING PULSE 7 "Transmon-7_flux_tx_b4" erf_square(detuning: 0, duration: 1.0000000000000001e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.20638370124374747) + NONBLOCKING PULSE 19 "Transmon-19_flux_tx_c" erf_square(detuning: 0, duration: 1.0000000000000001e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.04091372108262148) + SHIFT-PHASE 7 "Transmon-7_charge_tx" 4.694142768750111 + SHIFT-PHASE 6 "Transmon-6_charge_tx" 3.9417414869450966 + FENCE 19 6 7 +DEFCAL CZ 5 8: + FENCE 8 18 5 + SET-PHASE 5 "Transmon-5_flux_tx_b4" 0 + SET-PHASE 18 "Transmon-18_flux_tx_c" 0 + NONBLOCKING PULSE 5 "Transmon-5_flux_tx_b4" erf_square(detuning: 0, duration: 1.2000000000000002e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.2581263902261661) + NONBLOCKING PULSE 18 "Transmon-18_flux_tx_c" erf_square(detuning: 0, duration: 1.2000000000000002e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.03448315443309899) + SHIFT-PHASE 5 "Transmon-5_charge_tx" 3.715210505404995 + SHIFT-PHASE 8 "Transmon-8_charge_tx" 3.465935172785198 + FENCE 8 18 5 +DEFCAL CZ 7 8: + FENCE 8 20 7 + SET-PHASE 7 "Transmon-7_flux_tx_b3" 0 + SET-PHASE 20 "Transmon-20_flux_tx_c" 0 + NONBLOCKING PULSE 7 "Transmon-7_flux_tx_b3" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.21402048288003675) + NONBLOCKING PULSE 20 "Transmon-20_flux_tx_c" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.037991855929264906) + SHIFT-PHASE 7 "Transmon-7_charge_tx" 0.8889210348039244 + SHIFT-PHASE 8 "Transmon-8_charge_tx" 4.241566596791783 + FENCE 8 20 7 +DEFCAL RX(1.5707963267948966) 3: + FENCE 3 + NONBLOCKING PULSE 3 "Transmon-3_charge_tx" drag_gaussian(alpha: 0.47696435679337607, anh: -219100000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.19750058901216602, t0: 2e-8) + FENCE 3 +DEFCAL ISWAP 3 0: + FENCE 3 0 + SWAP-PHASES 3 "Transmon-3_charge_tx" 0 "Transmon-0_charge_tx" + FENCE 0 11 3 + SET-PHASE 3 "Transmon-3_flux_tx_c0" 0 + SET-PHASE 11 "Transmon-11_flux_tx_b" 0 + NONBLOCKING PULSE 3 "Transmon-3_flux_tx_c0" erf_square(detuning: 0, duration: 7.6e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.24046653233447746) + NONBLOCKING PULSE 11 "Transmon-11_flux_tx_b" erf_square(detuning: 0, duration: 7.6e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.049446236869436985) + SHIFT-PHASE 0 "Transmon-0_charge_tx" 5.8273895197613905 + SHIFT-PHASE 3 "Transmon-3_charge_tx" 4.6271805494121265 + FENCE 0 11 3 +DEFCAL RX(1.5707963267948966) 1: + FENCE 1 + NONBLOCKING PULSE 1 "Transmon-1_charge_tx" drag_gaussian(alpha: -2.162882178363339, anh: -217900000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.3369878329332824, t0: 2e-8) + FENCE 1 +DEFCAL RX(3.141592653589793) 3: + FENCE 3 + NONBLOCKING PULSE 3 "Transmon-3_charge_tx" drag_gaussian(alpha: 0.47696435679337607, anh: -219100000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.3988164142921256, t0: 2e-8) + FENCE 3 +DEFCAL CZ 0 1: + FENCE 0 9 1 + SET-PHASE 0 "Transmon-0_flux_tx_b1" 0 + SET-PHASE 9 "Transmon-9_flux_tx" 0 + NONBLOCKING PULSE 0 "Transmon-0_flux_tx_b1" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.13844490786066607) + NONBLOCKING PULSE 9 "Transmon-9_flux_tx" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.03650035161667822) + SHIFT-PHASE 0 "Transmon-0_charge_tx" 5.537887902714859 + SHIFT-PHASE 1 "Transmon-1_charge_tx" 0.49914593874859375 + FENCE 0 9 1 +DEFCAL RX(1.5707963267948966) 4: + FENCE 4 + NONBLOCKING PULSE 4 "Transmon-4_charge_tx" drag_gaussian(alpha: 0.2928482440908154, anh: -222400000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.35354372459127953, t0: 2e-8) + FENCE 4 +DEFCAL RX(3.141592653589793) 4: + FENCE 4 + NONBLOCKING PULSE 4 "Transmon-4_charge_tx" drag_gaussian(alpha: 0.2928482440908154, anh: -222400000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.7172545247480638, t0: 2e-8) + FENCE 4 +DEFCAL RX(1.5707963267948966) 5: + FENCE 5 + NONBLOCKING PULSE 5 "Transmon-5_charge_tx" drag_gaussian(alpha: 0.039350003132839505, anh: -215600000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.3740789207408433, t0: 2e-8) + FENCE 5 +DEFCAL ISWAP 4 3: + FENCE 4 3 + SWAP-PHASES 4 "Transmon-4_charge_tx" 3 "Transmon-3_charge_tx" + FENCE 3 4 14 + SET-PHASE 4 "Transmon-4_flux_tx_c2" 0 + SET-PHASE 14 "Transmon-14_flux_tx_b" 0 + NONBLOCKING PULSE 4 "Transmon-4_flux_tx_c2" erf_square(detuning: 0, duration: 7.200000000000001e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.26298966682216773) + NONBLOCKING PULSE 14 "Transmon-14_flux_tx_b" erf_square(detuning: 0, duration: 7.200000000000001e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.05426086653833623) + SHIFT-PHASE 3 "Transmon-3_charge_tx" 0.33753546243154864 + SHIFT-PHASE 4 "Transmon-4_charge_tx" 5.623865063400751 + FENCE 3 4 14 +DEFCAL RX(3.141592653589793) 8: + FENCE 8 + NONBLOCKING PULSE 8 "Transmon-8_charge_tx" drag_gaussian(alpha: 0.7782981501706374, anh: -226500000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.708212958858981, t0: 2e-8) + FENCE 8 +DEFCAL RX(1.5707963267948966) 8: + FENCE 8 + NONBLOCKING PULSE 8 "Transmon-8_charge_tx" drag_gaussian(alpha: 0.7782981501706374, anh: -226500000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.3502477178696265, t0: 2e-8) + FENCE 8 +DEFCAL RX(3.141592653589793) 6: + FENCE 6 + NONBLOCKING PULSE 6 "Transmon-6_charge_tx" drag_gaussian(alpha: -2.155859812397402, anh: -226800000.00000003, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.5742201602335346, t0: 2e-8) + FENCE 6 +DEFCAL RZ(%theta) 2: + SHIFT-PHASE 2 "Transmon-2_charge_tx" -1*%theta +DEFCAL RZ(%theta) 0: + SHIFT-PHASE 0 "Transmon-0_charge_tx" -1*%theta +DEFCAL RZ(%theta) 6: + SHIFT-PHASE 6 "Transmon-6_charge_tx" -1*%theta +DEFCAL RZ(%theta) 1: + SHIFT-PHASE 1 "Transmon-1_charge_tx" -1*%theta +DEFCAL RZ(%theta) 5: + SHIFT-PHASE 5 "Transmon-5_charge_tx" -1*%theta +DEFCAL RZ(%theta) 7: + SHIFT-PHASE 7 "Transmon-7_charge_tx" -1*%theta +DEFCAL RZ(%theta) 3: + SHIFT-PHASE 3 "Transmon-3_charge_tx" -1*%theta +DEFCAL RZ(%theta) 4: + SHIFT-PHASE 4 "Transmon-4_charge_tx" -1*%theta +DEFCAL RZ(%theta) 8: + SHIFT-PHASE 8 "Transmon-8_charge_tx" -1*%theta +DEFCAL RX(-3.141592653589793) 2: + RZ(3.141592653589793) 2 + RX(pi) 2 + RZ(-3.141592653589793) 2 +DEFCAL RX(-3.141592653589793) 0: + RZ(3.141592653589793) 0 + RX(pi) 0 + RZ(-3.141592653589793) 0 +DEFCAL RX(-1.5707963267948966) 6: + RZ(3.141592653589793) 6 + RX(pi/2) 6 + RZ(-3.141592653589793) 6 +DEFCAL RX(-3.141592653589793) 1: + RZ(3.141592653589793) 1 + RX(pi) 1 + RZ(-3.141592653589793) 1 +DEFCAL RX(-3.141592653589793) 5: + RZ(3.141592653589793) 5 + RX(pi) 5 + RZ(-3.141592653589793) 5 +DEFCAL RX(-3.141592653589793) 7: + RZ(3.141592653589793) 7 + RX(pi) 7 + RZ(-3.141592653589793) 7 +DEFCAL RX(-1.5707963267948966) 7: + RZ(3.141592653589793) 7 + RX(pi/2) 7 + RZ(-3.141592653589793) 7 +DEFCAL RX(-1.5707963267948966) 2: + RZ(3.141592653589793) 2 + RX(pi/2) 2 + RZ(-3.141592653589793) 2 +DEFCAL RX(-1.5707963267948966) 0: + RZ(3.141592653589793) 0 + RX(pi/2) 0 + RZ(-3.141592653589793) 0 +DEFCAL RX(-1.5707963267948966) 3: + RZ(3.141592653589793) 3 + RX(pi/2) 3 + RZ(-3.141592653589793) 3 +DEFCAL RX(-1.5707963267948966) 1: + RZ(3.141592653589793) 1 + RX(pi/2) 1 + RZ(-3.141592653589793) 1 +DEFCAL RX(-3.141592653589793) 3: + RZ(3.141592653589793) 3 + RX(pi) 3 + RZ(-3.141592653589793) 3 +DEFCAL RX(-1.5707963267948966) 4: + RZ(3.141592653589793) 4 + RX(pi/2) 4 + RZ(-3.141592653589793) 4 +DEFCAL RX(-3.141592653589793) 4: + RZ(3.141592653589793) 4 + RX(pi) 4 + RZ(-3.141592653589793) 4 +DEFCAL RX(-1.5707963267948966) 5: + RZ(3.141592653589793) 5 + RX(pi/2) 5 + RZ(-3.141592653589793) 5 +DEFCAL RX(-3.141592653589793) 8: + RZ(3.141592653589793) 8 + RX(pi) 8 + RZ(-3.141592653589793) 8 +DEFCAL RX(-1.5707963267948966) 8: + RZ(3.141592653589793) 8 + RX(pi/2) 8 + RZ(-3.141592653589793) 8 +DEFCAL RX(-3.141592653589793) 6: + RZ(3.141592653589793) 6 + RX(pi) 6 + RZ(-3.141592653589793) 6 +DEFCAL ISWAP 7 8: + ISWAP 8 7 +DEFCAL ISWAP 7 6: + ISWAP 6 7 +DEFCAL ISWAP 3 6: + ISWAP 6 3 +DEFCAL ISWAP 5 2: + ISWAP 2 5 +DEFCAL CZ 6 3: + CZ 3 6 +DEFCAL CZ 4 1: + CZ 1 4 +DEFCAL CZ 4 7: + CZ 7 4 +DEFCAL ISWAP 0 1: + ISWAP 1 0 +DEFCAL ISWAP 7 4: + ISWAP 4 7 +DEFCAL ISWAP 5 8: + ISWAP 8 5 +DEFCAL ISWAP 5 4: + ISWAP 4 5 +DEFCAL CZ 4 3: + CZ 3 4 +DEFCAL ISWAP 1 4: + ISWAP 4 1 +DEFCAL ISWAP 1 2: + ISWAP 2 1 +DEFCAL CZ 5 2: + CZ 2 5 +DEFCAL CZ 3 0: + CZ 0 3 +DEFCAL CZ 4 5: + CZ 5 4 +DEFCAL CZ 1 2: + CZ 2 1 +DEFCAL CZ 6 7: + CZ 7 6 +DEFCAL CZ 8 5: + CZ 5 8 +DEFCAL CZ 8 7: + CZ 7 8 +DEFCAL ISWAP 0 3: + ISWAP 3 0 +DEFCAL CZ 1 0: + CZ 0 1 +DEFCAL ISWAP 3 4: + ISWAP 4 3 +DEFCAL MEASURE 6 addr: + FENCE 6 + DECLARE q6_unclassified REAL[2] + NONBLOCKING PULSE 6 "Transmon-6_readout_tx" flat(detuning: 0, duration: 1.956e-6, iq: 1, phase: 0, scale: 0.014307646903536569) + NONBLOCKING CAPTURE 6 "Transmon-6_readout_rx" flat(detuning: 0, duration: 1.956e-6, iq: 1, phase: 0.6988950478059351, scale: 1) q6_unclassified[0] + PRAGMA FILTER-NODE q6_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q6_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q6_unclassified "q6_unclassified" + PRAGMA FILTER-NODE q6_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [1.0000000000000002, 0.0], 'threshold': -0.15356965733101743}, 'source': 'q6_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q6_classified "addr" + FENCE 6 + +DEFCAL MEASURE 5 addr: + FENCE 5 + DECLARE q5_unclassified REAL[2] + NONBLOCKING PULSE 5 "Transmon-5_readout_tx" flat(detuning: 0, duration: 1.924e-6, iq: 1, phase: 0, scale: 0.047211208346044496) + NONBLOCKING CAPTURE 5 "Transmon-5_readout_rx" flat(detuning: 0, duration: 1.924e-6, iq: 1, phase: 0.2732322355761583, scale: 1) q5_unclassified[0] + PRAGMA FILTER-NODE q5_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q5_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q5_unclassified "q5_unclassified" + PRAGMA FILTER-NODE q5_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [1.0, 0.0], 'threshold': -0.10850691295761304}, 'source': 'q5_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q5_classified "addr" + FENCE 5 + +DEFCAL MEASURE 7 addr: + FENCE 7 + DECLARE q7_unclassified REAL[2] + NONBLOCKING PULSE 7 "Transmon-7_readout_tx" flat(detuning: 0, duration: 1.3240000000000002e-6, iq: 1, phase: 0, scale: 0.09296296162036309) + NONBLOCKING CAPTURE 7 "Transmon-7_readout_rx" flat(detuning: 0, duration: 1.3240000000000002e-6, iq: 1, phase: 0.3216883807851195, scale: 1) q7_unclassified[0] + PRAGMA FILTER-NODE q7_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q7_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q7_unclassified "q7_unclassified" + PRAGMA FILTER-NODE q7_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [1.0, 0.0], 'threshold': 0.5303443155086909}, 'source': 'q7_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q7_classified "addr" + FENCE 7 + +DEFCAL MEASURE 4 addr: + FENCE 4 + DECLARE q4_unclassified REAL[2] + NONBLOCKING PULSE 4 "Transmon-4_readout_tx" flat(detuning: 0, duration: 1.2680000000000002e-6, iq: 1, phase: 0, scale: 0.05530407739305864) + NONBLOCKING CAPTURE 4 "Transmon-4_readout_rx" flat(detuning: 0, duration: 1.2680000000000002e-6, iq: 1, phase: 0.1200124605067616, scale: 1) q4_unclassified[0] + PRAGMA FILTER-NODE q4_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q4_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q4_unclassified "q4_unclassified" + PRAGMA FILTER-NODE q4_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [0.9999999999999999, -3.469446951953614e-18], 'threshold': -0.08435722091118324}, 'source': 'q4_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q4_classified "addr" + FENCE 4 + +DEFCAL MEASURE 3 addr: + FENCE 3 + DECLARE q3_unclassified REAL[2] + NONBLOCKING PULSE 3 "Transmon-3_readout_tx" flat(detuning: 0, duration: 1.72e-6, iq: 1, phase: 0, scale: 0.011216900672579804) + NONBLOCKING CAPTURE 3 "Transmon-3_readout_rx" flat(detuning: 0, duration: 1.72e-6, iq: 1, phase: 0.43678830240167044, scale: 1) q3_unclassified[0] + PRAGMA FILTER-NODE q3_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q3_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q3_unclassified "q3_unclassified" + PRAGMA FILTER-NODE q3_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [1.0, 0.0], 'threshold': -0.24930080251066203}, 'source': 'q3_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q3_classified "addr" + FENCE 3 + +DEFCAL MEASURE 8 addr: + FENCE 8 + DECLARE q8_unclassified REAL[2] + NONBLOCKING PULSE 8 "Transmon-8_readout_tx" flat(detuning: 0, duration: 1.912e-6, iq: 1, phase: 0, scale: 0.04642767515136054) + NONBLOCKING CAPTURE 8 "Transmon-8_readout_rx" flat(detuning: 0, duration: 1.912e-6, iq: 1, phase: 0.494699205440148, scale: 1) q8_unclassified[0] + PRAGMA FILTER-NODE q8_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q8_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q8_unclassified "q8_unclassified" + PRAGMA FILTER-NODE q8_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [1.0, 0.0], 'threshold': -0.16648016144844632}, 'source': 'q8_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q8_classified "addr" + FENCE 8 + +DEFCAL MEASURE 2 addr: + FENCE 2 + DECLARE q2_unclassified REAL[2] + NONBLOCKING PULSE 2 "Transmon-2_readout_tx" flat(detuning: 0, duration: 1.956e-6, iq: 1, phase: 0, scale: 0.05153098393377358) + NONBLOCKING CAPTURE 2 "Transmon-2_readout_rx" flat(detuning: 0, duration: 1.956e-6, iq: 1, phase: 0.17920767432074045, scale: 1) q2_unclassified[0] + PRAGMA FILTER-NODE q2_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q2_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q2_unclassified "q2_unclassified" + PRAGMA FILTER-NODE q2_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [1.0, 0.0], 'threshold': 0.45366912449466745}, 'source': 'q2_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q2_classified "addr" + FENCE 2 + +DEFCAL MEASURE 0 addr: + FENCE 0 + DECLARE q0_unclassified REAL[2] + NONBLOCKING PULSE 0 "Transmon-0_readout_tx" flat(detuning: 0, duration: 1.916e-6, iq: 1, phase: 0, scale: 0.02461606027611915) + NONBLOCKING CAPTURE 0 "Transmon-0_readout_rx" flat(detuning: 0, duration: 1.916e-6, iq: 1, phase: 0.15779206199849813, scale: 1) q0_unclassified[0] + PRAGMA FILTER-NODE q0_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q0_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q0_unclassified "q0_unclassified" + PRAGMA FILTER-NODE q0_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [1.0, -6.938893903907228e-18], 'threshold': 0.13715678893970584}, 'source': 'q0_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q0_classified "addr" + FENCE 0 + +DEFCAL MEASURE 1 addr: + FENCE 1 + DECLARE q1_unclassified REAL[2] + NONBLOCKING PULSE 1 "Transmon-1_readout_tx" flat(detuning: 0, duration: 1.148e-6, iq: 1, phase: 0, scale: 0.05002162543740629) + NONBLOCKING CAPTURE 1 "Transmon-1_readout_rx" flat(detuning: 0, duration: 1.148e-6, iq: 1, phase: 0.8781069639131796, scale: 1) q1_unclassified[0] + PRAGMA FILTER-NODE q1_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q1_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q1_unclassified "q1_unclassified" + PRAGMA FILTER-NODE q1_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [1.0, -1.3877787807814457e-17], 'threshold': 0.4542844042977344}, 'source': 'q1_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q1_classified "addr" + FENCE 1 + diff --git a/test/bench/fixtures/over-9000.quil b/test/bench/fixtures/over-9000.quil new file mode 100644 index 000000000..613ec0e26 --- /dev/null +++ b/test/bench/fixtures/over-9000.quil @@ -0,0 +1,9001 @@ +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 + +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 + +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 + +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 + +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +CNOT 1 3 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 +RX(3.882403181997303) 8 +CNOT 0 3 +RY(4.5577145626046) 5 +CNOT 3 6 +CNOT 3 6 +CNOT 5 7 +CNOT 2 4 +RX(4.10899233195489) 2 +RZ(1.8339690381798408) 6 +RY(5.89415287392258) 3 +RZ(4.380310025182133) 2 +CNOT 1 6 +RZ(4.5068641836677985) 0 +RZ(1.1369350017910809) 7 +RX(5.299221523914757) 7 +CNOT 5 6 +RY(1.7759903888578796) 2 +RZ(1.6723803444036598) 4 +CNOT 5 8 +RZ(4.81533948533556) 1 +CNOT 0 8 +RZ(4.091531092109592) 0 +CNOT 0 2 +CNOT 5 7 +RY(1.7617455482463211) 2 +RX(4.341787227340024) 1 +RY(6.03481174851813) 3 +CNOT 2 7 +CNOT 1 3 diff --git a/test/bench/test_program.py b/test/bench/test_program.py new file mode 100644 index 000000000..0fc3d51c8 --- /dev/null +++ b/test/bench/test_program.py @@ -0,0 +1,27 @@ +import pytest + +from pyquil import Program + + +@pytest.fixture +def mock_calibration_program() -> Program: + with open("test/bench/fixtures/ankaa-9q-1-calibrations.quil", "r") as file: + return Program(file.read()) + + +@pytest.fixture +def over_9000_line_program() -> Program: + with open("test/bench/fixtures/over-9000.quil", "r") as file: + return Program(file.read()) + + +class TestInstructionIteration: + def iterate(self, program: Program): + for instruction in program: + continue + + def test_calibration_program(self, benchmark, mock_calibration_program: Program): + benchmark(self.iterate, mock_calibration_program) + + def test_large_program(self, benchmark, over_9000_line_program: Program): + benchmark(self.iterate, over_9000_line_program) From 80853a6f232ee0fed8e3844cec1f4361aa720c69 Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Sun, 24 Mar 2024 10:32:00 -0700 Subject: [PATCH 04/23] get benchmark working --- rust/src/lib.rs | 1 + rust/src/program.rs | 53 +- test/bench/__snapshots__/test_program.ambr | 9925 ++++++++++++++++++++ test/bench/test_program.py | 9 +- 4 files changed, 9984 insertions(+), 4 deletions(-) create mode 100644 test/bench/__snapshots__/test_program.ambr diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 224781bde..f9a141b99 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -18,6 +18,7 @@ fn pyquil(py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> { initalize_submodule(py, "instruction", m, &instruction::init_module(py)?)?; initalize_submodule(py, "expression", m, &expression::init_module(py)?)?; initalize_submodule(py, "primitive", m, &primitive::init_module(py)?)?; + initalize_submodule(py, "program", m, &program::init_module(py)?)?; Ok(()) } diff --git a/rust/src/program.rs b/rust/src/program.rs index 5e9890805..ab56f2017 100644 --- a/rust/src/program.rs +++ b/rust/src/program.rs @@ -1,10 +1,17 @@ -use std::str::FromStr; +use std::{str::FromStr, sync::Arc}; use indexmap::IndexMap; use pyo3::{exceptions::PyValueError, prelude::*}; +use quil_rs::quil::Quil; use crate::instruction::{Declare, DefCalibration, DefMeasureCalibration, Instruction}; +pub fn init_module(_py: Python<'_>) -> PyResult> { + let m = PyModule::new_bound(_py, "program")?; + m.add_class::()?; + Ok(m) +} + #[pyclass] #[derive(Clone, Debug)] pub struct Program { @@ -13,6 +20,23 @@ pub struct Program { num_shots: u64, } +#[pyclass] +pub struct ProgramIter { + // inner: std::vec::IntoIter, + inner: Box + Send>, +} + +#[pymethods] +impl ProgramIter { + fn __iter__(slf: PyRef<'_, Self>) -> PyRef<'_, Self> { + slf + } + + fn __next__(mut slf: PyRefMut<'_, Self>) -> Option { + slf.inner.next() + } +} + #[derive(FromPyObject, Clone, Debug)] pub enum InstructionDesignator { Instruction(Instruction), @@ -108,6 +132,19 @@ impl Program { ) .collect() } + + fn out(&self) -> PyResult { + self.inner + .to_quil() + .map_err(|e| PyValueError::new_err(format!("Could not serialize program to Quil: {e}"))) + } + + fn __iter__(&self, py: Python<'_>) -> PyResult> { + let iter = ProgramIter { + inner: Box::new(self.clone().iter_instructions()), + }; + Py::new(py, iter) + } } impl Program { @@ -120,6 +157,20 @@ impl Program { quil_rs::instruction::Declaration::new(name, descriptor.size, descriptor.sharing) }) } + + fn iter_instructions(self) -> impl Iterator { + self.iter_declarations() + .map(|declaration| { + Instruction::from_quil_rs(quil_rs::instruction::Instruction::Declaration( + declaration, + )) + }) + .chain( + self.inner + .into_body_instructions() + .map(Instruction::from_quil_rs), + ) + } } #[pymodule] diff --git a/test/bench/__snapshots__/test_program.ambr b/test/bench/__snapshots__/test_program.ambr new file mode 100644 index 000000000..cd808b9e5 --- /dev/null +++ b/test/bench/__snapshots__/test_program.ambr @@ -0,0 +1,9925 @@ +# name: TestInstructionIteration.test_calibration_program + ''' + DEFFRAME 3 "Transmon-3_flux_tx_b1": + DIRECTION: "tx" + CENTER-FREQUENCY: 0 + CHANNEL-DELAY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" + INITIAL-FREQUENCY: 250000000 + SAMPLE-RATE: 1000000000 + DEFFRAME 20 "Transmon-20_flux_tx_c": + CHANNEL-DELAY: 0 + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 3, \"sequencer_index\": 3, \"nco_index\": 0}" + CENTER-FREQUENCY: 0 + DEFFRAME 2 "Transmon-2_charge_tx": + DIRECTION: "tx" + CHANNEL-DELAY: 2.52e-7 + INITIAL-FREQUENCY: 4744872053.973973 + CENTER-FREQUENCY: 4750000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 2, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + SAMPLE-RATE: 1000000000 + DEFFRAME 18 "Transmon-18_flux_tx_c": + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" + INITIAL-FREQUENCY: 0 + CHANNEL-DELAY: 0 + DIRECTION: "tx" + DEFFRAME 5 "Transmon-5_readout_tx": + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 0, \"sequencer_index\": 1, \"nco_index\": 0}" + CENTER-FREQUENCY: 7250000000 + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 7231384204.806551 + DIRECTION: "tx" + CHANNEL-DELAY: 2.84e-7 + DEFFRAME 15 "Transmon-15_flux_tx_c": + SAMPLE-RATE: 1000000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 2, \"sequencer_index\": 2, \"nco_index\": 0}" + INITIAL-FREQUENCY: 0 + DIRECTION: "tx" + CENTER-FREQUENCY: 0 + CHANNEL-DELAY: 0 + DEFFRAME 3 "Transmon-3_readout_tx": + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 7170938482.445692 + CHANNEL-DELAY: 2.84e-7 + DIRECTION: "tx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 0, \"sequencer_index\": 1, \"nco_index\": 0}" + CENTER-FREQUENCY: 7250000000 + DEFFRAME 7 "Transmon-7_flux_tx_b3": + SAMPLE-RATE: 1000000000 + CHANNEL-DELAY: 0 + DIRECTION: "tx" + INITIAL-FREQUENCY: 200000000 + CENTER-FREQUENCY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 1}" + DEFFRAME 5 "Transmon-5_charge_tx": + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 4435292009.421719 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 1, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" + CHANNEL-DELAY: 2.52e-7 + DIRECTION: "tx" + CENTER-FREQUENCY: 4500000000 + DEFFRAME 17 "Transmon-17_flux_tx_b": + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 + CHANNEL-DELAY: 0 + INITIAL-FREQUENCY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + CENTER-FREQUENCY: 0 + DEFFRAME 14 "Transmon-14_flux_tx_b": + SAMPLE-RATE: 1000000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 4, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" + INITIAL-FREQUENCY: 0 + CHANNEL-DELAY: 0 + DIRECTION: "tx" + CENTER-FREQUENCY: 0 + DEFFRAME 3 "Transmon-3_flux_tx_b4": + INITIAL-FREQUENCY: 200000000 + SAMPLE-RATE: 1000000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 1}" + CENTER-FREQUENCY: 0 + CHANNEL-DELAY: 0 + DIRECTION: "tx" + DEFFRAME 7 "Transmon-7_charge_tx": + CENTER-FREQUENCY: 4500000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 3, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 4462660006.263186 + CHANNEL-DELAY: 2.52e-7 + DIRECTION: "tx" + DEFFRAME 0 "Transmon-0_charge_tx": + DIRECTION: "tx" + INITIAL-FREQUENCY: 4214284674.965277 + CENTER-FREQUENCY: 4250000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 3, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + CHANNEL-DELAY: 2.52e-7 + SAMPLE-RATE: 1000000000 + DEFFRAME 2 "Transmon-2_readout_rx": + SAMPLE-RATE: 2000000000 + DIRECTION: "rx" + CHANNEL-DELAY: 8e-7 + INITIAL-FREQUENCY: 7482345757.293075 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + DEFFRAME 0 "Transmon-0_flux_tx_b3": + DIRECTION: "tx" + INITIAL-FREQUENCY: 200000000 + CHANNEL-DELAY: 0 + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + DEFFRAME 2 "Transmon-2_readout_tx": + CHANNEL-DELAY: 2.84e-7 + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 7482345757.293075 + DIRECTION: "tx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + CENTER-FREQUENCY: 7250000000 + DEFFRAME 4 "Transmon-4_flux_tx_c2": + INITIAL-FREQUENCY: 250000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + SAMPLE-RATE: 1000000000 + DIRECTION: "tx" + CHANNEL-DELAY: 0 + CENTER-FREQUENCY: 0 + DEFFRAME 10 "Transmon-10_flux_tx_c": + SAMPLE-RATE: 1000000000 + DIRECTION: "tx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" + CENTER-FREQUENCY: 0 + CHANNEL-DELAY: 0 + INITIAL-FREQUENCY: 0 + DEFFRAME 19 "Transmon-19_flux_tx_c": + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 4, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 2, \"sequencer_index\": 2, \"nco_index\": 0}" + CENTER-FREQUENCY: 0 + SAMPLE-RATE: 1000000000 + DIRECTION: "tx" + INITIAL-FREQUENCY: 0 + CHANNEL-DELAY: 0 + DEFFRAME 5 "Transmon-5_flux_tx_b4": + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 250000000 + CENTER-FREQUENCY: 0 + DIRECTION: "tx" + CHANNEL-DELAY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 3, \"sequencer_index\": 3, \"nco_index\": 0}" + DEFFRAME 1 "Transmon-1_readout_rx": + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 1, \"sequencer_index\": 4, \"nco_index\": 0}" + DIRECTION: "rx" + SAMPLE-RATE: 2000000000 + INITIAL-FREQUENCY: 7280659957.4951 + CHANNEL-DELAY: 7.72e-7 + DEFFRAME 11 "Transmon-11_flux_tx_b": + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 2, \"sequencer_index\": 2, \"nco_index\": 0}" + SAMPLE-RATE: 1000000000 + CHANNEL-DELAY: 0 + INITIAL-FREQUENCY: 0 + DIRECTION: "tx" + CENTER-FREQUENCY: 0 + DEFFRAME 13 "Transmon-13_flux_tx_c": + CHANNEL-DELAY: 0 + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 0 + DIRECTION: "tx" + INITIAL-FREQUENCY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + DEFFRAME 7 "Transmon-7_flux_tx_b4": + INITIAL-FREQUENCY: 250000000 + CHANNEL-DELAY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" + CENTER-FREQUENCY: 0 + SAMPLE-RATE: 1000000000 + DIRECTION: "tx" + DEFFRAME 3 "Transmon-3_flux_tx_c0": + SAMPLE-RATE: 1000000000 + CHANNEL-DELAY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 2}" + INITIAL-FREQUENCY: 275000000 + DIRECTION: "tx" + CENTER-FREQUENCY: 0 + DEFFRAME 9 "Transmon-9_flux_tx": + CHANNEL-DELAY: 0 + CENTER-FREQUENCY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 4, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + INITIAL-FREQUENCY: 0 + SAMPLE-RATE: 1000000000 + DIRECTION: "tx" + DEFFRAME 8 "Transmon-8_charge_tx": + CHANNEL-DELAY: 2.52e-7 + DIRECTION: "tx" + CENTER-FREQUENCY: 4500000000 + INITIAL-FREQUENCY: 4525513742.529455 + SAMPLE-RATE: 1000000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 2, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + DEFFRAME 5 "Transmon-5_readout_rx": + INITIAL-FREQUENCY: 7231384204.806551 + SAMPLE-RATE: 2000000000 + DIRECTION: "rx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 0, \"sequencer_index\": 1, \"nco_index\": 0}" + CHANNEL-DELAY: 8e-7 + DEFFRAME 0 "Transmon-0_flux_tx_b1": + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 1}" + INITIAL-FREQUENCY: 250000000 + CENTER-FREQUENCY: 0 + CHANNEL-DELAY: 0 + SAMPLE-RATE: 1000000000 + DIRECTION: "tx" + DEFFRAME 4 "Transmon-4_readout_tx": + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 1, \"sequencer_index\": 9, \"nco_index\": 0}" + CENTER-FREQUENCY: 7250000000 + CHANNEL-DELAY: 2.84e-7 + INITIAL-FREQUENCY: 7428260492.511801 + DEFFRAME 4 "Transmon-4_charge_tx": + INITIAL-FREQUENCY: 4587978549.047542 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 1, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 4750000000 + CHANNEL-DELAY: 2.52e-7 + DEFFRAME 6 "Transmon-6_readout_tx": + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 7250000000 + INITIAL-FREQUENCY: 7312051902.007999 + CHANNEL-DELAY: 2.84e-7 + DIRECTION: "tx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 0, \"sequencer_index\": 2, \"nco_index\": 0}" + DEFFRAME 7 "Transmon-7_readout_tx": + SAMPLE-RATE: 1000000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 1, \"sequencer_index\": 10, \"nco_index\": 0}" + CHANNEL-DELAY: 2.84e-7 + DIRECTION: "tx" + INITIAL-FREQUENCY: 7119237054.836132 + CENTER-FREQUENCY: 7250000000 + DEFFRAME 6 "Transmon-6_flux_tx_c2": + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 2, \"sequencer_index\": 2, \"nco_index\": 0}" + DIRECTION: "tx" + CENTER-FREQUENCY: 0 + SAMPLE-RATE: 1000000000 + CHANNEL-DELAY: 0 + INITIAL-FREQUENCY: 100000000 + DEFFRAME 4 "Transmon-4_flux_tx_c0": + INITIAL-FREQUENCY: 100000000 + CHANNEL-DELAY: 0 + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 0 + DIRECTION: "tx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 1}" + DEFFRAME 1 "Transmon-1_charge_tx": + CENTER-FREQUENCY: 4500000000 + SAMPLE-RATE: 1000000000 + CHANNEL-DELAY: 2.52e-7 + DIRECTION: "tx" + INITIAL-FREQUENCY: 4511844168.512795 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 3, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" + DEFFRAME 8 "Transmon-8_flux_tx_c2": + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 0 + INITIAL-FREQUENCY: 100000000 + CHANNEL-DELAY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 4, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + DEFFRAME 4 "Transmon-4_readout_rx": + DIRECTION: "rx" + SAMPLE-RATE: 2000000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 1, \"sequencer_index\": 5, \"nco_index\": 0}" + CHANNEL-DELAY: 7.72e-7 + INITIAL-FREQUENCY: 7428260492.511801 + DEFFRAME 1 "Transmon-1_readout_tx": + DIRECTION: "tx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 1, \"sequencer_index\": 8, \"nco_index\": 0}" + CHANNEL-DELAY: 2.84e-7 + CENTER-FREQUENCY: 7250000000 + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 7280659957.4951 + DEFFRAME 0 "Transmon-0_readout_rx": + DIRECTION: "rx" + CHANNEL-DELAY: 7.84e-7 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + SAMPLE-RATE: 2000000000 + INITIAL-FREQUENCY: 6990456867.39162 + DEFFRAME 6 "Transmon-6_readout_rx": + DIRECTION: "rx" + CHANNEL-DELAY: 7.84e-7 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 0, \"sequencer_index\": 2, \"nco_index\": 0}" + INITIAL-FREQUENCY: 7312051902.007999 + SAMPLE-RATE: 2000000000 + DEFFRAME 8 "Transmon-8_readout_tx": + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 7368124413.990194 + CHANNEL-DELAY: 2.84e-7 + CENTER-FREQUENCY: 7250000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 0, \"sequencer_index\": 2, \"nco_index\": 0}" + DEFFRAME 2 "Transmon-2_flux_tx_c0": + INITIAL-FREQUENCY: 100000000 + SAMPLE-RATE: 1000000000 + CHANNEL-DELAY: 0 + DIRECTION: "tx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 2, \"sequencer_index\": 2, \"nco_index\": 0}" + CENTER-FREQUENCY: 0 + DEFFRAME 7 "Transmon-7_readout_rx": + DIRECTION: "rx" + CHANNEL-DELAY: 7.72e-7 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 1, \"sequencer_index\": 6, \"nco_index\": 0}" + INITIAL-FREQUENCY: 7119237054.836132 + SAMPLE-RATE: 2000000000 + DEFFRAME 3 "Transmon-3_charge_tx": + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 2, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 1, \"sequencer_index\": 1, \"nco_index\": 0}" + INITIAL-FREQUENCY: 4412657358.639686 + DIRECTION: "tx" + CHANNEL-DELAY: 2.52e-7 + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 4500000000 + DEFFRAME 1 "Transmon-1_flux_tx_b4": + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 7, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 3, \"sequencer_index\": 3, \"nco_index\": 0}" + CHANNEL-DELAY: 0 + INITIAL-FREQUENCY: 250000000 + DEFFRAME 0 "Transmon-0_readout_tx": + DIRECTION: "tx" + INITIAL-FREQUENCY: 6990456867.39162 + SAMPLE-RATE: 1000000000 + CENTER-FREQUENCY: 7250000000 + CHANNEL-DELAY: 2.84e-7 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 5, \"channel_type\": \"QRTx2HiChannel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + DEFFRAME 8 "Transmon-8_readout_rx": + INITIAL-FREQUENCY: 7368124413.990194 + SAMPLE-RATE: 2000000000 + DIRECTION: "rx" + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 0, \"sequencer_index\": 2, \"nco_index\": 0}" + CHANNEL-DELAY: 8e-7 + DEFFRAME 12 "Transmon-12_flux_tx_b": + CENTER-FREQUENCY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 4, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 3, \"sequencer_index\": 3, \"nco_index\": 0}" + SAMPLE-RATE: 1000000000 + INITIAL-FREQUENCY: 0 + CHANNEL-DELAY: 0 + DIRECTION: "tx" + DEFFRAME 16 "Transmon-16_flux_tx_c": + CHANNEL-DELAY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 3, \"sequencer_index\": 3, \"nco_index\": 0}" + CENTER-FREQUENCY: 0 + INITIAL-FREQUENCY: 0 + SAMPLE-RATE: 1000000000 + DIRECTION: "tx" + DEFFRAME 3 "Transmon-3_readout_rx": + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami00\", \"card_index\": 0, \"channel_type\": \"QRRx2Channel\", \"channel_index\": 0, \"sequencer_index\": 1, \"nco_index\": 0}" + CHANNEL-DELAY: 7.84e-7 + DIRECTION: "rx" + SAMPLE-RATE: 2000000000 + INITIAL-FREQUENCY: 7170938482.445692 + DEFFRAME 2 "Transmon-2_flux_tx_b0": + INITIAL-FREQUENCY: 250000000 + DIRECTION: "tx" + SAMPLE-RATE: 1000000000 + CHANNEL-DELAY: 0 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 6, \"channel_type\": \"QDOFastFluxChannel\", \"channel_index\": 2, \"sequencer_index\": 2, \"nco_index\": 1}" + CENTER-FREQUENCY: 0 + DEFFRAME 6 "Transmon-6_charge_tx": + CENTER-FREQUENCY: 4500000000 + DIRECTION: "tx" + CHANNEL-DELAY: 2.52e-7 + SAMPLE-RATE: 1000000000 + HARDWARE-OBJECT: "{\"instrument_name\": \"tsunami01\", \"card_index\": 3, \"channel_type\": \"QGSx2Channel\", \"channel_index\": 0, \"sequencer_index\": 0, \"nco_index\": 0}" + INITIAL-FREQUENCY: 4553423149.699226 + DEFCAL ISWAP 8 7: + FENCE 8 7 + SWAP-PHASES 8 "Transmon-8_charge_tx" 7 "Transmon-7_charge_tx" + FENCE 8 20 7 + SET-PHASE 8 "Transmon-8_flux_tx_c2" 0 + SET-PHASE 20 "Transmon-20_flux_tx_c" 0 + NONBLOCKING PULSE 8 "Transmon-8_flux_tx_c2" erf_square(detuning: 0, duration: 8e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.09293827229138203) + NONBLOCKING PULSE 20 "Transmon-20_flux_tx_c" erf_square(detuning: 0, duration: 8e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.02320033220152222) + SHIFT-PHASE 8 "Transmon-8_charge_tx" 0.22382890863359997 + SHIFT-PHASE 7 "Transmon-7_charge_tx" 0.05984138769003293 + FENCE 8 20 7 + DEFCAL RX(3.141592653589793) 2: + FENCE 2 + NONBLOCKING PULSE 2 "Transmon-2_charge_tx" drag_gaussian(alpha: -0.07878787893661655, anh: -222900000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.6379325598123723, t0: 2e-8) + FENCE 2 + DEFCAL RX(3.141592653589793) 0: + FENCE 0 + NONBLOCKING PULSE 0 "Transmon-0_charge_tx" drag_gaussian(alpha: 0.13542738846114907, anh: -222600000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.9902768425482965, t0: 2e-8) + FENCE 0 + DEFCAL RX(1.5707963267948966) 6: + FENCE 6 + NONBLOCKING PULSE 6 "Transmon-6_charge_tx" drag_gaussian(alpha: -2.155859812397402, anh: -226800000.00000003, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.28513019332981027, t0: 2e-8) + FENCE 6 + DEFCAL ISWAP 6 7: + FENCE 6 7 + SWAP-PHASES 6 "Transmon-6_charge_tx" 7 "Transmon-7_charge_tx" + FENCE 19 6 7 + SET-PHASE 6 "Transmon-6_flux_tx_c2" 0 + SET-PHASE 19 "Transmon-19_flux_tx_c" 0 + NONBLOCKING PULSE 6 "Transmon-6_flux_tx_c2" erf_square(detuning: 0, duration: 7.6e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.10696673028620417) + NONBLOCKING PULSE 19 "Transmon-19_flux_tx_c" erf_square(detuning: 0, duration: 7.6e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.033422037308021256) + SHIFT-PHASE 6 "Transmon-6_charge_tx" 5.447361532820828 + SHIFT-PHASE 7 "Transmon-7_charge_tx" 4.843612683696903 + FENCE 19 6 7 + DEFCAL ISWAP 6 3: + FENCE 6 3 + SWAP-PHASES 6 "Transmon-6_charge_tx" 3 "Transmon-3_charge_tx" + FENCE 16 3 6 + SET-PHASE 6 "Transmon-6_flux_tx_c2" 0 + SET-PHASE 16 "Transmon-16_flux_tx_c" 0 + NONBLOCKING PULSE 6 "Transmon-6_flux_tx_c2" erf_square(detuning: 0, duration: 7.6e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.13792843585777595) + NONBLOCKING PULSE 16 "Transmon-16_flux_tx_c" erf_square(detuning: 0, duration: 7.6e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.031094767203778725) + SHIFT-PHASE 3 "Transmon-3_charge_tx" 0.9243471453465009 + SHIFT-PHASE 6 "Transmon-6_charge_tx" 5.8705789844451495 + FENCE 16 3 6 + DEFCAL RX(3.141592653589793) 1: + FENCE 1 + NONBLOCKING PULSE 1 "Transmon-1_charge_tx" drag_gaussian(alpha: -2.162882178363339, anh: -217900000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.6841599120529729, t0: 2e-8) + FENCE 1 + DEFCAL RX(3.141592653589793) 5: + FENCE 5 + NONBLOCKING PULSE 5 "Transmon-5_charge_tx" drag_gaussian(alpha: 0.039350003132839505, anh: -215600000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.7671503966503441, t0: 2e-8) + FENCE 5 + DEFCAL ISWAP 2 5: + FENCE 2 5 + SWAP-PHASES 2 "Transmon-2_charge_tx" 5 "Transmon-5_charge_tx" + FENCE 2 5 13 + SET-PHASE 2 "Transmon-2_flux_tx_c0" 0 + SET-PHASE 13 "Transmon-13_flux_tx_c" 0 + NONBLOCKING PULSE 2 "Transmon-2_flux_tx_c0" erf_square(detuning: 0, duration: 6.4e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.3841622628177994) + NONBLOCKING PULSE 13 "Transmon-13_flux_tx_c" erf_square(detuning: 0, duration: 6.4e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.05280849375101514) + SHIFT-PHASE 2 "Transmon-2_charge_tx" 6.147836062395494 + SHIFT-PHASE 5 "Transmon-5_charge_tx" 5.5261357732341345 + FENCE 2 5 13 + DEFCAL RX(3.141592653589793) 7: + FENCE 7 + NONBLOCKING PULSE 7 "Transmon-7_charge_tx" drag_gaussian(alpha: 0.9096363806764934, anh: -217400000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.826625959782886, t0: 2e-8) + FENCE 7 + DEFCAL CZ 3 6: + FENCE 16 3 6 + SET-PHASE 3 "Transmon-3_flux_tx_b1" 0 + SET-PHASE 16 "Transmon-16_flux_tx_c" 0 + NONBLOCKING PULSE 3 "Transmon-3_flux_tx_b1" erf_square(detuning: 0, duration: 1.08e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.1675860693882438) + NONBLOCKING PULSE 16 "Transmon-16_flux_tx_c" erf_square(detuning: 0, duration: 1.08e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.030384311575257488) + SHIFT-PHASE 3 "Transmon-3_charge_tx" 3.9694481754701703 + SHIFT-PHASE 6 "Transmon-6_charge_tx" 3.768018465636489 + FENCE 16 3 6 + DEFCAL CZ 1 4: + FENCE 1 12 4 + SET-PHASE 1 "Transmon-1_flux_tx_b4" 0 + SET-PHASE 12 "Transmon-12_flux_tx_b" 0 + NONBLOCKING PULSE 1 "Transmon-1_flux_tx_b4" erf_square(detuning: 0, duration: 9.2e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.17006527407557853) + NONBLOCKING PULSE 12 "Transmon-12_flux_tx_b" erf_square(detuning: 0, duration: 9.2e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.03619982805504285) + SHIFT-PHASE 1 "Transmon-1_charge_tx" 3.125009353160881 + SHIFT-PHASE 4 "Transmon-4_charge_tx" 3.460623213658636 + FENCE 1 12 4 + DEFCAL RX(1.5707963267948966) 7: + FENCE 7 + NONBLOCKING PULSE 7 "Transmon-7_charge_tx" drag_gaussian(alpha: 0.9096363806764934, anh: -217400000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.4065273116435608, t0: 2e-8) + FENCE 7 + DEFCAL CZ 7 4: + FENCE 17 4 7 + SET-PHASE 7 "Transmon-7_flux_tx_b4" 0 + SET-PHASE 17 "Transmon-17_flux_tx_b" 0 + NONBLOCKING PULSE 7 "Transmon-7_flux_tx_b4" erf_square(detuning: 0, duration: 8.400000000000001e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.15852175541643804) + NONBLOCKING PULSE 17 "Transmon-17_flux_tx_b" erf_square(detuning: 0, duration: 8.400000000000001e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.04982597954141329) + SHIFT-PHASE 7 "Transmon-7_charge_tx" 1.5059039834765204 + SHIFT-PHASE 4 "Transmon-4_charge_tx" 3.3143840660325132 + FENCE 17 4 7 + DEFCAL ISWAP 1 0: + FENCE 1 0 + SWAP-PHASES 1 "Transmon-1_charge_tx" 0 "Transmon-0_charge_tx" + FENCE 0 1 9 + SET-PHASE 1 "Transmon-1_flux_tx_b4" 0 + SET-PHASE 9 "Transmon-9_flux_tx" 0 + NONBLOCKING PULSE 1 "Transmon-1_flux_tx_b4" erf_square(detuning: 0, duration: 7.200000000000001e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.2661529302374707) + NONBLOCKING PULSE 9 "Transmon-9_flux_tx" erf_square(detuning: 0, duration: 7.200000000000001e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.041660813279822996) + SHIFT-PHASE 0 "Transmon-0_charge_tx" 4.551676837184467 + SHIFT-PHASE 1 "Transmon-1_charge_tx" 4.438079971662577 + FENCE 0 1 9 + DEFCAL ISWAP 4 7: + FENCE 4 7 + SWAP-PHASES 4 "Transmon-4_charge_tx" 7 "Transmon-7_charge_tx" + FENCE 17 4 7 + SET-PHASE 4 "Transmon-4_flux_tx_c2" 0 + SET-PHASE 17 "Transmon-17_flux_tx_b" 0 + NONBLOCKING PULSE 4 "Transmon-4_flux_tx_c2" erf_square(detuning: 0, duration: 8e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.19478981173083013) + NONBLOCKING PULSE 17 "Transmon-17_flux_tx_b" erf_square(detuning: 0, duration: 8e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.03957503281828901) + SHIFT-PHASE 4 "Transmon-4_charge_tx" 3.964358319805802 + SHIFT-PHASE 7 "Transmon-7_charge_tx" 4.409912201428099 + FENCE 17 4 7 + DEFCAL ISWAP 8 5: + FENCE 8 5 + SWAP-PHASES 8 "Transmon-8_charge_tx" 5 "Transmon-5_charge_tx" + FENCE 8 18 5 + SET-PHASE 8 "Transmon-8_flux_tx_c2" 0 + SET-PHASE 18 "Transmon-18_flux_tx_c" 0 + NONBLOCKING PULSE 8 "Transmon-8_flux_tx_c2" erf_square(detuning: 0, duration: 6.4e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.11162638835503749) + NONBLOCKING PULSE 18 "Transmon-18_flux_tx_c" erf_square(detuning: 0, duration: 6.4e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.05775362805201258) + SHIFT-PHASE 5 "Transmon-5_charge_tx" 6.262391345804057 + SHIFT-PHASE 8 "Transmon-8_charge_tx" 3.1076107865617995 + FENCE 8 18 5 + DEFCAL RX(1.5707963267948966) 2: + FENCE 2 + NONBLOCKING PULSE 2 "Transmon-2_charge_tx" drag_gaussian(alpha: -0.07878787893661655, anh: -222900000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.31564388178872366, t0: 2e-8) + FENCE 2 + DEFCAL ISWAP 4 5: + FENCE 4 5 + SWAP-PHASES 4 "Transmon-4_charge_tx" 5 "Transmon-5_charge_tx" + FENCE 4 5 15 + SET-PHASE 4 "Transmon-4_flux_tx_c0" 0 + SET-PHASE 15 "Transmon-15_flux_tx_c" 0 + NONBLOCKING PULSE 4 "Transmon-4_flux_tx_c0" erf_square(detuning: 0, duration: 1.28e-7, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.08829493474332083) + NONBLOCKING PULSE 15 "Transmon-15_flux_tx_c" erf_square(detuning: 0, duration: 1.28e-7, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.042292612665509495) + SHIFT-PHASE 4 "Transmon-4_charge_tx" 1.276585397129048 + SHIFT-PHASE 5 "Transmon-5_charge_tx" 4.183710360629959 + FENCE 4 5 15 + DEFCAL CZ 3 4: + FENCE 3 4 14 + SET-PHASE 3 "Transmon-3_flux_tx_b4" 0 + SET-PHASE 14 "Transmon-14_flux_tx_b" 0 + NONBLOCKING PULSE 3 "Transmon-3_flux_tx_b4" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.09648977820438134) + NONBLOCKING PULSE 14 "Transmon-14_flux_tx_b" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.044587720599283405) + SHIFT-PHASE 3 "Transmon-3_charge_tx" 4.014642793816454 + SHIFT-PHASE 4 "Transmon-4_charge_tx" 4.62241160330081 + FENCE 3 4 14 + DEFCAL ISWAP 4 1: + FENCE 4 1 + SWAP-PHASES 4 "Transmon-4_charge_tx" 1 "Transmon-1_charge_tx" + FENCE 1 4 12 + SET-PHASE 4 "Transmon-4_flux_tx_c0" 0 + SET-PHASE 12 "Transmon-12_flux_tx_b" 0 + NONBLOCKING PULSE 4 "Transmon-4_flux_tx_c0" erf_square(detuning: 0, duration: 9.600000000000001e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.1999790746312584) + NONBLOCKING PULSE 12 "Transmon-12_flux_tx_b" erf_square(detuning: 0, duration: 9.600000000000001e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.030756024611389165) + SHIFT-PHASE 1 "Transmon-1_charge_tx" 2.9089542675332494 + SHIFT-PHASE 4 "Transmon-4_charge_tx" 4.227476835608439 + FENCE 1 4 12 + DEFCAL ISWAP 2 1: + FENCE 2 1 + SWAP-PHASES 2 "Transmon-2_charge_tx" 1 "Transmon-1_charge_tx" + FENCE 1 2 10 + SET-PHASE 2 "Transmon-2_flux_tx_c0" 0 + SET-PHASE 10 "Transmon-10_flux_tx_c" 0 + NONBLOCKING PULSE 2 "Transmon-2_flux_tx_c0" erf_square(detuning: 0, duration: 9.2e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.17416181833420805) + NONBLOCKING PULSE 10 "Transmon-10_flux_tx_c" erf_square(detuning: 0, duration: 9.2e-8, pad_left: 8e-9, pad_right: 1.6e-8, phase: 0, risetime: 8e-9, scale: 0.045061767211637536) + SHIFT-PHASE 2 "Transmon-2_charge_tx" 0.855014035434708 + SHIFT-PHASE 1 "Transmon-1_charge_tx" 5.613210087120642 + FENCE 1 2 10 + DEFCAL CZ 2 5: + FENCE 2 5 13 + SET-PHASE 2 "Transmon-2_flux_tx_b0" 0 + SET-PHASE 13 "Transmon-13_flux_tx_c" 0 + NONBLOCKING PULSE 2 "Transmon-2_flux_tx_b0" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.1358371274462241) + NONBLOCKING PULSE 13 "Transmon-13_flux_tx_c" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.0390269261261847) + SHIFT-PHASE 2 "Transmon-2_charge_tx" 3.768990537566626 + SHIFT-PHASE 5 "Transmon-5_charge_tx" 3.0365394439550686 + FENCE 2 5 13 + DEFCAL RX(1.5707963267948966) 0: + FENCE 0 + NONBLOCKING PULSE 0 "Transmon-0_charge_tx" drag_gaussian(alpha: 0.13542738846114907, anh: -222600000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.47907538311271863, t0: 2e-8) + FENCE 0 + DEFCAL CZ 0 3: + FENCE 0 3 11 + SET-PHASE 0 "Transmon-0_flux_tx_b3" 0 + SET-PHASE 11 "Transmon-11_flux_tx_b" 0 + NONBLOCKING PULSE 0 "Transmon-0_flux_tx_b3" erf_square(detuning: 0, duration: 8.8e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.18223888045995248) + NONBLOCKING PULSE 11 "Transmon-11_flux_tx_b" erf_square(detuning: 0, duration: 8.8e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.03996313063453536) + SHIFT-PHASE 0 "Transmon-0_charge_tx" 2.0800631197652306 + SHIFT-PHASE 3 "Transmon-3_charge_tx" 4.191991209282252 + FENCE 0 3 11 + DEFCAL CZ 5 4: + FENCE 4 5 15 + SET-PHASE 5 "Transmon-5_flux_tx_b4" 0 + SET-PHASE 15 "Transmon-15_flux_tx_c" 0 + NONBLOCKING PULSE 5 "Transmon-5_flux_tx_b4" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.14966399310753775) + NONBLOCKING PULSE 15 "Transmon-15_flux_tx_c" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.04537887656706088) + SHIFT-PHASE 5 "Transmon-5_charge_tx" 1.431831310466891 + SHIFT-PHASE 4 "Transmon-4_charge_tx" 2.733409195243092 + FENCE 4 5 15 + DEFCAL CZ 2 1: + FENCE 1 2 10 + SET-PHASE 2 "Transmon-2_flux_tx_b0" 0 + SET-PHASE 10 "Transmon-10_flux_tx_c" 0 + NONBLOCKING PULSE 2 "Transmon-2_flux_tx_b0" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.11873924927771093) + NONBLOCKING PULSE 10 "Transmon-10_flux_tx_c" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.04431239611800164) + SHIFT-PHASE 2 "Transmon-2_charge_tx" 2.848733001435783 + SHIFT-PHASE 1 "Transmon-1_charge_tx" 3.8870744915475393 + FENCE 1 2 10 + DEFCAL CZ 7 6: + FENCE 19 6 7 + SET-PHASE 7 "Transmon-7_flux_tx_b4" 0 + SET-PHASE 19 "Transmon-19_flux_tx_c" 0 + NONBLOCKING PULSE 7 "Transmon-7_flux_tx_b4" erf_square(detuning: 0, duration: 1.0000000000000001e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.20638370124374747) + NONBLOCKING PULSE 19 "Transmon-19_flux_tx_c" erf_square(detuning: 0, duration: 1.0000000000000001e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.04091372108262148) + SHIFT-PHASE 7 "Transmon-7_charge_tx" 4.694142768750111 + SHIFT-PHASE 6 "Transmon-6_charge_tx" 3.9417414869450966 + FENCE 19 6 7 + DEFCAL CZ 5 8: + FENCE 8 18 5 + SET-PHASE 5 "Transmon-5_flux_tx_b4" 0 + SET-PHASE 18 "Transmon-18_flux_tx_c" 0 + NONBLOCKING PULSE 5 "Transmon-5_flux_tx_b4" erf_square(detuning: 0, duration: 1.2000000000000002e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.2581263902261661) + NONBLOCKING PULSE 18 "Transmon-18_flux_tx_c" erf_square(detuning: 0, duration: 1.2000000000000002e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.03448315443309899) + SHIFT-PHASE 5 "Transmon-5_charge_tx" 3.715210505404995 + SHIFT-PHASE 8 "Transmon-8_charge_tx" 3.465935172785198 + FENCE 8 18 5 + DEFCAL CZ 7 8: + FENCE 8 20 7 + SET-PHASE 7 "Transmon-7_flux_tx_b3" 0 + SET-PHASE 20 "Transmon-20_flux_tx_c" 0 + NONBLOCKING PULSE 7 "Transmon-7_flux_tx_b3" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.21402048288003675) + NONBLOCKING PULSE 20 "Transmon-20_flux_tx_c" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.037991855929264906) + SHIFT-PHASE 7 "Transmon-7_charge_tx" 0.8889210348039244 + SHIFT-PHASE 8 "Transmon-8_charge_tx" 4.241566596791783 + FENCE 8 20 7 + DEFCAL RX(1.5707963267948966) 3: + FENCE 3 + NONBLOCKING PULSE 3 "Transmon-3_charge_tx" drag_gaussian(alpha: 0.47696435679337607, anh: -219100000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.19750058901216602, t0: 2e-8) + FENCE 3 + DEFCAL ISWAP 3 0: + FENCE 3 0 + SWAP-PHASES 3 "Transmon-3_charge_tx" 0 "Transmon-0_charge_tx" + FENCE 0 11 3 + SET-PHASE 3 "Transmon-3_flux_tx_c0" 0 + SET-PHASE 11 "Transmon-11_flux_tx_b" 0 + NONBLOCKING PULSE 3 "Transmon-3_flux_tx_c0" erf_square(detuning: 0, duration: 7.6e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.24046653233447746) + NONBLOCKING PULSE 11 "Transmon-11_flux_tx_b" erf_square(detuning: 0, duration: 7.6e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.049446236869436985) + SHIFT-PHASE 0 "Transmon-0_charge_tx" 5.8273895197613905 + SHIFT-PHASE 3 "Transmon-3_charge_tx" 4.6271805494121265 + FENCE 0 11 3 + DEFCAL RX(1.5707963267948966) 1: + FENCE 1 + NONBLOCKING PULSE 1 "Transmon-1_charge_tx" drag_gaussian(alpha: -2.162882178363339, anh: -217900000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.3369878329332824, t0: 2e-8) + FENCE 1 + DEFCAL RX(3.141592653589793) 3: + FENCE 3 + NONBLOCKING PULSE 3 "Transmon-3_charge_tx" drag_gaussian(alpha: 0.47696435679337607, anh: -219100000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.3988164142921256, t0: 2e-8) + FENCE 3 + DEFCAL CZ 0 1: + FENCE 0 9 1 + SET-PHASE 0 "Transmon-0_flux_tx_b1" 0 + SET-PHASE 9 "Transmon-9_flux_tx" 0 + NONBLOCKING PULSE 0 "Transmon-0_flux_tx_b1" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.13844490786066607) + NONBLOCKING PULSE 9 "Transmon-9_flux_tx" erf_square(detuning: 0, duration: 1e-7, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.03650035161667822) + SHIFT-PHASE 0 "Transmon-0_charge_tx" 5.537887902714859 + SHIFT-PHASE 1 "Transmon-1_charge_tx" 0.49914593874859375 + FENCE 0 9 1 + DEFCAL RX(1.5707963267948966) 4: + FENCE 4 + NONBLOCKING PULSE 4 "Transmon-4_charge_tx" drag_gaussian(alpha: 0.2928482440908154, anh: -222400000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.35354372459127953, t0: 2e-8) + FENCE 4 + DEFCAL RX(3.141592653589793) 4: + FENCE 4 + NONBLOCKING PULSE 4 "Transmon-4_charge_tx" drag_gaussian(alpha: 0.2928482440908154, anh: -222400000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.7172545247480638, t0: 2e-8) + FENCE 4 + DEFCAL RX(1.5707963267948966) 5: + FENCE 5 + NONBLOCKING PULSE 5 "Transmon-5_charge_tx" drag_gaussian(alpha: 0.039350003132839505, anh: -215600000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.3740789207408433, t0: 2e-8) + FENCE 5 + DEFCAL ISWAP 4 3: + FENCE 4 3 + SWAP-PHASES 4 "Transmon-4_charge_tx" 3 "Transmon-3_charge_tx" + FENCE 3 4 14 + SET-PHASE 4 "Transmon-4_flux_tx_c2" 0 + SET-PHASE 14 "Transmon-14_flux_tx_b" 0 + NONBLOCKING PULSE 4 "Transmon-4_flux_tx_c2" erf_square(detuning: 0, duration: 7.200000000000001e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.26298966682216773) + NONBLOCKING PULSE 14 "Transmon-14_flux_tx_b" erf_square(detuning: 0, duration: 7.200000000000001e-8, pad_left: 8e-9, pad_right: 8e-9, phase: 0, risetime: 8e-9, scale: 0.05426086653833623) + SHIFT-PHASE 3 "Transmon-3_charge_tx" 0.33753546243154864 + SHIFT-PHASE 4 "Transmon-4_charge_tx" 5.623865063400751 + FENCE 3 4 14 + DEFCAL RX(3.141592653589793) 8: + FENCE 8 + NONBLOCKING PULSE 8 "Transmon-8_charge_tx" drag_gaussian(alpha: 0.7782981501706374, anh: -226500000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.708212958858981, t0: 2e-8) + FENCE 8 + DEFCAL RX(1.5707963267948966) 8: + FENCE 8 + NONBLOCKING PULSE 8 "Transmon-8_charge_tx" drag_gaussian(alpha: 0.7782981501706374, anh: -226500000, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.3502477178696265, t0: 2e-8) + FENCE 8 + DEFCAL RX(3.141592653589793) 6: + FENCE 6 + NONBLOCKING PULSE 6 "Transmon-6_charge_tx" drag_gaussian(alpha: -2.155859812397402, anh: -226800000.00000003, detuning: 0, duration: 4e-8, fwhm: 2e-8, phase: 0, scale: 0.5742201602335346, t0: 2e-8) + FENCE 6 + DEFCAL RZ(%theta) 2: + SHIFT-PHASE 2 "Transmon-2_charge_tx" -1*%theta + DEFCAL RZ(%theta) 0: + SHIFT-PHASE 0 "Transmon-0_charge_tx" -1*%theta + DEFCAL RZ(%theta) 6: + SHIFT-PHASE 6 "Transmon-6_charge_tx" -1*%theta + DEFCAL RZ(%theta) 1: + SHIFT-PHASE 1 "Transmon-1_charge_tx" -1*%theta + DEFCAL RZ(%theta) 5: + SHIFT-PHASE 5 "Transmon-5_charge_tx" -1*%theta + DEFCAL RZ(%theta) 7: + SHIFT-PHASE 7 "Transmon-7_charge_tx" -1*%theta + DEFCAL RZ(%theta) 3: + SHIFT-PHASE 3 "Transmon-3_charge_tx" -1*%theta + DEFCAL RZ(%theta) 4: + SHIFT-PHASE 4 "Transmon-4_charge_tx" -1*%theta + DEFCAL RZ(%theta) 8: + SHIFT-PHASE 8 "Transmon-8_charge_tx" -1*%theta + DEFCAL RX(-3.141592653589793) 2: + RZ(3.141592653589793) 2 + RX(pi) 2 + RZ(-3.141592653589793) 2 + DEFCAL RX(-3.141592653589793) 0: + RZ(3.141592653589793) 0 + RX(pi) 0 + RZ(-3.141592653589793) 0 + DEFCAL RX(-1.5707963267948966) 6: + RZ(3.141592653589793) 6 + RX(pi/2) 6 + RZ(-3.141592653589793) 6 + DEFCAL RX(-3.141592653589793) 1: + RZ(3.141592653589793) 1 + RX(pi) 1 + RZ(-3.141592653589793) 1 + DEFCAL RX(-3.141592653589793) 5: + RZ(3.141592653589793) 5 + RX(pi) 5 + RZ(-3.141592653589793) 5 + DEFCAL RX(-3.141592653589793) 7: + RZ(3.141592653589793) 7 + RX(pi) 7 + RZ(-3.141592653589793) 7 + DEFCAL RX(-1.5707963267948966) 7: + RZ(3.141592653589793) 7 + RX(pi/2) 7 + RZ(-3.141592653589793) 7 + DEFCAL RX(-1.5707963267948966) 2: + RZ(3.141592653589793) 2 + RX(pi/2) 2 + RZ(-3.141592653589793) 2 + DEFCAL RX(-1.5707963267948966) 0: + RZ(3.141592653589793) 0 + RX(pi/2) 0 + RZ(-3.141592653589793) 0 + DEFCAL RX(-1.5707963267948966) 3: + RZ(3.141592653589793) 3 + RX(pi/2) 3 + RZ(-3.141592653589793) 3 + DEFCAL RX(-1.5707963267948966) 1: + RZ(3.141592653589793) 1 + RX(pi/2) 1 + RZ(-3.141592653589793) 1 + DEFCAL RX(-3.141592653589793) 3: + RZ(3.141592653589793) 3 + RX(pi) 3 + RZ(-3.141592653589793) 3 + DEFCAL RX(-1.5707963267948966) 4: + RZ(3.141592653589793) 4 + RX(pi/2) 4 + RZ(-3.141592653589793) 4 + DEFCAL RX(-3.141592653589793) 4: + RZ(3.141592653589793) 4 + RX(pi) 4 + RZ(-3.141592653589793) 4 + DEFCAL RX(-1.5707963267948966) 5: + RZ(3.141592653589793) 5 + RX(pi/2) 5 + RZ(-3.141592653589793) 5 + DEFCAL RX(-3.141592653589793) 8: + RZ(3.141592653589793) 8 + RX(pi) 8 + RZ(-3.141592653589793) 8 + DEFCAL RX(-1.5707963267948966) 8: + RZ(3.141592653589793) 8 + RX(pi/2) 8 + RZ(-3.141592653589793) 8 + DEFCAL RX(-3.141592653589793) 6: + RZ(3.141592653589793) 6 + RX(pi) 6 + RZ(-3.141592653589793) 6 + DEFCAL ISWAP 7 8: + ISWAP 8 7 + DEFCAL ISWAP 7 6: + ISWAP 6 7 + DEFCAL ISWAP 3 6: + ISWAP 6 3 + DEFCAL ISWAP 5 2: + ISWAP 2 5 + DEFCAL CZ 6 3: + CZ 3 6 + DEFCAL CZ 4 1: + CZ 1 4 + DEFCAL CZ 4 7: + CZ 7 4 + DEFCAL ISWAP 0 1: + ISWAP 1 0 + DEFCAL ISWAP 7 4: + ISWAP 4 7 + DEFCAL ISWAP 5 8: + ISWAP 8 5 + DEFCAL ISWAP 5 4: + ISWAP 4 5 + DEFCAL CZ 4 3: + CZ 3 4 + DEFCAL ISWAP 1 4: + ISWAP 4 1 + DEFCAL ISWAP 1 2: + ISWAP 2 1 + DEFCAL CZ 5 2: + CZ 2 5 + DEFCAL CZ 3 0: + CZ 0 3 + DEFCAL CZ 4 5: + CZ 5 4 + DEFCAL CZ 1 2: + CZ 2 1 + DEFCAL CZ 6 7: + CZ 7 6 + DEFCAL CZ 8 5: + CZ 5 8 + DEFCAL CZ 8 7: + CZ 7 8 + DEFCAL ISWAP 0 3: + ISWAP 3 0 + DEFCAL CZ 1 0: + CZ 0 1 + DEFCAL ISWAP 3 4: + ISWAP 4 3 + DEFCAL MEASURE 6 addr: + FENCE 6 + DECLARE q6_unclassified REAL[2] + NONBLOCKING PULSE 6 "Transmon-6_readout_tx" flat(detuning: 0, duration: 1.956e-6, iq: 1, phase: 0, scale: 0.014307646903536569) + NONBLOCKING CAPTURE 6 "Transmon-6_readout_rx" flat(detuning: 0, duration: 1.956e-6, iq: 1, phase: 0.6988950478059351, scale: 1) q6_unclassified[0] + PRAGMA FILTER-NODE q6_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q6_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q6_unclassified "q6_unclassified" + PRAGMA FILTER-NODE q6_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [1.0000000000000002, 0.0], 'threshold': -0.15356965733101743}, 'source': 'q6_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q6_classified "addr" + FENCE 6 + + DEFCAL MEASURE 5 addr: + FENCE 5 + DECLARE q5_unclassified REAL[2] + NONBLOCKING PULSE 5 "Transmon-5_readout_tx" flat(detuning: 0, duration: 1.924e-6, iq: 1, phase: 0, scale: 0.047211208346044496) + NONBLOCKING CAPTURE 5 "Transmon-5_readout_rx" flat(detuning: 0, duration: 1.924e-6, iq: 1, phase: 0.2732322355761583, scale: 1) q5_unclassified[0] + PRAGMA FILTER-NODE q5_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q5_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q5_unclassified "q5_unclassified" + PRAGMA FILTER-NODE q5_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [1.0, 0.0], 'threshold': -0.10850691295761304}, 'source': 'q5_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q5_classified "addr" + FENCE 5 + + DEFCAL MEASURE 7 addr: + FENCE 7 + DECLARE q7_unclassified REAL[2] + NONBLOCKING PULSE 7 "Transmon-7_readout_tx" flat(detuning: 0, duration: 1.3240000000000002e-6, iq: 1, phase: 0, scale: 0.09296296162036309) + NONBLOCKING CAPTURE 7 "Transmon-7_readout_rx" flat(detuning: 0, duration: 1.3240000000000002e-6, iq: 1, phase: 0.3216883807851195, scale: 1) q7_unclassified[0] + PRAGMA FILTER-NODE q7_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q7_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q7_unclassified "q7_unclassified" + PRAGMA FILTER-NODE q7_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [1.0, 0.0], 'threshold': 0.5303443155086909}, 'source': 'q7_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q7_classified "addr" + FENCE 7 + + DEFCAL MEASURE 4 addr: + FENCE 4 + DECLARE q4_unclassified REAL[2] + NONBLOCKING PULSE 4 "Transmon-4_readout_tx" flat(detuning: 0, duration: 1.2680000000000002e-6, iq: 1, phase: 0, scale: 0.05530407739305864) + NONBLOCKING CAPTURE 4 "Transmon-4_readout_rx" flat(detuning: 0, duration: 1.2680000000000002e-6, iq: 1, phase: 0.1200124605067616, scale: 1) q4_unclassified[0] + PRAGMA FILTER-NODE q4_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q4_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q4_unclassified "q4_unclassified" + PRAGMA FILTER-NODE q4_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [0.9999999999999999, -3.469446951953614e-18], 'threshold': -0.08435722091118324}, 'source': 'q4_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q4_classified "addr" + FENCE 4 + + DEFCAL MEASURE 3 addr: + FENCE 3 + DECLARE q3_unclassified REAL[2] + NONBLOCKING PULSE 3 "Transmon-3_readout_tx" flat(detuning: 0, duration: 1.72e-6, iq: 1, phase: 0, scale: 0.011216900672579804) + NONBLOCKING CAPTURE 3 "Transmon-3_readout_rx" flat(detuning: 0, duration: 1.72e-6, iq: 1, phase: 0.43678830240167044, scale: 1) q3_unclassified[0] + PRAGMA FILTER-NODE q3_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q3_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q3_unclassified "q3_unclassified" + PRAGMA FILTER-NODE q3_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [1.0, 0.0], 'threshold': -0.24930080251066203}, 'source': 'q3_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q3_classified "addr" + FENCE 3 + + DEFCAL MEASURE 8 addr: + FENCE 8 + DECLARE q8_unclassified REAL[2] + NONBLOCKING PULSE 8 "Transmon-8_readout_tx" flat(detuning: 0, duration: 1.912e-6, iq: 1, phase: 0, scale: 0.04642767515136054) + NONBLOCKING CAPTURE 8 "Transmon-8_readout_rx" flat(detuning: 0, duration: 1.912e-6, iq: 1, phase: 0.494699205440148, scale: 1) q8_unclassified[0] + PRAGMA FILTER-NODE q8_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q8_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q8_unclassified "q8_unclassified" + PRAGMA FILTER-NODE q8_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [1.0, 0.0], 'threshold': -0.16648016144844632}, 'source': 'q8_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q8_classified "addr" + FENCE 8 + + DEFCAL MEASURE 2 addr: + FENCE 2 + DECLARE q2_unclassified REAL[2] + NONBLOCKING PULSE 2 "Transmon-2_readout_tx" flat(detuning: 0, duration: 1.956e-6, iq: 1, phase: 0, scale: 0.05153098393377358) + NONBLOCKING CAPTURE 2 "Transmon-2_readout_rx" flat(detuning: 0, duration: 1.956e-6, iq: 1, phase: 0.17920767432074045, scale: 1) q2_unclassified[0] + PRAGMA FILTER-NODE q2_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q2_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q2_unclassified "q2_unclassified" + PRAGMA FILTER-NODE q2_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [1.0, 0.0], 'threshold': 0.45366912449466745}, 'source': 'q2_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q2_classified "addr" + FENCE 2 + + DEFCAL MEASURE 0 addr: + FENCE 0 + DECLARE q0_unclassified REAL[2] + NONBLOCKING PULSE 0 "Transmon-0_readout_tx" flat(detuning: 0, duration: 1.916e-6, iq: 1, phase: 0, scale: 0.02461606027611915) + NONBLOCKING CAPTURE 0 "Transmon-0_readout_rx" flat(detuning: 0, duration: 1.916e-6, iq: 1, phase: 0.15779206199849813, scale: 1) q0_unclassified[0] + PRAGMA FILTER-NODE q0_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q0_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q0_unclassified "q0_unclassified" + PRAGMA FILTER-NODE q0_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [1.0, -6.938893903907228e-18], 'threshold': 0.13715678893970584}, 'source': 'q0_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q0_classified "addr" + FENCE 0 + + DEFCAL MEASURE 1 addr: + FENCE 1 + DECLARE q1_unclassified REAL[2] + NONBLOCKING PULSE 1 "Transmon-1_readout_tx" flat(detuning: 0, duration: 1.148e-6, iq: 1, phase: 0, scale: 0.05002162543740629) + NONBLOCKING CAPTURE 1 "Transmon-1_readout_rx" flat(detuning: 0, duration: 1.148e-6, iq: 1, phase: 0.8781069639131796, scale: 1) q1_unclassified[0] + PRAGMA FILTER-NODE q1_unclassified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.io', 'filter_type': 'DataBuffer', 'params': {}, 'source': 'q1_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q1_unclassified "q1_unclassified" + PRAGMA FILTER-NODE q1_classified "{'_type': 'FilterNode', 'module': 'lodgepole.filters.classifiers', 'filter_type': 'SingleQLinear', 'params': {'a': [1.0, -1.3877787807814457e-17], 'threshold': 0.4542844042977344}, 'source': 'q1_ro_rx/filter', 'publish': true}" + PRAGMA LOAD-MEMORY q1_classified "addr" + FENCE 1 + + + ''' +# --- +# name: TestInstructionIteration.test_large_program + ''' + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + CNOT 1 3 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + RX(3.882403181997303) 8 + CNOT 0 3 + RY(4.5577145626046) 5 + CNOT 3 6 + CNOT 3 6 + CNOT 5 7 + CNOT 2 4 + RX(4.10899233195489) 2 + RZ(1.8339690381798408) 6 + RY(5.89415287392258) 3 + RZ(4.380310025182133) 2 + CNOT 1 6 + RZ(4.5068641836677985) 0 + RZ(1.1369350017910809) 7 + RX(5.299221523914757) 7 + CNOT 5 6 + RY(1.7759903888578796) 2 + RZ(1.6723803444036598) 4 + CNOT 5 8 + RZ(4.81533948533556) 1 + CNOT 0 8 + RZ(4.091531092109592) 0 + CNOT 0 2 + CNOT 5 7 + RY(1.7617455482463211) 2 + RX(4.341787227340024) 1 + RY(6.03481174851813) 3 + CNOT 2 7 + CNOT 1 3 + + ''' +# --- diff --git a/test/bench/test_program.py b/test/bench/test_program.py index 0fc3d51c8..8ffe4f1f0 100644 --- a/test/bench/test_program.py +++ b/test/bench/test_program.py @@ -1,6 +1,7 @@ import pytest +from pyquil._core import program -from pyquil import Program +Program = program.Program @pytest.fixture @@ -20,8 +21,10 @@ def iterate(self, program: Program): for instruction in program: continue - def test_calibration_program(self, benchmark, mock_calibration_program: Program): + def test_calibration_program(self, benchmark, mock_calibration_program: Program, snapshot): benchmark(self.iterate, mock_calibration_program) + assert mock_calibration_program.out() == snapshot - def test_large_program(self, benchmark, over_9000_line_program: Program): + def test_large_program(self, benchmark, over_9000_line_program: Program, snapshot): benchmark(self.iterate, over_9000_line_program) + assert over_9000_line_program.out() == snapshot From 77d115792e9d4e62cc08c19260cd120eb4f5f257 Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Mon, 25 Mar 2024 12:55:52 -0700 Subject: [PATCH 05/23] fix typo in docstring Co-authored-by: Michael Bryant --- rust/src/conversion.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/src/conversion.rs b/rust/src/conversion.rs index 32ef9ddf0..b4e68a079 100644 --- a/rust/src/conversion.rs +++ b/rust/src/conversion.rs @@ -18,7 +18,7 @@ use pyo3::{ }; use quil_rs::quil::Quil; -/// Converts a pyQuil's Tuple[int, str] to a quil-rs vector of offsets. +/// Converts a pyQuil's `list[tuple[int, str]]` to a quil-rs vector of offsets. pub(crate) fn py_to_offsets( value: &Bound<'_, PyAny>, ) -> PyResult> { From 3e952986d01ed7d787dcff428edef9c8f258a4b0 Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Mon, 25 Mar 2024 13:39:30 -0700 Subject: [PATCH 06/23] update bench fixture, re-enable pyquil DefCalibration --- src/pyquil/quilbase.py | 131 ++++++++++++++--------------- test/bench/fixtures/over-9000.quil | 8 +- 2 files changed, 68 insertions(+), 71 deletions(-) diff --git a/src/pyquil/quilbase.py b/src/pyquil/quilbase.py index 31410dcd6..c89625439 100644 --- a/src/pyquil/quilbase.py +++ b/src/pyquil/quilbase.py @@ -67,8 +67,6 @@ import quil.expression as quil_rs_expr import quil.instructions as quil_rs -from pyquil._instruction import DefCalibration - class _InstructionMeta(abc.ABCMeta): """A metaclass that allows us to group all instruction types from quil-rs and pyQuil as an `AbstractInstruction`. @@ -2504,71 +2502,70 @@ def __deepcopy__(self, memo: Dict) -> "DefCircuit": return DefCircuit._from_rs_circuit_definition(super().__deepcopy__(memo)) -# class DefCalibration(quil_rs.Calibration, AbstractInstruction): -# def __new__( -# cls, -# name: str, -# parameters: Sequence[ParameterDesignator], -# qubits: Sequence[Union[Qubit, FormalArgument]], -# instrs: Sequence[AbstractInstruction], -# modifiers: Optional[List[quil_rs.GateModifier]] = None, -# ) -> Self: -# return super().__new__( -# cls, -# name, -# _convert_to_rs_expressions(parameters), -# _convert_to_rs_qubits(qubits), -# _convert_to_rs_instructions(instrs), -# modifiers or [], -# ) -# -# @classmethod -# def _from_rs_calibration(cls, calibration: quil_rs.Calibration) -> "DefCalibration": -# return super().__new__( -# cls, -# calibration.name, -# calibration.parameters, -# calibration.qubits, -# calibration.instructions, -# calibration.modifiers, -# ) -# -# @property # type: ignore[override] -# def parameters(self) -> Sequence[ParameterDesignator]: -# return _convert_to_py_expressions(super().parameters) -# -# @parameters.setter -# def parameters(self, parameters: Sequence[ParameterDesignator]) -> None: -# quil_rs.Calibration.parameters.__set__(self, _convert_to_rs_expressions(parameters)) # type: ignore[attr-defined] # noqa -# -# @property # type: ignore[override] -# def qubits(self) -> List[QubitDesignator]: -# return _convert_to_py_qubits(super().qubits) -# -# @qubits.setter -# def qubits(self, qubits: Sequence[QubitDesignator]) -> None: -# quil_rs.Calibration.qubits.__set__(self, _convert_to_rs_qubits(qubits)) # type: ignore[attr-defined] -# -# @property -# def instrs(self) -> List[AbstractInstruction]: -# return _convert_to_py_instructions(super().instructions) -# -# @instrs.setter -# def instrs(self, instrs: Sequence[AbstractInstruction]) -> None: -# quil_rs.Calibration.instructions.__set__(self, _convert_to_rs_instructions(instrs)) # type: ignore[attr-defined] # noqa -# -# def out(self) -> str: -# return super().to_quil() -# -# def __str__(self) -> str: -# return super().to_quil_or_debug() -# -# def __copy__(self) -> Self: -# return self -# -# def __deepcopy__(self, memo: Dict) -> "DefCalibration": -# return DefCalibration._from_rs_calibration(super().__deepcopy__(memo)) -# +class DefCalibration(quil_rs.Calibration, AbstractInstruction): + def __new__( + cls, + name: str, + parameters: Sequence[ParameterDesignator], + qubits: Sequence[Union[Qubit, FormalArgument]], + instrs: Sequence[AbstractInstruction], + modifiers: Optional[List[quil_rs.GateModifier]] = None, + ) -> Self: + return super().__new__( + cls, + name, + _convert_to_rs_expressions(parameters), + _convert_to_rs_qubits(qubits), + _convert_to_rs_instructions(instrs), + modifiers or [], + ) + + @classmethod + def _from_rs_calibration(cls, calibration: quil_rs.Calibration) -> "DefCalibration": + return super().__new__( + cls, + calibration.name, + calibration.parameters, + calibration.qubits, + calibration.instructions, + calibration.modifiers, + ) + + @property # type: ignore[override] + def parameters(self) -> Sequence[ParameterDesignator]: + return _convert_to_py_expressions(super().parameters) + + @parameters.setter + def parameters(self, parameters: Sequence[ParameterDesignator]) -> None: + quil_rs.Calibration.parameters.__set__(self, _convert_to_rs_expressions(parameters)) # type: ignore[attr-defined] # noqa + + @property # type: ignore[override] + def qubits(self) -> List[QubitDesignator]: + return _convert_to_py_qubits(super().qubits) + + @qubits.setter + def qubits(self, qubits: Sequence[QubitDesignator]) -> None: + quil_rs.Calibration.qubits.__set__(self, _convert_to_rs_qubits(qubits)) # type: ignore[attr-defined] + + @property + def instrs(self) -> List[AbstractInstruction]: + return _convert_to_py_instructions(super().instructions) + + @instrs.setter + def instrs(self, instrs: Sequence[AbstractInstruction]) -> None: + quil_rs.Calibration.instructions.__set__(self, _convert_to_rs_instructions(instrs)) # type: ignore[attr-defined] # noqa + + def out(self) -> str: + return super().to_quil() + + def __str__(self) -> str: + return super().to_quil_or_debug() + + def __copy__(self) -> Self: + return self + + def __deepcopy__(self, memo: Dict) -> "DefCalibration": + return DefCalibration._from_rs_calibration(super().__deepcopy__(memo)) class DefMeasureCalibration(quil_rs.MeasureCalibrationDefinition, AbstractInstruction): diff --git a/test/bench/fixtures/over-9000.quil b/test/bench/fixtures/over-9000.quil index 613ec0e26..922da0d36 100644 --- a/test/bench/fixtures/over-9000.quil +++ b/test/bench/fixtures/over-9000.quil @@ -1422,7 +1422,6 @@ RZ(1.6723803444036598) 4 CNOT 5 8 RZ(4.81533948533556) 1 CNOT 0 8 - CNOT 1 3 RZ(4.091531092109592) 0 CNOT 0 2 @@ -3321,7 +3320,6 @@ RZ(1.6723803444036598) 4 CNOT 5 8 RZ(4.81533948533556) 1 CNOT 0 8 - CNOT 1 3 RZ(4.091531092109592) 0 CNOT 0 2 @@ -5221,7 +5219,6 @@ RZ(1.6723803444036598) 4 CNOT 5 8 RZ(4.81533948533556) 1 CNOT 0 8 - CNOT 1 3 RZ(4.091531092109592) 0 CNOT 0 2 @@ -7120,7 +7117,6 @@ RZ(1.6723803444036598) 4 CNOT 5 8 RZ(4.81533948533556) 1 CNOT 0 8 - CNOT 1 3 RZ(4.091531092109592) 0 CNOT 0 2 @@ -8999,3 +8995,7 @@ RX(4.341787227340024) 1 RY(6.03481174851813) 3 CNOT 2 7 CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +CNOT 1 3 +RY(6.03481174851813) 3 From 6bff4f946cfca803f6a07fa7ce3b727a1d0e3262 Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Mon, 25 Mar 2024 13:51:45 -0700 Subject: [PATCH 07/23] fix expression number conversion, reduce boilerplate in calibration impls --- rust/src/instruction/quilt.rs | 199 +++++++++++++--------------------- 1 file changed, 73 insertions(+), 126 deletions(-) diff --git a/rust/src/instruction/quilt.rs b/rust/src/instruction/quilt.rs index 3b7c7f268..f11aacbeb 100644 --- a/rust/src/instruction/quilt.rs +++ b/rust/src/instruction/quilt.rs @@ -1,12 +1,10 @@ //! [TODO:description] -use pyo3::{ - exceptions::PyValueError, prelude::*, pyclass_init::PyObjectInit, type_object::PyTypeInfo, -}; +use pyo3::{exceptions::PyValueError, prelude::*}; use crate::{ expression::{self, Expression, MemoryReference}, - impl_from_quil_rs, + extract_instruction_as, extract_instruction_as_mut, impl_from_quil_rs, instruction::Instruction, primitive::QubitDesignator, }; @@ -69,19 +67,7 @@ impl From for quil_rs::expression::Expression { impl From for Parameter { fn from(value: quil_rs::expression::Expression) -> Self { match value { - quil_rs::expression::Expression::Number(number) => { - if number.im == 0.0 { - if number.re as i64 as f64 == number.re { - Parameter::I64(number.re as i64) - } else if number.re as u64 as f64 == number.re { - Parameter::U64(number.re as u64) - } else { - Parameter::F64(number.re) - } - } else { - Parameter::Complex(number) - } - } + quil_rs::expression::Expression::Number(number) => Parameter::Complex(number), quil_rs::expression::Expression::Address(address) => { Parameter::MemoryReference(address.into()) } @@ -137,94 +123,71 @@ impl DefCalibration { } #[getter] - fn parameters(self_: PyRef<'_, Self>, py: Python<'_>) -> Vec { + fn parameters(self_: PyRef<'_, Self>, py: Python<'_>) -> PyResult> { let instruction = self_.into_super(); - if let quil_rs::instruction::Instruction::CalibrationDefinition(calibration) = - &(*instruction).inner - { - calibration - .parameters - .iter() - .cloned() - .map(|p| Parameter::from(p).to_object(py)) - .collect() - } else { - unreachable!() - } + let calibration = extract_instruction_as!(instruction, CalibrationDefinition)?; + Ok(calibration + .parameters + .iter() + .cloned() + .map(|p| Parameter::from(p).to_object(py)) + .collect()) } - fn set_parameters(self_: PyRefMut<'_, Self>, parameters: Vec) { + fn set_parameters(self_: PyRefMut<'_, Self>, parameters: Vec) -> PyResult<()> { let mut instruction = self_.into_super(); - if let quil_rs::instruction::Instruction::CalibrationDefinition(calibration) = - &mut instruction.inner - { - calibration.parameters = parameters - .into_iter() - .map(quil_rs::expression::Expression::from) - .collect() - } + let calibration = extract_instruction_as_mut!(instruction, CalibrationDefinition)?; + calibration.parameters = parameters + .into_iter() + .map(quil_rs::expression::Expression::from) + .collect(); + Ok(()) } #[getter] - fn qubits(self_: PyRef<'_, Self>, py: Python) -> Vec { + fn qubits(self_: PyRef<'_, Self>, py: Python) -> PyResult> { let instruction = self_.into_super(); - if let quil_rs::instruction::Instruction::CalibrationDefinition(calibration) = - &(*instruction).inner - { - calibration - .qubits - .iter() - .cloned() - .map(|p| QubitDesignator::from(p).to_object(py)) - .collect() - } else { - unreachable!() - } + let calibration = extract_instruction_as!(instruction, CalibrationDefinition)?; + Ok(calibration + .qubits + .iter() + .cloned() + .map(|p| QubitDesignator::from(p).to_object(py)) + .collect()) } #[setter] - fn set_qubits(self_: PyRefMut<'_, Self>, qubits: Vec) { + fn set_qubits(self_: PyRefMut<'_, Self>, qubits: Vec) -> PyResult<()> { let mut instruction = self_.into_super(); - if let quil_rs::instruction::Instruction::CalibrationDefinition(calibration) = - &mut instruction.inner - { - calibration.qubits = qubits - .into_iter() - .map(quil_rs::instruction::Qubit::from) - .collect() - } + let calibration = extract_instruction_as_mut!(instruction, CalibrationDefinition)?; + calibration.qubits = qubits + .into_iter() + .map(quil_rs::instruction::Qubit::from) + .collect(); + Ok(()) } #[getter] - fn instrs(self_: PyRef<'_, Self>, py: Python) -> Vec { + fn instrs(self_: PyRef<'_, Self>, py: Python) -> PyResult> { let instruction = self_.into_super(); - if let quil_rs::instruction::Instruction::CalibrationDefinition(calibration) = - &(*instruction).inner - { - calibration - .instructions - .iter() - .cloned() - .map(|p| Instruction::from(p).into_py(py)) - .collect() - } else { - unreachable!() - } + let calibration = extract_instruction_as!(instruction, CalibrationDefinition)?; + Ok(calibration + .instructions + .iter() + .cloned() + .map(|p| Instruction::from(p).into_py(py)) + .collect()) } #[setter] - fn set_instrs(self_: PyRefMut<'_, Self>, instructions: Vec) { + fn set_instrs(self_: PyRefMut<'_, Self>, instructions: Vec) -> PyResult<()> { let mut instruction = self_.into_super(); - if let quil_rs::instruction::Instruction::CalibrationDefinition(calibration) = - &mut instruction.inner - { - calibration.instructions = instructions - .into_iter() - .map(quil_rs::instruction::Instruction::from) - .collect() - } else { - unreachable!() - } + let calibration = extract_instruction_as_mut!(instruction, CalibrationDefinition)?; + calibration.instructions = instructions + .into_iter() + .map(quil_rs::instruction::Instruction::from) + .collect(); + Ok(()) } } @@ -264,59 +227,43 @@ impl DefMeasureCalibration { } #[getter] - fn qubit(self_: PyRef<'_, Self>, py: Python) -> Option { + fn qubit(self_: PyRef<'_, Self>, py: Python) -> PyResult> { let instruction = self_.into_super(); - if let quil_rs::instruction::Instruction::MeasureCalibrationDefinition(calibration) = - &instruction.inner - { - calibration - .qubit - .clone() - .map(|q| QubitDesignator::from(q).to_object(py)) - } else { - unreachable!() - } + let calibration = extract_instruction_as!(instruction, MeasureCalibrationDefinition)?; + Ok(calibration + .qubit + .clone() + .map(|q| QubitDesignator::from(q).to_object(py))) } #[setter] - fn set_qubit(self_: PyRefMut<'_, Self>, qubit: Option) { + fn set_qubit(self_: PyRefMut<'_, Self>, qubit: Option) -> PyResult<()> { let mut instruction = self_.into_super(); - if let quil_rs::instruction::Instruction::MeasureCalibrationDefinition(calibration) = - &mut instruction.inner - { - calibration.qubit = qubit.map(quil_rs::instruction::Qubit::from) - } + let calibration = extract_instruction_as_mut!(instruction, MeasureCalibrationDefinition)?; + calibration.qubit = qubit.map(quil_rs::instruction::Qubit::from); + Ok(()) } #[getter] - fn instrs(self_: PyRef<'_, Self>, py: Python<'_>) -> Vec { + fn instrs(self_: PyRef<'_, Self>, py: Python<'_>) -> PyResult> { let instruction = self_.into_super(); - if let quil_rs::instruction::Instruction::MeasureCalibrationDefinition(calibration) = - &(*instruction).inner - { - calibration - .instructions - .iter() - .cloned() - .map(|p| Instruction::from(p).into_py(py)) - .collect() - } else { - unreachable!() - } + let calibration = extract_instruction_as!(instruction, MeasureCalibrationDefinition)?; + Ok(calibration + .instructions + .iter() + .cloned() + .map(|p| Instruction::from(p).into_py(py)) + .collect()) } #[setter] - fn set_instrs(self_: PyRefMut<'_, Self>, instructions: Vec) { + fn set_instrs(self_: PyRefMut<'_, Self>, instructions: Vec) -> PyResult<()> { let mut instruction = self_.into_super(); - if let quil_rs::instruction::Instruction::MeasureCalibrationDefinition(calibration) = - &mut instruction.inner - { - calibration.instructions = instructions - .into_iter() - .map(quil_rs::instruction::Instruction::from) - .collect() - } else { - unreachable!() - } + let calibration = extract_instruction_as_mut!(instruction, MeasureCalibrationDefinition)?; + calibration.instructions = instructions + .into_iter() + .map(quil_rs::instruction::Instruction::from) + .collect(); + Ok(()) } } From 2c8c8ea6d8a3812a2a733add11d9f8e1c2caee56 Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Mon, 25 Mar 2024 13:53:21 -0700 Subject: [PATCH 08/23] remove grpc-web ref --- pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c23d339a3..d8c68914e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -83,7 +83,6 @@ maturin = "^1.5.0" [tool.poetry.extras] latex = ["ipython"] docs = ["Sphinx", "sphinx-rtd-theme", "nbsphinx", "recommonmark", "pandoc", "matplotlib", "seaborn", "toml"] -grpc-web = ["qcs-sdk-python-grpc-web"] [tool.poetry.group.dev.dependencies] setuptools = {version = "^69.0.2", python = ">=3.12"} From 3294a3cf3cd783c2bbb7c30f9b9e3525dc86eeb6 Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Mon, 25 Mar 2024 13:57:00 -0700 Subject: [PATCH 09/23] remove unused imports, apply cleanup to declaration --- rust/src/instruction/declaration.rs | 15 ++++++++++----- rust/src/program.rs | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/rust/src/instruction/declaration.rs b/rust/src/instruction/declaration.rs index af99a2afb..4aeae1f05 100644 --- a/rust/src/instruction/declaration.rs +++ b/rust/src/instruction/declaration.rs @@ -75,7 +75,10 @@ impl Declare { fn shared_region(self_: PyRef<'_, Self>) -> PyResult> { let instruction = self_.into_super(); let declaration = extract_instruction_as!(instruction, Declaration)?; - Ok(declaration.sharing.clone().map(|sharing| sharing.name)) + Ok(declaration + .sharing + .as_ref() + .map(|sharing| sharing.name.clone())) } #[setter] @@ -110,9 +113,8 @@ impl Declare { let mut instruction = self_.into_super(); let offsets = conversion::py_to_offsets(&offsets)?; let declaration = extract_instruction_as_mut!(instruction, Declaration)?; - match declaration.sharing { - None => {} - Some(ref mut sharing) => sharing.offsets = offsets, + if let Some(ref mut sharing) = declaration.sharing { + sharing.offsets = offsets; } Ok(()) } @@ -130,7 +132,10 @@ impl Declare { dict.set_item("memory_size", declaration.size.length)?; dict.set_item( "shared_region", - declaration.sharing.clone().map(|sharing| sharing.name), + declaration + .sharing + .as_ref() + .map(|sharing| sharing.name.clone()), )?; dict.set_item( "offsets", diff --git a/rust/src/program.rs b/rust/src/program.rs index ab56f2017..9da8a9da4 100644 --- a/rust/src/program.rs +++ b/rust/src/program.rs @@ -1,4 +1,4 @@ -use std::{str::FromStr, sync::Arc}; +use std::str::FromStr; use indexmap::IndexMap; use pyo3::{exceptions::PyValueError, prelude::*}; From 60a97f1889d0f8e7a2c1aecf0bf3299a676c9bfa Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Mon, 25 Mar 2024 13:59:05 -0700 Subject: [PATCH 10/23] add reversed From so enums dont drift --- rust/src/instruction/gate.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/rust/src/instruction/gate.rs b/rust/src/instruction/gate.rs index aed680c38..93c9bcdf3 100644 --- a/rust/src/instruction/gate.rs +++ b/rust/src/instruction/gate.rs @@ -17,3 +17,13 @@ impl From for quil_rs::instruction::GateModifier { } } } + +impl From for GateModifier { + fn from(modifier: quil_rs::instruction::GateModifier) -> Self { + match modifier { + quil_rs::instruction::GateModifier::Controlled => GateModifier::Controlled, + quil_rs::instruction::GateModifier::Dagger => GateModifier::Dagger, + quil_rs::instruction::GateModifier::Forked => GateModifier::Forked, + } + } +} From e8acd637ed920ad38b37ccb17a5cff9940c14a11 Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Mon, 25 Mar 2024 14:06:53 -0700 Subject: [PATCH 11/23] cleanup instruction module, add comment explaining deepcopy --- rust/src/instruction/mod.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/rust/src/instruction/mod.rs b/rust/src/instruction/mod.rs index 779a0e542..29fc20bf4 100644 --- a/rust/src/instruction/mod.rs +++ b/rust/src/instruction/mod.rs @@ -67,6 +67,10 @@ impl Instruction { inner: self_.inner.clone(), }; + // QubitPlaceholders are implemented with Arc and identified as unique by their pointer + // address. Since cloning an Arc just copies the pointer address, we have to create new + // placeholders for the copy, otherwise resolving a placeholder in the copy would also + // resolve them in the original (or vice-versa). let mut placeholders: HashMap< quil_rs::instruction::QubitPlaceholder, quil_rs::instruction::QubitPlaceholder, @@ -91,7 +95,10 @@ impl Instruction { self.clone() } - /// + // This will raise an error if the program contains any unresolved + // placeholders. This is because they can't be converted to valid quil, + // nor can they be serialized and deserialized in a consistent + // way. pub fn __getstate__<'a>(&self, py: Python<'a>) -> PyResult> { Ok(PyBytes::new_bound( py, From 22b7324d99e07124dcede3c178612a0157213a8e Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Mon, 25 Mar 2024 14:08:31 -0700 Subject: [PATCH 12/23] clarify doc comments --- rust/src/instruction/mod.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rust/src/instruction/mod.rs b/rust/src/instruction/mod.rs index 29fc20bf4..6be8e1217 100644 --- a/rust/src/instruction/mod.rs +++ b/rust/src/instruction/mod.rs @@ -187,8 +187,8 @@ macro_rules! impl_from_quil_rs( /// a result containing the reference if extraction was successful, or an error if the desired /// type didn't match the contents of the instruction. /// -/// * $py_ref is expected to be of type [`PyRef<'_, Instruction>`]. -/// * $dst_type should be the name of the variant as it appears on the +/// * $py_ref must be of type [`PyRef<'_, Instruction>`]. +/// * $dst_type is the name of the variant as it appears on the /// [`quil_rs::instruction::Instruction`] enum. #[macro_export] macro_rules! extract_instruction_as( @@ -207,8 +207,8 @@ macro_rules! extract_instruction_as( /// Returns a result containing the reference if extraction was successful, or an error if the /// desired type didn't match the contents of the instruction. /// -/// * $py_ref is expected to be of type [`PyRefMut<'_, Instruction>`]. -/// * $dst_type should be the name of the variant as it appears on the +/// * $py_ref must be of type [`PyRefMut<'_, Instruction>`]. +/// * $dst_type is the name of the variant as it appears on the /// [`quil_rs::instruction::Instruction`] enum. #[macro_export] macro_rules! extract_instruction_as_mut( From d7978140b73b42219252f447bc24de614f410766 Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Mon, 25 Mar 2024 14:10:20 -0700 Subject: [PATCH 13/23] add __str__, __repr__ to program --- rust/src/program.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/rust/src/program.rs b/rust/src/program.rs index 9da8a9da4..296d2bcd9 100644 --- a/rust/src/program.rs +++ b/rust/src/program.rs @@ -22,7 +22,6 @@ pub struct Program { #[pyclass] pub struct ProgramIter { - // inner: std::vec::IntoIter, inner: Box + Send>, } @@ -139,6 +138,14 @@ impl Program { .map_err(|e| PyValueError::new_err(format!("Could not serialize program to Quil: {e}"))) } + fn __str__(&self) -> String { + self.inner.to_quil_or_debug() + } + + fn __repr__(&self) -> String { + self.__str__() + } + fn __iter__(&self, py: Python<'_>) -> PyResult> { let iter = ProgramIter { inner: Box::new(self.clone().iter_instructions()), From 92588983b1605273d0e818c8cccc8c6ccaef0a8c Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Mon, 25 Mar 2024 14:10:33 -0700 Subject: [PATCH 14/23] remove unused doc string --- rust/src/instruction/quilt.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/rust/src/instruction/quilt.rs b/rust/src/instruction/quilt.rs index f11aacbeb..e64374196 100644 --- a/rust/src/instruction/quilt.rs +++ b/rust/src/instruction/quilt.rs @@ -1,5 +1,3 @@ -//! [TODO:description] - use pyo3::{exceptions::PyValueError, prelude::*}; use crate::{ From be5c1c8fe0ec45dd7aa9b027bb1a2d0f6a8e790f Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Mon, 25 Mar 2024 14:14:13 -0700 Subject: [PATCH 15/23] break up setstate method --- rust/src/instruction/mod.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rust/src/instruction/mod.rs b/rust/src/instruction/mod.rs index 6be8e1217..16e9ab981 100644 --- a/rust/src/instruction/mod.rs +++ b/rust/src/instruction/mod.rs @@ -116,10 +116,10 @@ impl Instruction { _py: Python<'a>, state: &Bound<'a, PyBytes>, ) -> PyResult<()> { - let instructions = - quil_rs::program::Program::from_str(std::str::from_utf8(state.as_bytes()).map_err( - |e| PyValueError::new_err(format!("Could not deserialize non-utf-8 string: {}", e)), - )?) + let program_str = std::str::from_utf8(state.as_bytes()).map_err(|e| { + PyValueError::new_err(format!("Could not deserialize non-utf-8 string: {}", e)) + })?; + let instructions = quil_rs::program::Program::from_str(program_str) .map_err(|e| PyRuntimeError::new_err(format!("Could not deserialize {}", e)))? .into_instructions(); @@ -135,7 +135,7 @@ impl Instruction { inner: instructions .into_iter() .next() - .expect("Instructions has exactly one instruction."), + .expect("instructions has exactly one instruction."), }; Ok(()) From a3194d65234f7c555bd434bfe1b4e16d6704602a Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Mon, 25 Mar 2024 14:17:45 -0700 Subject: [PATCH 16/23] fix error message --- rust/src/conversion.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rust/src/conversion.rs b/rust/src/conversion.rs index b4e68a079..d576970db 100644 --- a/rust/src/conversion.rs +++ b/rust/src/conversion.rs @@ -1,9 +1,9 @@ //! Conversion functions that can be used to convert pyQuil types to [`quil_rs`] types. //! //! This module contains two kinds of functions: -//! - `py_to_${quil_rs::t}` functions convert a #[pyo3::PyAny] into some quil-rs type `t`. These methods are +//! - `py_to_${quil_rs::t}` functions convert a #[`pyo3::PyAny`] into some quil-rs type `t`. These methods are //! compatible with the #[pyo3(from_py_with="")] field attribute for function arguments. -//! - `${quil_rs::t}_from_{k}` functions return some quil-rs type `t` from some other type `k`. +//! - `${t}_from_{k}` functions return some pyQuil or quil-rs type `t` to it's counterpart type `k`. //! //! Both types of functions will raise an error if the input values cannot be used to construct a //! valid quil-rs type. @@ -77,9 +77,9 @@ pub(crate) fn scalar_type_from_string(s: String) -> PyResult Ok(quil_rs::instruction::ScalarType::Integer), "REAL" => Ok(quil_rs::instruction::ScalarType::Real), "OCTET" => Ok(quil_rs::instruction::ScalarType::Octet), - _ => Err(PyValueError::new_err( - "{} is not a valid memory type. Must be BIT, INT, REAL, or OCTET.", - )), + other => Err(PyValueError::new_err(format!( + "{other} is not a valid memory type. Must be BIT, INT, REAL, or OCTET." + ))), } } From 6e5cf182fe05f9357fea2f1b372ae158f422a847 Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Mon, 25 Mar 2024 14:19:12 -0700 Subject: [PATCH 17/23] revert test case changes --- test/unit/test_quilbase.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/unit/test_quilbase.py b/test/unit/test_quilbase.py index d65d294bf..21bfc7683 100644 --- a/test/unit/test_quilbase.py +++ b/test/unit/test_quilbase.py @@ -5,6 +5,8 @@ import numpy as np import pytest +from syrupy.assertion import SnapshotAssertion + from pyquil.api._compiler import QPUCompiler from pyquil.gates import X from pyquil.paulis import PauliSum, PauliTerm @@ -93,7 +95,6 @@ GaussianWaveform, HrmGaussianWaveform, ) -from syrupy.assertion import SnapshotAssertion @pytest.mark.parametrize( @@ -372,12 +373,11 @@ def test_body(self, def_gate_pauli: DefGateByPaulis, body: PauliSum): @pytest.mark.parametrize( ("name", "parameters", "qubits", "instrs"), [ - # ("Calibrate", [], [Qubit(0)], [X(0)]), + ("Calibrate", [], [Qubit(0)], [X(0)]), ("Calibrate", [], [0], []), - # ("Calibrate", [Parameter("X")], [Qubit(0)], [X(0)]), + ("Calibrate", [Parameter("X")], [Qubit(0)], [X(0)]), ], - # ids=("No-Params", "Fixed-Qubit", "Params"), - ids=("Fixed-Qubit",), + ids=("No-Params", "Fixed-Qubit", "Params"), ) class TestDefCalibration: @pytest.fixture From 75696ecfd0d416598437d9746f6a122e9164d848 Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Mon, 20 May 2024 09:18:05 -0700 Subject: [PATCH 18/23] move import --- pyquil/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyquil/__init__.py b/pyquil/__init__.py index f0a8c1334..6021ab130 100644 --- a/pyquil/__init__.py +++ b/pyquil/__init__.py @@ -1,10 +1,10 @@ import os -from pyquil._core import * from pyquil._version import pyquil_version from pyquil.api import get_qc, list_quantum_computers if os.environ.get("PYQUIL_EXPERIMENTAL_BACKEND", False): + from pyquil._core import * from pyquil._core.program import Program else: from pyquil.quil import Program From c84cf632ab63970d4b0598c865e4a896997bc82a Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Mon, 20 May 2024 09:28:22 -0700 Subject: [PATCH 19/23] fix docstring --- pyquil/quilbase.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyquil/quilbase.py b/pyquil/quilbase.py index c89625439..516b4c439 100644 --- a/pyquil/quilbase.py +++ b/pyquil/quilbase.py @@ -691,8 +691,9 @@ def out(self) -> str: return super().to_quil() def get_constructor(self) -> Union[Callable[..., Gate], Callable[..., Callable[..., Gate]]]: - """:returns: A function that constructs this gate on variable qubit indices. E.g. - `mygate.get_constructor()(1) applies the gate to qubit 1.` + """:returns: A function that constructs this gate on variable qubit indices. + + For example, `mygate.get_constructor()(1) applies the gate to qubit 1.` """ if self.parameters: return lambda *params: lambda *qubits: Gate( From 64f3fd752b7805096091496c74422c37416dfbd6 Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Mon, 20 May 2024 09:32:09 -0700 Subject: [PATCH 20/23] restore build backend --- pyproject.toml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 6a61df27d..eaa75d559 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -172,8 +172,5 @@ line-ending = "auto" filterwarnings = ["ignore::DeprecationWarning:pyquil.*:", "ignore::DeprecationWarning:test.unit.*:"] [build-system] -requires = ["maturin>=1,<2"] -build-backend = "maturin" - -[tool.maturin] -module-name = "pyquil._core" +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" From 9ac6ad136d0edb763a6aa761f479d99df9f18305 Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Mon, 20 May 2024 09:36:30 -0700 Subject: [PATCH 21/23] remove unneeded module --- pyquil/_instruction/__init__.py | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 pyquil/_instruction/__init__.py diff --git a/pyquil/_instruction/__init__.py b/pyquil/_instruction/__init__.py deleted file mode 100644 index b186b5d54..000000000 --- a/pyquil/_instruction/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from pyquil._core import instruction - -DefCalibration = instruction.DefCalibration From f492c36c4a90e0ff3d02af5c27a1ecbfcefb9ba8 Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Thu, 23 May 2024 15:25:12 -0700 Subject: [PATCH 22/23] fix fixed-qubit test --- test/unit/__snapshots__/test_quilbase.ambr | 6 ++++++ test/unit/test_quilbase.py | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/test/unit/__snapshots__/test_quilbase.ambr b/test/unit/__snapshots__/test_quilbase.ambr index c7811f422..3c0e9cc1d 100644 --- a/test/unit/__snapshots__/test_quilbase.ambr +++ b/test/unit/__snapshots__/test_quilbase.ambr @@ -138,6 +138,9 @@ # name: TestDeclare.test_str[With-Size] 'DECLARE ro OCTET[5]' # --- +# name: TestDefCalibration.test_out[Fixed-Qubit] + 'DEFCAL Calibrate 0:' +# --- # name: TestDefCalibration.test_out[No-Params] ''' DEFCAL Calibrate 0: @@ -150,6 +153,9 @@ X 0 ''' # --- +# name: TestDefCalibration.test_str[Fixed-Qubit] + 'DEFCAL Calibrate 0:' +# --- # name: TestDefCalibration.test_str[No-Params] ''' DEFCAL Calibrate 0: diff --git a/test/unit/test_quilbase.py b/test/unit/test_quilbase.py index 3839aecf2..68a2ebf93 100644 --- a/test/unit/test_quilbase.py +++ b/test/unit/test_quilbase.py @@ -412,7 +412,9 @@ def test_parameters(self, calibration: DefCalibration, parameters: List[Paramete calibration.parameters = [pi / 2] assert calibration.parameters == [pi / 2] - def test_qubits(self, calibration: DefCalibration, qubits: List[Qubit]): + def test_qubits(self, calibration: DefCalibration, qubits: List[QubitDesignator]): + if len(qubits) > 0 and isinstance(qubits[0], int): + qubits = [Qubit(index) for index in qubits] assert calibration.qubits == qubits calibration.qubits = [Qubit(123)] assert calibration.qubits == [Qubit(123)] From 19ab61f53e7e182e356acb421d0aea4456afeb3f Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Thu, 23 May 2024 15:28:51 -0700 Subject: [PATCH 23/23] remove nest_asyncio --- test/e2e/test_e2e.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/test/e2e/test_e2e.py b/test/e2e/test_e2e.py index d232b95f0..1f71606e1 100644 --- a/test/e2e/test_e2e.py +++ b/test/e2e/test_e2e.py @@ -15,18 +15,14 @@ ############################################################################## from multiprocessing.pool import ThreadPool -import nest_asyncio import numpy as np from pyquil import Program -from pyquil.api import QuantumComputer, QPU -from pyquil.gates import H, CNOT, MEASURE, RX +from pyquil.api import QPU, QuantumComputer +from pyquil.gates import CNOT, MEASURE, RX, H from pyquil.quilatom import MemoryReference from pyquil.quilbase import Declare -nest_asyncio.apply() - - TEST_PROGRAM = Program( Declare("ro", "BIT", 2), H(0),