From 4da732113541de9eb3a841cc580d92257f4019fe Mon Sep 17 00:00:00 2001 From: mhucka Date: Thu, 2 Oct 2025 04:35:32 +0000 Subject: [PATCH 1/2] Update references to default branch to use "main" This updates references to `master` to be `main`. --- .github/workflows/ci_build_library.yaml | 1 - .github/workflows/ci_build_wheels.yaml | 1 - .github/workflows/ci_docker_tests.yaml | 1 - .github/workflows/ci_format_checks.yml | 1 - .github/workflows/ci_hardware_options.yaml | 1 - .github/workflows/ci_sanitizer_tests.yaml | 1 - .github/workflows/ci_tcmalloc_test.yaml | 1 - .github/workflows/osv-scanner.yaml | 1 - .github/workflows/scorecard-scanner.yaml | 1 - README.md | 18 ++++++------ check/format-incremental | 24 ++++++++-------- docs/_scripts/build_api_docs.py | 2 +- docs/cirq_interface.md | 4 +-- docs/input_format.md | 2 +- docs/install_qsimcirq.md | 6 ++-- docs/overview.md | 4 +-- docs/tutorials/gcp_cpu.md | 2 +- docs/tutorials/noisy_qsimcirq.ipynb | 4 +-- docs/tutorials/q32d14.ipynb | 4 +-- docs/tutorials/qsimcirq.ipynb | 10 +++---- docs/tutorials/qsimcirq_gcp.md | 4 +-- docs/type_reference.md | 32 +++++++++++----------- docs/usage.md | 4 +-- lib/circuit_qsim_parser.h | 2 +- 24 files changed, 61 insertions(+), 70 deletions(-) diff --git a/.github/workflows/ci_build_library.yaml b/.github/workflows/ci_build_library.yaml index fd98ab1fd..d48dc5fd7 100644 --- a/.github/workflows/ci_build_library.yaml +++ b/.github/workflows/ci_build_library.yaml @@ -18,7 +18,6 @@ run-name: Build the library on different platforms and run tests on: push: branches: - - master - main pull_request: diff --git a/.github/workflows/ci_build_wheels.yaml b/.github/workflows/ci_build_wheels.yaml index 2167d7386..4eb2aeed4 100644 --- a/.github/workflows/ci_build_wheels.yaml +++ b/.github/workflows/ci_build_wheels.yaml @@ -18,7 +18,6 @@ run-name: Build Python wheels and verify them on: push: branches: - - master - main pull_request: diff --git a/.github/workflows/ci_docker_tests.yaml b/.github/workflows/ci_docker_tests.yaml index fca6a6737..d67a799b1 100644 --- a/.github/workflows/ci_docker_tests.yaml +++ b/.github/workflows/ci_docker_tests.yaml @@ -18,7 +18,6 @@ run-name: Build Docker images and test them on: push: branches: - - master - main pull_request: diff --git a/.github/workflows/ci_format_checks.yml b/.github/workflows/ci_format_checks.yml index d860014d3..88144c505 100644 --- a/.github/workflows/ci_format_checks.yml +++ b/.github/workflows/ci_format_checks.yml @@ -18,7 +18,6 @@ run-name: Check source code with linters and formatters on: push: branches: - - master - main pull_request: diff --git a/.github/workflows/ci_hardware_options.yaml b/.github/workflows/ci_hardware_options.yaml index 18612b47a..52ba51f43 100644 --- a/.github/workflows/ci_hardware_options.yaml +++ b/.github/workflows/ci_hardware_options.yaml @@ -18,7 +18,6 @@ run-name: Test with instruction set extensions and parallelism on: push: branches: - - master - main pull_request: diff --git a/.github/workflows/ci_sanitizer_tests.yaml b/.github/workflows/ci_sanitizer_tests.yaml index 753441365..06f90a47e 100644 --- a/.github/workflows/ci_sanitizer_tests.yaml +++ b/.github/workflows/ci_sanitizer_tests.yaml @@ -18,7 +18,6 @@ run-name: Test with address and memory sanitizers on: push: branches: - - master - main pull_request: diff --git a/.github/workflows/ci_tcmalloc_test.yaml b/.github/workflows/ci_tcmalloc_test.yaml index fb64c37b3..a662d7425 100644 --- a/.github/workflows/ci_tcmalloc_test.yaml +++ b/.github/workflows/ci_tcmalloc_test.yaml @@ -18,7 +18,6 @@ run-name: Test with TCMalloc (thread-caching malloc) on: push: branches: - - master - main pull_request: diff --git a/.github/workflows/osv-scanner.yaml b/.github/workflows/osv-scanner.yaml index 23286e000..b792b5011 100644 --- a/.github/workflows/osv-scanner.yaml +++ b/.github/workflows/osv-scanner.yaml @@ -31,7 +31,6 @@ on: types: [opened, synchronize] branches: - main - - master # Support merge queues. merge_group: diff --git a/.github/workflows/scorecard-scanner.yaml b/.github/workflows/scorecard-scanner.yaml index 880939ab2..f8c8aaadf 100644 --- a/.github/workflows/scorecard-scanner.yaml +++ b/.github/workflows/scorecard-scanner.yaml @@ -29,7 +29,6 @@ on: types: [opened, synchronize] branches: - main - - master # Support merge queues. merge_group: diff --git a/README.md b/README.md index 8d207f3e2..71b473f51 100644 --- a/README.md +++ b/README.md @@ -56,9 +56,9 @@ vol. 574](https://www.nature.com/articles/s41586-019-1666-5), 2019). ### C++ usage The code is basically designed as a library. The user can modify sample -applications in [apps](https://github.com/quantumlib/qsim/tree/master/apps) +applications in [apps](https://github.com/quantumlib/qsim/tree/main/apps) to meet their own needs. The usage of sample applications is described in the -[docs](https://github.com/quantumlib/qsim/blob/master/docs/usage.md). +[docs](https://github.com/quantumlib/qsim/blob/main/docs/usage.md). ### Python usage @@ -78,7 +78,7 @@ conda install -c conda-forge qsimcirq ``` _Note_: The core qsim library (located in the source repository under the -[`lib/`](https://github.com/quantumlib/qsim/blob/master/lib) subdirectory) can +[`lib/`](https://github.com/quantumlib/qsim/blob/main/lib) subdirectory) can be included directly in C++ programs without installing the Python interface. ### Cirq usage @@ -87,10 +87,10 @@ be included directly in C++ programs without installing the Python interface. invoking Noisy Intermediate-Scale Quantum (NISQ) circuits. Cirq can use qsim as its simulation library. To get started with simulating Cirq circuits using qsim, please refer to the -[tutorial](https://github.com/quantumlib/qsim/blob/master/docs/tutorials/qsimcirq.ipynb). +[tutorial](https://github.com/quantumlib/qsim/blob/main/docs/tutorials/qsimcirq.ipynb). More detailed information about the qsim-Cirq API can be found in the -[docs](https://github.com/quantumlib/qsim/blob/master/docs/cirq_interface.md). +[docs](https://github.com/quantumlib/qsim/blob/main/docs/cirq_interface.md). ### Input format @@ -98,20 +98,20 @@ More detailed information about the qsim-Cirq API can be found in the > This format is deprecated, and no longer actively maintained. The circuit input format is described in the -[docs](https://github.com/quantumlib/qsim/blob/master/docs/input_format.md). +[docs](https://github.com/quantumlib/qsim/blob/main/docs/input_format.md). ### Sample circuits A number of sample circuits are provided in -[circuits](https://github.com/quantumlib/qsim/tree/master/circuits). +[circuits](https://github.com/quantumlib/qsim/tree/main/circuits). ### Unit tests Unit tests for C++ libraries use the [GoogleTest](https://github.com/google/googletest) framework, and are located in -[tests](https://github.com/quantumlib/qsim/tree/master/tests). Python tests use +[tests](https://github.com/quantumlib/qsim/tree/main/tests). Python tests use [pytest](https://docs.pytest.org/en/stable/), and are located in -[qsimcirq_tests](https://github.com/quantumlib/qsim/tree/master/qsimcirq_tests). +[qsimcirq_tests](https://github.com/quantumlib/qsim/tree/main/qsimcirq_tests). To build and run all tests, run: diff --git a/check/format-incremental b/check/format-incremental index ae72dd092..964f84ddd 100755 --- a/check/format-incremental +++ b/check/format-incremental @@ -2,7 +2,7 @@ ################################################################################ # Based on the Cirq python-formatting script: -# https://github.com/quantumlib/Cirq/blob/master/check/format-incremental +# https://github.com/quantumlib/Cirq/blob/main/check/format-incremental # # Formats python files that have been modified. # @@ -22,14 +22,14 @@ # # You can specify a base git revision to compare against (i.e. to use when # determining whether or not a file is considered to have "changed"). For -# example, you can compare against 'origin/master' or 'HEAD~1'. +# example, you can compare against 'origin/main' or 'HEAD~1'. # # If you don't specify a base revision, the following defaults will be tried, in # order, until one exists: # -# 1. upstream/master -# 2. origin/master -# 3. master +# 1. upstream/main +# 2. origin/main +# 3. main # # If none exists, the script fails. ################################################################################ @@ -63,14 +63,14 @@ done if (( only_changed == 1 )); then # Figure out which branch to compare against. if [ -z "${rev}" ]; then - if [ "$(git cat-file -t upstream/master 2> /dev/null)" == "commit" ]; then - rev=upstream/master - elif [ "$(git cat-file -t origin/master 2> /dev/null)" == "commit" ]; then - rev=origin/master - elif [ "$(git cat-file -t master 2> /dev/null)" == "commit" ]; then - rev=master + if [ "$(git cat-file -t upstream/main 2> /dev/null)" == "commit" ]; then + rev=upstream/main + elif [ "$(git cat-file -t origin/main 2> /dev/null)" == "commit" ]; then + rev=origin/main + elif [ "$(git cat-file -t main 2> /dev/null)" == "commit" ]; then + rev=main else - echo -e "\033[31mNo default revision found to compare against. Argument #1 must be what to diff against (e.g. 'origin/master' or 'HEAD~1').\033[0m" >&2 + echo -e "\033[31mNo default revision found to compare against. Argument #1 must be what to diff against (e.g. 'origin/main' or 'HEAD~1').\033[0m" >&2 exit 1 fi fi diff --git a/docs/_scripts/build_api_docs.py b/docs/_scripts/build_api_docs.py index ec49783af..297e6e11e 100644 --- a/docs/_scripts/build_api_docs.py +++ b/docs/_scripts/build_api_docs.py @@ -27,7 +27,7 @@ flags.DEFINE_string( "code_url_prefix", - ("https://github.com/quantumlib/qsim/tree/master/" "qsimcirq"), + ("https://github.com/quantumlib/qsim/tree/main/" "qsimcirq"), "The url prefix for links to code.", ) diff --git a/docs/cirq_interface.md b/docs/cirq_interface.md index 484ce8073..593da1700 100644 --- a/docs/cirq_interface.md +++ b/docs/cirq_interface.md @@ -44,7 +44,7 @@ directory. make run-py-tests ``` This will run -[qsimcirq_test](https://github.com/quantumlib/qsim/blob/master/qsimcirq_tests/qsimcirq_test.py), +[qsimcirq_test](https://github.com/quantumlib/qsim/blob/main/qsimcirq_tests/qsimcirq_test.py), which invokes qsim through the qsim-Cirq interface. ## Interface design and operations @@ -79,7 +79,7 @@ average PC, or up to 40 qubits on high-performance VMs). Options for the simulator, including number of threads and verbosity, can be set with the `qsim_options` field, which accepts a `QSimOptions` object as defined in -[qsim_simulator.py](https://github.com/quantumlib/qsim/blob/master/qsimcirq/qsim_simulator.py). +[qsim_simulator.py](https://github.com/quantumlib/qsim/blob/main/qsimcirq/qsim_simulator.py). These options can also be passed as a {str: val} dict, using the format described by that class. diff --git a/docs/input_format.md b/docs/input_format.md index a8067e5e2..0ad8d0e7b 100644 --- a/docs/input_format.md +++ b/docs/input_format.md @@ -15,7 +15,7 @@ time gate_name qubits parameters Here `time` refers to when the gate is applied in the circuit. Gates with the same time can be applied independently and they may be reordered for performance. Trailing spaces or characters are not allowed. A number of sample circuits are provided -in [circuits](https://github.com/quantumlib/qsim/blob/master/circuits). +in [circuits](https://github.com/quantumlib/qsim/blob/main/circuits). # Supported gates diff --git a/docs/install_qsimcirq.md b/docs/install_qsimcirq.md index 09a16c372..220369d12 100644 --- a/docs/install_qsimcirq.md +++ b/docs/install_qsimcirq.md @@ -5,7 +5,7 @@ For all others, Dockerfiles are provided to install qsim in a containerized environment. **Note:** The core qsim library (under -[lib/](https://github.com/quantumlib/qsim/blob/master/lib)) can be included +[lib/](https://github.com/quantumlib/qsim/blob/main/lib)) can be included directly in C++ code without building and installing the qsimcirq interface. ## Before installation @@ -14,12 +14,12 @@ Prior to installation, consider opening a [virtual environment](https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/). Prerequisites are included in the -[`requirements.txt`](https://github.com/quantumlib/qsim/blob/master/requirements.txt) +[`requirements.txt`](https://github.com/quantumlib/qsim/blob/main/requirements.txt) file, and will be automatically installed along with qsimcirq. If you'd like to develop qsimcirq, a separate set of dependencies are includes in the -[`dev-requirements.txt`](https://github.com/quantumlib/qsim/blob/master/dev-requirements.txt) +[`dev-requirements.txt`](https://github.com/quantumlib/qsim/blob/main/dev-requirements.txt) file. You can install them with `pip3 install -r dev-requirements.txt` or `pip3 install qsimcirq[dev]`. diff --git a/docs/overview.md b/docs/overview.md index e26667ff5..ce91c9ed8 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -13,9 +13,9 @@ of qsim in cross-entropy benchmarks Integration with [Cirq](https://github.com/quantumlib/Cirq) makes getting started with qsim easy! Check out the -[installation guide](https://github.com/quantumlib/qsim/blob/master/docs/install_qsimcirq.md) +[installation guide](https://github.com/quantumlib/qsim/blob/main/docs/install_qsimcirq.md) or try the runnable -[notebook tutorial](https://github.com/quantumlib/qsim/blob/master/docs/tutorials/qsimcirq.ipynb). +[notebook tutorial](https://github.com/quantumlib/qsim/blob/main/docs/tutorials/qsimcirq.ipynb). ## Design diff --git a/docs/tutorials/gcp_cpu.md b/docs/tutorials/gcp_cpu.md index 1cd2cdb35..19c1a6d54 100644 --- a/docs/tutorials/gcp_cpu.md +++ b/docs/tutorials/gcp_cpu.md @@ -227,7 +227,7 @@ Instances dashboard to prevent further billing. You are now ready to run your own large simulations on Google Cloud. If you want to try a large circuit on Google Cloud, you can connect the -[Simulate a large quantum circuit](https://colab.sandbox.google.com/github/quantumlib/qsim/blob/master/docs/tutorials/q32d14.ipynb) +[Simulate a large quantum circuit](https://colab.sandbox.google.com/github/quantumlib/qsim/blob/main/docs/tutorials/q32d14.ipynb) Colab notebook to your VM ([documentation](https://quantumai.google/qsim/tutorials/q32d14)). diff --git a/docs/tutorials/noisy_qsimcirq.ipynb b/docs/tutorials/noisy_qsimcirq.ipynb index 036d17e3a..c1466facf 100644 --- a/docs/tutorials/noisy_qsimcirq.ipynb +++ b/docs/tutorials/noisy_qsimcirq.ipynb @@ -59,10 +59,10 @@ " View on QuantumAI\n", " \n", " \n", - " Run in Google Colab\n", + " Run in Google Colab\n", " \n", " \n", - " View source on GitHub\n", + " View source on GitHub\n", " \n", " \n", " Download notebook\n", diff --git a/docs/tutorials/q32d14.ipynb b/docs/tutorials/q32d14.ipynb index ea66c4c9c..1d8af1eae 100644 --- a/docs/tutorials/q32d14.ipynb +++ b/docs/tutorials/q32d14.ipynb @@ -51,10 +51,10 @@ " View on QuantumAI\n", " \n", " \n", - " Run in Google Colab\n", +" Run in Google Colab\n", " \n", " \n", - " View source on GitHub\n", +" View source on GitHub\n", " \n", " \n", " Download notebook\n", diff --git a/docs/tutorials/qsimcirq.ipynb b/docs/tutorials/qsimcirq.ipynb index 2a72fac38..cd1f6b385 100644 --- a/docs/tutorials/qsimcirq.ipynb +++ b/docs/tutorials/qsimcirq.ipynb @@ -51,10 +51,10 @@ " View on QuantumAI\n", " \n", " \n", - " Run in Google Colab\n", +" Run in Google Colab\n", " \n", " \n", - " View source on GitHub\n", +" View source on GitHub\n", " \n", " \n", " Download notebook\n", @@ -109,7 +109,7 @@ "id": "7lYC4qxpDKMN" }, "source": [ - "Simulating Cirq circuits with qsim is easy: just define the circuit as you normally would, then create a `QSimSimulator` to perform the simulation. This object implements Cirq's [simulator.py](https://github.com/quantumlib/Cirq/blob/master/cirq-core/cirq/sim/simulator.py) interfaces, so you can drop it in anywhere the basic Cirq simulator is used." +"Simulating Cirq circuits with qsim is easy: just define the circuit as you normally would, then create a `QSimSimulator` to perform the simulation. This object implements Cirq's [simulator.py](https://github.com/quantumlib/Cirq/blob/main/cirq-core/cirq/sim/simulator.py) interfaces, so you can drop it in anywhere the basic Cirq simulator is used." ] }, { @@ -354,7 +354,7 @@ "id": "OUjhKoRVZGKZ" }, "source": [ - "qsim performance can be tuned further by passing options to the simulator constructor. These options use the same format as the qsim_base binary - a full description can be found in the qsim [usage doc](https://github.com/quantumlib/qsim/blob/master/docs/usage.md). The example below demonstrates enabling multithreading in qsim; for best performance, use the same number of threads as the number of cores (or virtual cores) on your machine." +"qsim performance can be tuned further by passing options to the simulator constructor. These options use the same format as the qsim_base binary - a full description can be found in the qsim [usage doc](https://github.com/quantumlib/qsim/blob/main/docs/usage.md). The example below demonstrates enabling multithreading in qsim; for best performance, use the same number of threads as the number of cores (or virtual cores) on your machine." ] }, { @@ -441,7 +441,7 @@ "id": "KUAwCOGeu0wA" }, "source": [ - "In order to let qsimh know how we want to split up the circuit, we need to pass it some additional options. More detail on these can be found in the qsim [usage doc](https://github.com/quantumlib/qsim/blob/master/docs/usage.md), but the fundamentals are explained below." +"In order to let qsimh know how we want to split up the circuit, we need to pass it some additional options. More detail on these can be found in the qsim [usage doc](https://github.com/quantumlib/qsim/blob/main/docs/usage.md), but the fundamentals are explained below." ] }, { diff --git a/docs/tutorials/qsimcirq_gcp.md b/docs/tutorials/qsimcirq_gcp.md index 3945564ab..92b924aae 100644 --- a/docs/tutorials/qsimcirq_gcp.md +++ b/docs/tutorials/qsimcirq_gcp.md @@ -153,7 +153,7 @@ The container port is now forwarded to your local machine. ## Connect Colab to your local runtime First, get a notebook up and running on Colab. Open the -Get started with qsimcirq +Get started with qsimcirq notebook in Colab. If you are connect to Colab with a notebook visible, you can click *Connect* to @@ -175,7 +175,7 @@ You should now be able to run the cells in the notebook. A large circuit is provided with 32 qubits and a depth of 14 gate operations. Open the -Simulate large quantum circuit +Simulate large quantum circuit notebook in Colab. This large circuit will not succeed if you attempt to run the default runtime. diff --git a/docs/type_reference.md b/docs/type_reference.md index e463b7b0a..28d792efb 100644 --- a/docs/type_reference.md +++ b/docs/type_reference.md @@ -10,7 +10,7 @@ they fulfill the same expectations. | ------------------------|---------------------------------------------------| | Args (parfor.h) | Arguments to a `Function` object. | | Bitstring | Alias for `uint64_t`. | -| Circuit | [`Circuit`](https://github.com/quantumlib/qsim/tree/master/lib/circuit.h) | +| Circuit | [`Circuit`](https://github.com/quantumlib/qsim/tree/main/lib/circuit.h) | | Container (util.h) | A vector of strings, or `Op`'s output type. | | Ctype | A complex type, e.g., `std::complex`. | | For | `for` loop abstractions, see below. | @@ -18,24 +18,24 @@ they fulfill the same expectations. | FP (simulator_basic.h) | Same as `fp_type`. | | fp_type | A floating-point type, i.e., `float` or `double`. | | Function (parfor.h) | Any function; args are specified with `Args`. | -| FuserT | [`BasicGateFuser`](https://github.com/quantumlib/qsim/tree/master/lib/fuser_basic.h) | -| Gate | [`Gate`](https://github.com/quantumlib/qsim/tree/master/lib/gate.h) | -| GateCirq | [`GateCirq`](https://github.com/quantumlib/qsim/tree/master/lib/gates_cirq.h) | -| GateDef | [`GateRX`](https://github.com/quantumlib/qsim/tree/master/lib/gate.h) | -| GateQSim | [`GateQSim`](https://github.com/quantumlib/qsim/tree/master/lib/gates_qsim.h) | -| GK / GateKind | [`GateKind`](https://github.com/quantumlib/qsim/tree/master/lib/gate.h) | -| HybridSimulator | [`HybridSimulator`](https://github.com/quantumlib/qsim/tree/master/lib/hybrid.h) | -| IO | [`IO`](https://github.com/quantumlib/qsim/tree/master/lib/io.h) | -| IOFile | [`IOFile`](https://github.com/quantumlib/qsim/tree/master/lib/io_file.h) | +| FuserT | [`BasicGateFuser`](https://github.com/quantumlib/qsim/tree/main/lib/fuser_basic.h) | +| Gate | [`Gate`](https://github.com/quantumlib/qsim/tree/main/lib/gate.h) | +| GateCirq | [`GateCirq`](https://github.com/quantumlib/qsim/tree/main/lib/gates_cirq.h) | +| GateDef | [`GateRX`](https://github.com/quantumlib/qsim/tree/main/lib/gate.h) | +| GateQSim | [`GateQSim`](https://github.com/quantumlib/qsim/tree/main/lib/gates_qsim.h) | +| GK / GateKind | [`GateKind`](https://github.com/quantumlib/qsim/tree/main/lib/gate.h) | +| HybridSimulator | [`HybridSimulator`](https://github.com/quantumlib/qsim/tree/main/lib/hybrid.h) | +| IO | [`IO`](https://github.com/quantumlib/qsim/tree/main/lib/io.h) | +| IOFile | [`IOFile`](https://github.com/quantumlib/qsim/tree/main/lib/io_file.h) | | Matrix | A numeric C++ vector representing a matrix. | -| MeasurementFunc | [`measure` (in `PrintAmplitudes`)](https://github.com/quantumlib/qsim/tree/master/apps/qsim_base.cc) | -| Op (util.h) | [`to_int` (in `Options`)](https://github.com/quantumlib/qsim/tree/master/apps/qsim_amplitudes.cc) | -| ParallelFor | [`ParallelFor`](https://github.com/quantumlib/qsim/tree/master/lib/parfor.h) | +| MeasurementFunc | [`measure` (in `PrintAmplitudes`)](https://github.com/quantumlib/qsim/tree/main/apps/qsim_base.cc) | +| Op (util.h) | [`to_int` (in `Options`)](https://github.com/quantumlib/qsim/tree/main/apps/qsim_amplitudes.cc) | +| ParallelFor | [`ParallelFor`](https://github.com/quantumlib/qsim/tree/main/lib/parfor.h) | | Params | Vector of `fp_type`. | -| SequentialFor | [`SequentialFor`](https://github.com/quantumlib/qsim/tree/master/lib/seqfor.h) | -| Simulator | [`SimulatorAVX`](https://github.com/quantumlib/qsim/tree/master/lib/simulator_avx.h) | +| SequentialFor | [`SequentialFor`](https://github.com/quantumlib/qsim/tree/main/lib/seqfor.h) | +| Simulator | [`SimulatorAVX`](https://github.com/quantumlib/qsim/tree/main/lib/simulator_avx.h) | | State | Unique pointer to `fp_type`. | -| StateSpace | [`StateSpace`](https://github.com/quantumlib/qsim/tree/master/lib/statespace.h) | +| StateSpace | [`StateSpace`](https://github.com/quantumlib/qsim/tree/main/lib/statespace.h) | | Stream | A valid input for `std::getline()`. | ## `For` and `ForArgs` diff --git a/docs/usage.md b/docs/usage.md index 33b7f3170..c3e1b03e7 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -3,12 +3,12 @@ qsim and qsimh are designed to be extensible to a variety of different applications. The base versions of each are `qsim_base` and `qsimh_base`; sample extensions are provided in -[apps](https://github.com/quantumlib/qsim/blob/master/apps). To compile the +[apps](https://github.com/quantumlib/qsim/blob/main/apps). To compile the code, just run `make qsim`. Binaries of the form `qsim(h)_*.x` will be added to the `apps` directory. Sample circuits are provided in -[circuits](https://github.com/quantumlib/qsim/blob/master/circuits). +[circuits](https://github.com/quantumlib/qsim/blob/main/circuits). ## qsim_base usage diff --git a/lib/circuit_qsim_parser.h b/lib/circuit_qsim_parser.h index de7bd89d6..b4afa04d8 100644 --- a/lib/circuit_qsim_parser.h +++ b/lib/circuit_qsim_parser.h @@ -27,7 +27,7 @@ namespace qsim { /** - * Parser for the (deprecated) qsim file input format. + * Parser for the (deprecated) qsim file input format. * The primary supported interface for designing circuits to simulate with qsim * is Cirq, which relies on * the Python-based qsimcirq interface. For C++ applications, Cirq gates can be From 4a3014c8210e128a2e20a0dac86f86d431d01bc8 Mon Sep 17 00:00:00 2001 From: mhucka Date: Thu, 9 Oct 2025 01:20:29 +0000 Subject: [PATCH 2/2] Fix doubled `\\` syntax errors Per review comments from @pavoljuhas. --- docs/tutorials/q32d14.ipynb | 3335 +++++++++++++++++++-------------- docs/tutorials/qsimcirq.ipynb | 133 +- 2 files changed, 1996 insertions(+), 1472 deletions(-) diff --git a/docs/tutorials/q32d14.ipynb b/docs/tutorials/q32d14.ipynb index 1d8af1eae..ef35c9364 100644 --- a/docs/tutorials/q32d14.ipynb +++ b/docs/tutorials/q32d14.ipynb @@ -18,7 +18,7 @@ }, "outputs": [], "source": [ - "#@title Licensed under the Apache License, Version 2.0 (the \"License\");\n", + "# @title Licensed under the Apache License, Version 2.0 (the \"License\");\n", "# you may not use this file except in compliance with the License.\n", "# You may obtain a copy of the License at\n", "#\n", @@ -51,10 +51,10 @@ " View on QuantumAI\n", " \n", " \n", -" Run in Google Colab\n", + " Run in Google Colab\n", " \n", " \n", -" View source on GitHub\n", + " View source on GitHub\n", " \n", " \n", " Download notebook\n", @@ -118,6 +118,10 @@ } ], "source": [ + "import time\n", + "\n", + "import numpy as np\n", + "\n", "try:\n", " import cirq\n", "except ImportError:\n", @@ -140,18 +144,6 @@ "And import module dependencies for this tutorial:" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "4YEjk8wQnNjC" - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "import time" - ] - }, { "cell_type": "markdown", "metadata": { @@ -183,39 +175,39 @@ "outputs": [], "source": [ "q = [\n", - " cirq.GridQubit(1,5),\n", - " cirq.GridQubit(1,6),\n", - " cirq.GridQubit(1,7),\n", - " cirq.GridQubit(2,4),\n", - " cirq.GridQubit(2,5),\n", - " cirq.GridQubit(2,6),\n", - " cirq.GridQubit(2,7),\n", - " cirq.GridQubit(3,3),\n", - " cirq.GridQubit(3,4),\n", - " cirq.GridQubit(3,5),\n", - " cirq.GridQubit(3,6),\n", - " cirq.GridQubit(3,7),\n", - " cirq.GridQubit(4,2),\n", - " cirq.GridQubit(4,3),\n", - " cirq.GridQubit(4,4),\n", - " cirq.GridQubit(4,5),\n", - " cirq.GridQubit(4,6),\n", - " cirq.GridQubit(4,7),\n", - " cirq.GridQubit(5,1),\n", - " cirq.GridQubit(5,2),\n", - " cirq.GridQubit(5,3),\n", - " cirq.GridQubit(5,4),\n", - " cirq.GridQubit(5,5),\n", - " cirq.GridQubit(5,6),\n", - " cirq.GridQubit(6,1),\n", - " cirq.GridQubit(6,2),\n", - " cirq.GridQubit(6,3),\n", - " cirq.GridQubit(6,4),\n", - " cirq.GridQubit(6,5),\n", - " cirq.GridQubit(7,2),\n", - " cirq.GridQubit(7,3),\n", - " cirq.GridQubit(7,4)\n", - " ]" + " cirq.GridQubit(1, 5),\n", + " cirq.GridQubit(1, 6),\n", + " cirq.GridQubit(1, 7),\n", + " cirq.GridQubit(2, 4),\n", + " cirq.GridQubit(2, 5),\n", + " cirq.GridQubit(2, 6),\n", + " cirq.GridQubit(2, 7),\n", + " cirq.GridQubit(3, 3),\n", + " cirq.GridQubit(3, 4),\n", + " cirq.GridQubit(3, 5),\n", + " cirq.GridQubit(3, 6),\n", + " cirq.GridQubit(3, 7),\n", + " cirq.GridQubit(4, 2),\n", + " cirq.GridQubit(4, 3),\n", + " cirq.GridQubit(4, 4),\n", + " cirq.GridQubit(4, 5),\n", + " cirq.GridQubit(4, 6),\n", + " cirq.GridQubit(4, 7),\n", + " cirq.GridQubit(5, 1),\n", + " cirq.GridQubit(5, 2),\n", + " cirq.GridQubit(5, 3),\n", + " cirq.GridQubit(5, 4),\n", + " cirq.GridQubit(5, 5),\n", + " cirq.GridQubit(5, 6),\n", + " cirq.GridQubit(6, 1),\n", + " cirq.GridQubit(6, 2),\n", + " cirq.GridQubit(6, 3),\n", + " cirq.GridQubit(6, 4),\n", + " cirq.GridQubit(6, 5),\n", + " cirq.GridQubit(7, 2),\n", + " cirq.GridQubit(7, 3),\n", + " cirq.GridQubit(7, 4),\n", + "]" ] }, { @@ -309,1363 +301,1889 @@ "source": [ "circuit = cirq.Circuit(\n", " [\n", - " cirq.Y(q[0])**0.5,\n", - " cirq.X(q[1])**0.5,\n", - " cirq.X(q[2])**0.5,\n", - " cirq.X(q[3])**0.5,\n", - " cirq.Y(q[4])**0.5,\n", - " cirq.X(q[5])**0.5,\n", - " [cirq.X(q[6])**0.5, cirq.H(q[6])**0.5, cirq.X(q[6])**-0.5],\n", - " cirq.Y(q[7])**0.5,\n", - " [cirq.X(q[8])**0.5, cirq.H(q[8])**0.5, cirq.X(q[8])**-0.5],\n", - " cirq.Y(q[9])**0.5,\n", - " cirq.Y(q[10])**0.5,\n", - " cirq.X(q[11])**0.5,\n", - " [cirq.X(q[12])**0.5, cirq.H(q[12])**0.5, cirq.X(q[12])**-0.5],\n", - " cirq.X(q[13])**0.5,\n", - " [cirq.X(q[14])**0.5, cirq.H(q[14])**0.5, cirq.X(q[14])**-0.5],\n", - " cirq.X(q[15])**0.5,\n", - " cirq.X(q[16])**0.5,\n", - " [cirq.X(q[17])**0.5, cirq.H(q[17])**0.5, cirq.X(q[17])**-0.5],\n", - " cirq.X(q[18])**0.5,\n", - " cirq.Y(q[19])**0.5,\n", - " cirq.X(q[20])**0.5,\n", - " cirq.X(q[21])**0.5,\n", - " cirq.Y(q[22])**0.5,\n", - " cirq.Y(q[23])**0.5,\n", - " cirq.X(q[24])**0.5,\n", - " [cirq.X(q[25])**0.5, cirq.H(q[25])**0.5, cirq.X(q[25])**-0.5],\n", - " cirq.X(q[26])**0.5,\n", - " cirq.X(q[27])**0.5,\n", - " cirq.X(q[28])**0.5,\n", - " [cirq.X(q[29])**0.5, cirq.H(q[29])**0.5, cirq.X(q[29])**-0.5],\n", - " [cirq.X(q[30])**0.5, cirq.H(q[30])**0.5, cirq.X(q[30])**-0.5],\n", - " cirq.X(q[31])**0.5,\n", - " cirq.rz(rads=-2.079870303178702*np.pi).on(q[1]),\n", - " cirq.rz(rads=2.0436918407499873*np.pi).on(q[2]),\n", - " cirq.rz(rads=1.2371391697444234*np.pi).on(q[3]),\n", - " cirq.rz(rads=-1.2825274365288457*np.pi).on(q[4]),\n", - " cirq.rz(rads=-0.6529975013575373*np.pi).on(q[5]),\n", - " cirq.rz(rads=0.21248377848559125*np.pi).on(q[6]),\n", - " cirq.rz(rads=0.2767373377033284*np.pi).on(q[8]),\n", - " cirq.rz(rads=-0.18492941569567625*np.pi).on(q[9]),\n", - " cirq.rz(rads=0.02232591119805812*np.pi).on(q[10]),\n", - " cirq.rz(rads=-0.030028573876142287*np.pi).on(q[11]),\n", - " cirq.rz(rads=-0.8467509808142173*np.pi).on(q[12]),\n", - " cirq.rz(rads=0.8164932597686655*np.pi).on(q[13]),\n", - " cirq.rz(rads=-1.00125113388313*np.pi).on(q[14]),\n", - " cirq.rz(rads=1.1224546746752684*np.pi).on(q[15]),\n", - " cirq.rz(rads=-0.16310561378711827*np.pi).on(q[16]),\n", - " cirq.rz(rads=0.1766183348870303*np.pi).on(q[17]),\n", - " cirq.rz(rads=-0.22542387771877406*np.pi).on(q[19]),\n", - " cirq.rz(rads=0.2814659583608806*np.pi).on(q[20]),\n", - " cirq.rz(rads=-0.33113463396189063*np.pi).on(q[21]),\n", - " cirq.rz(rads=0.40440704518468423*np.pi).on(q[22]),\n", - " cirq.rz(rads=-0.4081262439699967*np.pi).on(q[25]),\n", - " cirq.rz(rads=0.3666829187201306*np.pi).on(q[26]),\n", - " cirq.rz(rads=-0.3507308388473503*np.pi).on(q[27]),\n", - " cirq.rz(rads=0.37554649493270875*np.pi).on(q[28]),\n", - " cirq.rz(rads=-1.4187954353764791*np.pi).on(q[29]),\n", - " cirq.rz(rads=1.5102819373895253*np.pi).on(q[30]),\n", - " [cirq.ISWAP(q[1], q[2])**-0.9570391651387101, cirq.CZ(q[1], q[2])**-0.17511624695473224],\n", - " [cirq.ISWAP(q[3], q[4])**-1.0141403689884423, cirq.CZ(q[3], q[4])**-0.17046670168281958],\n", - " [cirq.ISWAP(q[5], q[6])**-1.013386784909492, cirq.CZ(q[5], q[6])**1.8378144783929071],\n", - " [cirq.ISWAP(q[8], q[9])**-1.009868884178167, cirq.CZ(q[8], q[9])**-0.16552586798219657],\n", - " [cirq.ISWAP(q[10], q[11])**-0.973165668451805, cirq.CZ(q[10], q[11])**-0.1627822085708043],\n", - " [cirq.ISWAP(q[12], q[13])**-0.9967062367293744, cirq.CZ(q[12], q[13])**-0.16320564272090876],\n", - " [cirq.ISWAP(q[14], q[15])**-0.9733750299685556, cirq.CZ(q[14], q[15])**-0.16091330726740966],\n", - " [cirq.ISWAP(q[16], q[17])**-0.9794265878513263, cirq.CZ(q[16], q[17])**-0.16849356010919606],\n", - " [cirq.ISWAP(q[19], q[20])**-0.9375857698276336, cirq.CZ(q[19], q[20])**-0.144908770657389],\n", - " [cirq.ISWAP(q[21], q[22])**-0.9769678680475263, cirq.CZ(q[21], q[22])**-0.16332605888196952],\n", - " [cirq.ISWAP(q[25], q[26])**-0.9656924944561719, cirq.CZ(q[25], q[26])**-0.1474408404408433],\n", - " [cirq.ISWAP(q[27], q[28])**-0.9998377482375511, cirq.CZ(q[27], q[28])**-0.15252451837046574],\n", - " [cirq.ISWAP(q[29], q[30])**-0.9878279109459591, cirq.CZ(q[29], q[30])**-0.1609201967232209],\n", - " cirq.rz(rads=1.3803105504474993*np.pi).on(q[1]),\n", - " cirq.rz(rads=-1.4164890128762133*np.pi).on(q[2]),\n", - " cirq.rz(rads=-0.7660705551087533*np.pi).on(q[3]),\n", - " cirq.rz(rads=0.7206822883243308*np.pi).on(q[4]),\n", - " cirq.rz(rads=1.3183560383893944*np.pi).on(q[5]),\n", - " cirq.rz(rads=-1.7588697612613406*np.pi).on(q[6]),\n", - " cirq.rz(rads=-0.6722145774944012*np.pi).on(q[8]),\n", - " cirq.rz(rads=0.7640224995020534*np.pi).on(q[9]),\n", - " cirq.rz(rads=0.5799079899133832*np.pi).on(q[10]),\n", - " cirq.rz(rads=-0.5876106525914674*np.pi).on(q[11]),\n", - " cirq.rz(rads=1.0843371101222938*np.pi).on(q[12]),\n", - " cirq.rz(rads=-1.1145948311678457*np.pi).on(q[13]),\n", - " cirq.rz(rads=0.7990757781248072*np.pi).on(q[14]),\n", - " cirq.rz(rads=-0.6778722373326689*np.pi).on(q[15]),\n", - " cirq.rz(rads=-1.6258237067659351*np.pi).on(q[16]),\n", - " cirq.rz(rads=1.6393364278658469*np.pi).on(q[17]),\n", - " cirq.rz(rads=0.7948295009385445*np.pi).on(q[19]),\n", - " cirq.rz(rads=-0.7387874202964381*np.pi).on(q[20]),\n", - " cirq.rz(rads=0.049341949396894985*np.pi).on(q[21]),\n", - " cirq.rz(rads=0.02393046182589869*np.pi).on(q[22]),\n", - " cirq.rz(rads=0.4710627118441926*np.pi).on(q[25]),\n", - " cirq.rz(rads=-0.5125060370940587*np.pi).on(q[26]),\n", - " cirq.rz(rads=2.1645856475342256*np.pi).on(q[27]),\n", - " cirq.rz(rads=-2.1397699914488673*np.pi).on(q[28]),\n", - " cirq.rz(rads=1.2773117920270392*np.pi).on(q[29]),\n", - " cirq.rz(rads=-1.1858252900139932*np.pi).on(q[30]),\n", - " cirq.X(q[0])**0.5,\n", - " cirq.Y(q[1])**0.5,\n", - " cirq.Y(q[2])**0.5,\n", - " [cirq.X(q[3])**0.5, cirq.H(q[3])**0.5, cirq.X(q[3])**-0.5],\n", - " [cirq.X(q[4])**0.5, cirq.H(q[4])**0.5, cirq.X(q[4])**-0.5],\n", - " [cirq.X(q[5])**0.5, cirq.H(q[5])**0.5, cirq.X(q[5])**-0.5],\n", - " cirq.Y(q[6])**0.5,\n", - " cirq.X(q[7])**0.5,\n", - " cirq.Y(q[8])**0.5,\n", - " [cirq.X(q[9])**0.5, cirq.H(q[9])**0.5, cirq.X(q[9])**-0.5],\n", - " [cirq.X(q[10])**0.5, cirq.H(q[10])**0.5, cirq.X(q[10])**-0.5],\n", - " [cirq.X(q[11])**0.5, cirq.H(q[11])**0.5, cirq.X(q[11])**-0.5],\n", - " cirq.Y(q[12])**0.5,\n", - " [cirq.X(q[13])**0.5, cirq.H(q[13])**0.5, cirq.X(q[13])**-0.5],\n", - " cirq.Y(q[14])**0.5,\n", - " [cirq.X(q[15])**0.5, cirq.H(q[15])**0.5, cirq.X(q[15])**-0.5],\n", - " [cirq.X(q[16])**0.5, cirq.H(q[16])**0.5, cirq.X(q[16])**-0.5],\n", - " cirq.X(q[17])**0.5,\n", - " cirq.Y(q[18])**0.5,\n", - " [cirq.X(q[19])**0.5, cirq.H(q[19])**0.5, cirq.X(q[19])**-0.5],\n", - " cirq.Y(q[20])**0.5,\n", - " cirq.Y(q[21])**0.5,\n", - " cirq.X(q[22])**0.5,\n", - " [cirq.X(q[23])**0.5, cirq.H(q[23])**0.5, cirq.X(q[23])**-0.5],\n", - " cirq.Y(q[24])**0.5,\n", - " cirq.Y(q[25])**0.5,\n", - " cirq.Y(q[26])**0.5,\n", - " [cirq.X(q[27])**0.5, cirq.H(q[27])**0.5, cirq.X(q[27])**-0.5],\n", - " cirq.Y(q[28])**0.5,\n", - " cirq.X(q[29])**0.5,\n", - " cirq.X(q[30])**0.5,\n", - " [cirq.X(q[31])**0.5, cirq.H(q[31])**0.5, cirq.X(q[31])**-0.5],\n", - " cirq.rz(rads=-5.435868884042397*np.pi).on(q[0]),\n", - " cirq.rz(rads=5.438497289344933*np.pi).on(q[1]),\n", - " cirq.rz(rads=-5.19048555249959*np.pi).on(q[4]),\n", - " cirq.rz(rads=5.170988862096221*np.pi).on(q[5]),\n", - " cirq.rz(rads=2.5333591271878086*np.pi).on(q[7]),\n", - " cirq.rz(rads=-2.4748096263683066*np.pi).on(q[8]),\n", - " cirq.rz(rads=-4.480708067260001*np.pi).on(q[9]),\n", - " cirq.rz(rads=4.525888267898699*np.pi).on(q[10]),\n", - " cirq.rz(rads=2.135954522972214*np.pi).on(q[13]),\n", - " cirq.rz(rads=-2.1822665205802965*np.pi).on(q[14]),\n", - " cirq.rz(rads=-3.7780476633662574*np.pi).on(q[15]),\n", - " cirq.rz(rads=3.817335880513747*np.pi).on(q[16]),\n", - " cirq.rz(rads=-2.8819419896554686*np.pi).on(q[18]),\n", - " cirq.rz(rads=2.9028256034569604*np.pi).on(q[19]),\n", - " cirq.rz(rads=0.7811374803446167*np.pi).on(q[20]),\n", - " cirq.rz(rads=-0.6780279413275597*np.pi).on(q[21]),\n", - " cirq.rz(rads=1.863573798571082*np.pi).on(q[22]),\n", - " cirq.rz(rads=-2.150412392135508*np.pi).on(q[23]),\n", - " cirq.rz(rads=2.2532274955007456*np.pi).on(q[24]),\n", - " cirq.rz(rads=-2.5360843333016145*np.pi).on(q[25]),\n", - " cirq.rz(rads=2.3134893226730737*np.pi).on(q[26]),\n", - " cirq.rz(rads=-2.238493420699622*np.pi).on(q[27]),\n", - " cirq.rz(rads=1.42630741834175*np.pi).on(q[30]),\n", - " cirq.rz(rads=-1.5270341780432073*np.pi).on(q[31]),\n", - " [cirq.ISWAP(q[0], q[1])**-0.969777854908417, cirq.CZ(q[0], q[1])**-0.21266743136622576],\n", - " [cirq.ISWAP(q[4], q[5])**-0.9959624181216683, cirq.CZ(q[4], q[5])**-0.17314460131772672],\n", - " [cirq.ISWAP(q[7], q[8])**-0.8242343706275942, cirq.CZ(q[7], q[8])**-0.15468164635790926],\n", - " [cirq.ISWAP(q[9], q[10])**-0.981653050634976, cirq.CZ(q[9], q[10])**-0.1933349989832593],\n", - " [cirq.ISWAP(q[13], q[14])**-0.9637565510028211, cirq.CZ(q[13], q[14])**-0.15186761578643612],\n", - " [cirq.ISWAP(q[15], q[16])**-1.0089894642925605, cirq.CZ(q[15], q[16])**-0.17298943435986638],\n", - " [cirq.ISWAP(q[18], q[19])**-0.9446726997534635, cirq.CZ(q[18], q[19])**-0.16140479146278733],\n", - " [cirq.ISWAP(q[20], q[21])**-0.980271915828302, cirq.CZ(q[20], q[21])**-0.16470994863165317],\n", - " [cirq.ISWAP(q[22], q[23])**-0.9290392306402181, cirq.CZ(q[22], q[23])**-0.1664963204791881],\n", - " [cirq.ISWAP(q[24], q[25])**-0.9486971380890047, cirq.CZ(q[24], q[25])**-0.1448964931003518],\n", - " [cirq.ISWAP(q[26], q[27])**-0.9789198374818319, cirq.CZ(q[26], q[27])**-0.14726825222820017],\n", - " [cirq.ISWAP(q[30], q[31])**-0.9389507566733047, cirq.CZ(q[30], q[31])**-0.1385796856074536],\n", - " cirq.rz(rads=5.79385605258612*np.pi).on(q[0]),\n", - " cirq.rz(rads=-5.791227647283584*np.pi).on(q[1]),\n", - " cirq.rz(rads=5.223139057027918*np.pi).on(q[4]),\n", - " cirq.rz(rads=-5.242635747431287*np.pi).on(q[5]),\n", - " cirq.rz(rads=-2.346072351850546*np.pi).on(q[7]),\n", - " cirq.rz(rads=2.404621852670048*np.pi).on(q[8]),\n", - " cirq.rz(rads=5.048199817882042*np.pi).on(q[9]),\n", - " cirq.rz(rads=-5.0030196172433445*np.pi).on(q[10]),\n", - " cirq.rz(rads=-2.6543362735839113*np.pi).on(q[13]),\n", - " cirq.rz(rads=2.6080242759758283*np.pi).on(q[14]),\n", - " cirq.rz(rads=3.9045088495271663*np.pi).on(q[15]),\n", - " cirq.rz(rads=-3.8652206323796765*np.pi).on(q[16]),\n", - " cirq.rz(rads=1.9770644223044243*np.pi).on(q[18]),\n", - " cirq.rz(rads=-1.9561808085029322*np.pi).on(q[19]),\n", - " cirq.rz(rads=-1.5516585295358842*np.pi).on(q[20]),\n", - " cirq.rz(rads=1.6547680685529413*np.pi).on(q[21]),\n", - " cirq.rz(rads=-1.8933072151541963*np.pi).on(q[22]),\n", - " cirq.rz(rads=1.6064686215897703*np.pi).on(q[23]),\n", - " cirq.rz(rads=-0.5449135022758093*np.pi).on(q[24]),\n", - " cirq.rz(rads=0.2620566644749405*np.pi).on(q[25]),\n", - " cirq.rz(rads=-2.3490397609251703*np.pi).on(q[26]),\n", - " cirq.rz(rads=2.424035662898622*np.pi).on(q[27]),\n", - " cirq.rz(rads=-1.8655832225378013*np.pi).on(q[30]),\n", - " cirq.rz(rads=1.7648564628363437*np.pi).on(q[31]),\n", - " [cirq.X(q[0])**0.5, cirq.H(q[0])**0.5, cirq.X(q[0])**-0.5],\n", - " cirq.X(q[1])**0.5,\n", - " cirq.X(q[2])**0.5,\n", - " cirq.Y(q[3])**0.5,\n", - " cirq.X(q[4])**0.5,\n", - " cirq.X(q[5])**0.5,\n", - " [cirq.X(q[6])**0.5, cirq.H(q[6])**0.5, cirq.X(q[6])**-0.5],\n", - " cirq.Y(q[7])**0.5,\n", - " [cirq.X(q[8])**0.5, cirq.H(q[8])**0.5, cirq.X(q[8])**-0.5],\n", - " cirq.Y(q[9])**0.5,\n", - " cirq.Y(q[10])**0.5,\n", - " cirq.X(q[11])**0.5,\n", - " [cirq.X(q[12])**0.5, cirq.H(q[12])**0.5, cirq.X(q[12])**-0.5],\n", - " cirq.X(q[13])**0.5,\n", - " cirq.X(q[14])**0.5,\n", - " cirq.Y(q[15])**0.5,\n", - " cirq.Y(q[16])**0.5,\n", - " cirq.Y(q[17])**0.5,\n", - " cirq.X(q[18])**0.5,\n", - " cirq.X(q[19])**0.5,\n", - " [cirq.X(q[20])**0.5, cirq.H(q[20])**0.5, cirq.X(q[20])**-0.5],\n", - " cirq.X(q[21])**0.5,\n", - " cirq.Y(q[22])**0.5,\n", - " cirq.X(q[23])**0.5,\n", - " [cirq.X(q[24])**0.5, cirq.H(q[24])**0.5, cirq.X(q[24])**-0.5],\n", - " [cirq.X(q[25])**0.5, cirq.H(q[25])**0.5, cirq.X(q[25])**-0.5],\n", - " cirq.X(q[26])**0.5,\n", - " cirq.Y(q[27])**0.5,\n", - " cirq.X(q[28])**0.5,\n", - " [cirq.X(q[29])**0.5, cirq.H(q[29])**0.5, cirq.X(q[29])**-0.5],\n", - " [cirq.X(q[30])**0.5, cirq.H(q[30])**0.5, cirq.X(q[30])**-0.5],\n", - " cirq.Y(q[31])**0.5,\n", - " cirq.rz(rads=-6.214223110662173*np.pi).on(q[3]),\n", - " cirq.rz(rads=6.24431588336413*np.pi).on(q[8]),\n", - " cirq.rz(rads=-6.196295096608877*np.pi).on(q[4]),\n", - " cirq.rz(rads=6.191833422443152*np.pi).on(q[9]),\n", - " cirq.rz(rads=-5.367868774756692*np.pi).on(q[5]),\n", - " cirq.rz(rads=5.257156584109544*np.pi).on(q[10]),\n", - " cirq.rz(rads=-1.6118072404137829*np.pi).on(q[6]),\n", - " cirq.rz(rads=1.5665192386902935*np.pi).on(q[11]),\n", - " cirq.rz(rads=-5.408932498710608*np.pi).on(q[12]),\n", - " cirq.rz(rads=5.396221422935972*np.pi).on(q[19]),\n", - " cirq.rz(rads=-3.2786928385561493*np.pi).on(q[13]),\n", - " cirq.rz(rads=3.339006443218924*np.pi).on(q[20]),\n", - " cirq.rz(rads=-5.390755870544794*np.pi).on(q[14]),\n", - " cirq.rz(rads=5.4172568990486605*np.pi).on(q[21]),\n", - " cirq.rz(rads=-5.620144773112766*np.pi).on(q[15]),\n", - " cirq.rz(rads=5.630469153514815*np.pi).on(q[22]),\n", - " cirq.rz(rads=4.367652291347506*np.pi).on(q[16]),\n", - " cirq.rz(rads=-3.9105776028384707*np.pi).on(q[23]),\n", - " cirq.rz(rads=7.0181466269225865*np.pi).on(q[25]),\n", - " cirq.rz(rads=-7.000766026200176*np.pi).on(q[29]),\n", - " cirq.rz(rads=5.700873278515409*np.pi).on(q[26]),\n", - " cirq.rz(rads=-5.683378195921049*np.pi).on(q[30]),\n", - " cirq.rz(rads=4.586335789661189*np.pi).on(q[27]),\n", - " cirq.rz(rads=-4.76537552715921*np.pi).on(q[31]),\n", - " [cirq.ISWAP(q[3], q[8])**-0.9582439102445623, cirq.CZ(q[3], q[8])**-0.16481196420780725],\n", - " [cirq.ISWAP(q[4], q[9])**-0.9924132629744455, cirq.CZ(q[4], q[9])**-0.17814200700009597],\n", - " [cirq.ISWAP(q[5], q[10])**-1.0126733526485854, cirq.CZ(q[5], q[10])**-0.18074346084220166],\n", - " [cirq.ISWAP(q[6], q[11])**-0.9737940569293067, cirq.CZ(q[6], q[11])**-0.17117494551642629],\n", - " [cirq.ISWAP(q[12], q[19])**-0.9744121515000286, cirq.CZ(q[12], q[19])**-0.16733875650098531],\n", - " [cirq.ISWAP(q[13], q[20])**-1.0121115249769066, cirq.CZ(q[13], q[20])**-0.16059979031178617],\n", - " [cirq.ISWAP(q[14], q[21])**-0.985003985982119, cirq.CZ(q[14], q[21])**-0.16606010863938203],\n", - " [cirq.ISWAP(q[15], q[22])**-0.9628319095031052, cirq.CZ(q[15], q[22])**-0.16339300450568622],\n", - " [cirq.ISWAP(q[16], q[23])**-0.9999941453695372, cirq.CZ(q[16], q[23])**-0.16477879415124544],\n", - " [cirq.ISWAP(q[25], q[29])**-1.0162656461553201, cirq.CZ(q[25], q[29])**-0.1624755502163923],\n", - " [cirq.ISWAP(q[26], q[30])**-0.9778318391639494, cirq.CZ(q[26], q[30])**-0.17777349355837574],\n", - " [cirq.ISWAP(q[27], q[31])**-0.881941750344955, cirq.CZ(q[27], q[31])**-0.18326258546194193],\n", - " cirq.rz(rads=6.89944406229822*np.pi).on(q[3]),\n", - " cirq.rz(rads=-6.869351289596263*np.pi).on(q[8]),\n", - " cirq.rz(rads=6.506615138479995*np.pi).on(q[4]),\n", - " cirq.rz(rads=-6.511076812645719*np.pi).on(q[9]),\n", - " cirq.rz(rads=6.150506057270183*np.pi).on(q[5]),\n", - " cirq.rz(rads=-6.2612182479173315*np.pi).on(q[10]),\n", - " cirq.rz(rads=2.4087294851133443*np.pi).on(q[6]),\n", - " cirq.rz(rads=-2.4540174868368334*np.pi).on(q[11]),\n", - " cirq.rz(rads=4.737705877923889*np.pi).on(q[12]),\n", - " cirq.rz(rads=-4.750416953698525*np.pi).on(q[19]),\n", - " cirq.rz(rads=2.9425087256630427*np.pi).on(q[13]),\n", - " cirq.rz(rads=-2.882195121000268*np.pi).on(q[20]),\n", - " cirq.rz(rads=4.466531408750767*np.pi).on(q[14]),\n", - " cirq.rz(rads=-4.440030380246901*np.pi).on(q[21]),\n", - " cirq.rz(rads=4.486471496440378*np.pi).on(q[15]),\n", - " cirq.rz(rads=-4.476147116038329*np.pi).on(q[22]),\n", - " cirq.rz(rads=-4.89701654221443*np.pi).on(q[16]),\n", - " cirq.rz(rads=5.354091230723465*np.pi).on(q[23]),\n", - " cirq.rz(rads=-5.629287261948809*np.pi).on(q[25]),\n", - " cirq.rz(rads=5.646667862671219*np.pi).on(q[29]),\n", - " cirq.rz(rads=-5.760627714067928*np.pi).on(q[26]),\n", - " cirq.rz(rads=5.778122796662288*np.pi).on(q[30]),\n", - " cirq.rz(rads=-3.985782702743221*np.pi).on(q[27]),\n", - " cirq.rz(rads=3.806742965245199*np.pi).on(q[31]),\n", - " cirq.X(q[0])**0.5,\n", - " cirq.Y(q[1])**0.5,\n", - " cirq.Y(q[2])**0.5,\n", - " [cirq.X(q[3])**0.5, cirq.H(q[3])**0.5, cirq.X(q[3])**-0.5],\n", - " [cirq.X(q[4])**0.5, cirq.H(q[4])**0.5, cirq.X(q[4])**-0.5],\n", - " cirq.Y(q[5])**0.5,\n", - " cirq.X(q[6])**0.5,\n", - " [cirq.X(q[7])**0.5, cirq.H(q[7])**0.5, cirq.X(q[7])**-0.5],\n", - " cirq.X(q[8])**0.5,\n", - " [cirq.X(q[9])**0.5, cirq.H(q[9])**0.5, cirq.X(q[9])**-0.5],\n", - " [cirq.X(q[10])**0.5, cirq.H(q[10])**0.5, cirq.X(q[10])**-0.5],\n", - " cirq.Y(q[11])**0.5,\n", - " cirq.Y(q[12])**0.5,\n", - " [cirq.X(q[13])**0.5, cirq.H(q[13])**0.5, cirq.X(q[13])**-0.5],\n", - " cirq.Y(q[14])**0.5,\n", - " [cirq.X(q[15])**0.5, cirq.H(q[15])**0.5, cirq.X(q[15])**-0.5],\n", - " [cirq.X(q[16])**0.5, cirq.H(q[16])**0.5, cirq.X(q[16])**-0.5],\n", - " cirq.X(q[17])**0.5,\n", - " cirq.Y(q[18])**0.5,\n", - " cirq.Y(q[19])**0.5,\n", - " cirq.X(q[20])**0.5,\n", - " cirq.Y(q[21])**0.5,\n", - " cirq.X(q[22])**0.5,\n", - " cirq.Y(q[23])**0.5,\n", - " cirq.X(q[24])**0.5,\n", - " cirq.X(q[25])**0.5,\n", - " cirq.Y(q[26])**0.5,\n", - " [cirq.X(q[27])**0.5, cirq.H(q[27])**0.5, cirq.X(q[27])**-0.5],\n", - " [cirq.X(q[28])**0.5, cirq.H(q[28])**0.5, cirq.X(q[28])**-0.5],\n", - " cirq.X(q[29])**0.5,\n", - " cirq.Y(q[30])**0.5,\n", - " cirq.X(q[31])**0.5,\n", - " cirq.rz(rads=-2.4865845873665364*np.pi).on(q[0]),\n", - " cirq.rz(rads=2.4890814068883764*np.pi).on(q[4]),\n", - " cirq.rz(rads=-2.4240781150731663*np.pi).on(q[1]),\n", - " cirq.rz(rads=2.419398026235366*np.pi).on(q[5]),\n", - " cirq.rz(rads=2.3861256785493166*np.pi).on(q[2]),\n", - " cirq.rz(rads=-2.392456163642626*np.pi).on(q[6]),\n", - " cirq.rz(rads=12.703597923836748*np.pi).on(q[7]),\n", - " cirq.rz(rads=-12.7869629079138*np.pi).on(q[13]),\n", - " cirq.rz(rads=12.184253063938954*np.pi).on(q[8]),\n", - " cirq.rz(rads=-12.108584830758572*np.pi).on(q[14]),\n", - " cirq.rz(rads=3.782562501914174*np.pi).on(q[9]),\n", - " cirq.rz(rads=-3.873596611893716*np.pi).on(q[15]),\n", - " cirq.rz(rads=4.772639843256901*np.pi).on(q[10]),\n", - " cirq.rz(rads=-4.771314675186062*np.pi).on(q[16]),\n", - " cirq.rz(rads=8.49593730829863*np.pi).on(q[11]),\n", - " cirq.rz(rads=-8.479908941862229*np.pi).on(q[17]),\n", - " cirq.rz(rads=1.639481743922408*np.pi).on(q[18]),\n", - " cirq.rz(rads=-1.9319083897827265*np.pi).on(q[24]),\n", - " cirq.rz(rads=9.60223181672896*np.pi).on(q[19]),\n", - " cirq.rz(rads=-9.605639326034064*np.pi).on(q[25]),\n", - " cirq.rz(rads=6.330499004273446*np.pi).on(q[20]),\n", - " cirq.rz(rads=-6.2177071019033425*np.pi).on(q[26]),\n", - " cirq.rz(rads=9.851852381617888*np.pi).on(q[21]),\n", - " cirq.rz(rads=-9.926465199012979*np.pi).on(q[27]),\n", - " cirq.rz(rads=6.431104618355057*np.pi).on(q[22]),\n", - " cirq.rz(rads=-6.38660616379351*np.pi).on(q[28]),\n", - " [cirq.ISWAP(q[0], q[4])**-0.9984812470539374, cirq.CZ(q[0], q[4])**-0.17233320530255947],\n", - " [cirq.ISWAP(q[1], q[5])**-1.0282887997603027, cirq.CZ(q[1], q[5])**-0.16427011854127802],\n", - " [cirq.ISWAP(q[2], q[6])**-0.9575293160506735, cirq.CZ(q[2], q[6])**-0.21522732166595954],\n", - " [cirq.ISWAP(q[7], q[13])**-0.933831313649303, cirq.CZ(q[7], q[13])**-0.1583933739924931],\n", - " [cirq.ISWAP(q[8], q[14])**-0.9390847780661252, cirq.CZ(q[8], q[14])**-0.17144555428591543],\n", - " [cirq.ISWAP(q[9], q[15])**-1.0209160715892363, cirq.CZ(q[9], q[15])**-0.14849009270439747],\n", - " [cirq.ISWAP(q[10], q[16])**-1.0287988330229174, cirq.CZ(q[10], q[16])**-0.1385888562342036],\n", - " [cirq.ISWAP(q[11], q[17])**-1.0128317439690167, cirq.CZ(q[11], q[17])**-0.1669440143200578],\n", - " [cirq.ISWAP(q[18], q[24])**-0.8044060664115181, cirq.CZ(q[18], q[24])**-0.10552370353526683],\n", - " [cirq.ISWAP(q[19], q[25])**-0.9705721508169989, cirq.CZ(q[19], q[25])**-0.15402718033611607],\n", - " [cirq.ISWAP(q[20], q[26])**-0.989459174023089, cirq.CZ(q[20], q[26])**-0.16509252502035418],\n", - " [cirq.ISWAP(q[21], q[27])**-0.9618960066063004, cirq.CZ(q[21], q[27])**-0.15722561327755682],\n", - " [cirq.ISWAP(q[22], q[28])**-1.0052002427791902, cirq.CZ(q[22], q[28])**-0.16175415193774326],\n", - " cirq.rz(rads=2.557874433792943*np.pi).on(q[0]),\n", - " cirq.rz(rads=-2.555377614271102*np.pi).on(q[4]),\n", - " cirq.rz(rads=1.9789952328325573*np.pi).on(q[1]),\n", - " cirq.rz(rads=-1.9836753216703575*np.pi).on(q[5]),\n", - " cirq.rz(rads=-2.805807436079691*np.pi).on(q[2]),\n", - " cirq.rz(rads=2.7994769509863815*np.pi).on(q[6]),\n", - " cirq.rz(rads=-12.477250219528523*np.pi).on(q[7]),\n", - " cirq.rz(rads=12.39388523545147*np.pi).on(q[13]),\n", - " cirq.rz(rads=-11.31088974563283*np.pi).on(q[8]),\n", - " cirq.rz(rads=11.386557978813212*np.pi).on(q[14]),\n", - " cirq.rz(rads=-5.4898636407973544*np.pi).on(q[9]),\n", - " cirq.rz(rads=5.398829530817813*np.pi).on(q[15]),\n", - " cirq.rz(rads=-5.863871460773714*np.pi).on(q[10]),\n", - " cirq.rz(rads=5.8651966288445525*np.pi).on(q[16]),\n", - " cirq.rz(rads=-8.850693052252502*np.pi).on(q[11]),\n", - " cirq.rz(rads=8.866721418688904*np.pi).on(q[17]),\n", - " cirq.rz(rads=-2.40381552479658*np.pi).on(q[18]),\n", - " cirq.rz(rads=2.1113888789362614*np.pi).on(q[24]),\n", - " cirq.rz(rads=-10.03456101076628*np.pi).on(q[19]),\n", - " cirq.rz(rads=10.031153501461176*np.pi).on(q[25]),\n", - " cirq.rz(rads=-5.434421382024706*np.pi).on(q[20]),\n", - " cirq.rz(rads=5.54721328439481*np.pi).on(q[26]),\n", - " cirq.rz(rads=-9.17988634353845*np.pi).on(q[21]),\n", - " cirq.rz(rads=9.10527352614336*np.pi).on(q[27]),\n", - " cirq.rz(rads=-6.5670035038476025*np.pi).on(q[22]),\n", - " cirq.rz(rads=6.61150195840915*np.pi).on(q[28]),\n", - " cirq.Y(q[0])**0.5,\n", - " cirq.X(q[1])**0.5,\n", - " [cirq.X(q[2])**0.5, cirq.H(q[2])**0.5, cirq.X(q[2])**-0.5],\n", - " cirq.X(q[3])**0.5,\n", - " cirq.Y(q[4])**0.5,\n", - " cirq.X(q[5])**0.5,\n", - " cirq.Y(q[6])**0.5,\n", - " cirq.Y(q[7])**0.5,\n", - " [cirq.X(q[8])**0.5, cirq.H(q[8])**0.5, cirq.X(q[8])**-0.5],\n", - " cirq.X(q[9])**0.5,\n", - " cirq.Y(q[10])**0.5,\n", - " cirq.X(q[11])**0.5,\n", - " [cirq.X(q[12])**0.5, cirq.H(q[12])**0.5, cirq.X(q[12])**-0.5],\n", - " cirq.X(q[13])**0.5,\n", - " cirq.X(q[14])**0.5,\n", - " cirq.Y(q[15])**0.5,\n", - " cirq.X(q[16])**0.5,\n", - " cirq.Y(q[17])**0.5,\n", - " cirq.X(q[18])**0.5,\n", - " cirq.X(q[19])**0.5,\n", - " cirq.Y(q[20])**0.5,\n", - " cirq.X(q[21])**0.5,\n", - " cirq.Y(q[22])**0.5,\n", - " cirq.X(q[23])**0.5,\n", - " cirq.Y(q[24])**0.5,\n", - " cirq.Y(q[25])**0.5,\n", - " [cirq.X(q[26])**0.5, cirq.H(q[26])**0.5, cirq.X(q[26])**-0.5],\n", - " cirq.Y(q[27])**0.5,\n", - " cirq.X(q[28])**0.5,\n", - " cirq.Y(q[29])**0.5,\n", - " [cirq.X(q[30])**0.5, cirq.H(q[30])**0.5, cirq.X(q[30])**-0.5],\n", - " cirq.Y(q[31])**0.5,\n", - " cirq.rz(rads=-13.031870303178678*np.pi).on(q[1]),\n", - " cirq.rz(rads=12.995691840749963*np.pi).on(q[2]),\n", - " cirq.rz(rads=5.381139169744492*np.pi).on(q[3]),\n", - " cirq.rz(rads=-5.426527436528915*np.pi).on(q[4]),\n", - " cirq.rz(rads=-6.86899750135751*np.pi).on(q[5]),\n", - " cirq.rz(rads=6.428483778485565*np.pi).on(q[6]),\n", - " cirq.rz(rads=5.16073733770325*np.pi).on(q[8]),\n", - " cirq.rz(rads=-5.068929415695599*np.pi).on(q[9]),\n", - " cirq.rz(rads=-0.7176740888019262*np.pi).on(q[10]),\n", - " cirq.rz(rads=0.7099714261238419*np.pi).on(q[11]),\n", - " cirq.rz(rads=-4.694750980814187*np.pi).on(q[12]),\n", - " cirq.rz(rads=4.664493259768636*np.pi).on(q[13]),\n", - " cirq.rz(rads=-4.701251133883051*np.pi).on(q[14]),\n", - " cirq.rz(rads=4.82245467467519*np.pi).on(q[15]),\n", - " cirq.rz(rads=3.5368943862129347*np.pi).on(q[16]),\n", - " cirq.rz(rads=-3.523381665113022*np.pi).on(q[17]),\n", - " cirq.rz(rads=-1.113423877718808*np.pi).on(q[19]),\n", - " cirq.rz(rads=1.1694659583609144*np.pi).on(q[20]),\n", - " cirq.rz(rads=-3.587134633961795*np.pi).on(q[21]),\n", - " cirq.rz(rads=3.6604070451845887*np.pi).on(q[22]),\n", - " cirq.rz(rads=-5.2921262439699195*np.pi).on(q[25]),\n", - " cirq.rz(rads=5.250682918720053*np.pi).on(q[26]),\n", - " cirq.rz(rads=-6.349327548997941*np.pi).on(q[27]),\n", - " cirq.rz(rads=6.3741432050833*np.pi).on(q[28]),\n", - " cirq.rz(rads=-7.486795435376533*np.pi).on(q[29]),\n", - " cirq.rz(rads=7.578281937389579*np.pi).on(q[30]),\n", - " [cirq.ISWAP(q[1], q[2])**-0.9570391651387101, cirq.CZ(q[1], q[2])**-0.17511624695473224],\n", - " [cirq.ISWAP(q[3], q[4])**-1.0141403689884423, cirq.CZ(q[3], q[4])**-0.17046670168281958],\n", - " [cirq.ISWAP(q[5], q[6])**-1.013386784909492, cirq.CZ(q[5], q[6])**1.8378144783929071],\n", - " [cirq.ISWAP(q[8], q[9])**-1.009868884178167, cirq.CZ(q[8], q[9])**-0.16552586798219657],\n", - " [cirq.ISWAP(q[10], q[11])**-0.973165668451805, cirq.CZ(q[10], q[11])**-0.1627822085708043],\n", - " [cirq.ISWAP(q[12], q[13])**-0.9967062367293744, cirq.CZ(q[12], q[13])**-0.16320564272090876],\n", - " [cirq.ISWAP(q[14], q[15])**-0.9733750299685556, cirq.CZ(q[14], q[15])**-0.16091330726740966],\n", - " [cirq.ISWAP(q[16], q[17])**-0.9794265878513263, cirq.CZ(q[16], q[17])**-0.16849356010919606],\n", - " [cirq.ISWAP(q[19], q[20])**-0.9375857698276336, cirq.CZ(q[19], q[20])**-0.144908770657389],\n", - " [cirq.ISWAP(q[21], q[22])**-0.9769678680475263, cirq.CZ(q[21], q[22])**-0.16332605888196952],\n", - " [cirq.ISWAP(q[25], q[26])**-0.9656924944561719, cirq.CZ(q[25], q[26])**-0.1474408404408433],\n", - " [cirq.ISWAP(q[27], q[28])**-0.9998377482375511, cirq.CZ(q[27], q[28])**-0.15252451837046574],\n", - " [cirq.ISWAP(q[29], q[30])**-0.9878279109459591, cirq.CZ(q[29], q[30])**-0.1609201967232209],\n", - " cirq.rz(rads=12.332310550447476*np.pi).on(q[1]),\n", - " cirq.rz(rads=-12.36848901287619*np.pi).on(q[2]),\n", - " cirq.rz(rads=-4.910070555108823*np.pi).on(q[3]),\n", - " cirq.rz(rads=4.864682288324399*np.pi).on(q[4]),\n", - " cirq.rz(rads=7.534356038389369*np.pi).on(q[5]),\n", - " cirq.rz(rads=-7.974869761261314*np.pi).on(q[6]),\n", - " cirq.rz(rads=-5.556214577494324*np.pi).on(q[8]),\n", - " cirq.rz(rads=5.648022499501975*np.pi).on(q[9]),\n", - " cirq.rz(rads=1.3199079899133674*np.pi).on(q[10]),\n", - " cirq.rz(rads=-1.3276106525914517*np.pi).on(q[11]),\n", - " cirq.rz(rads=4.932337110122265*np.pi).on(q[12]),\n", - " cirq.rz(rads=-4.9625948311678165*np.pi).on(q[13]),\n", - " cirq.rz(rads=4.499075778124728*np.pi).on(q[14]),\n", - " cirq.rz(rads=-4.37787223733259*np.pi).on(q[15]),\n", - " cirq.rz(rads=-5.325823706765988*np.pi).on(q[16]),\n", - " cirq.rz(rads=5.3393364278658995*np.pi).on(q[17]),\n", - " cirq.rz(rads=1.682829500938578*np.pi).on(q[19]),\n", - " cirq.rz(rads=-1.6267874202964716*np.pi).on(q[20]),\n", - " cirq.rz(rads=3.305341949396799*np.pi).on(q[21]),\n", - " cirq.rz(rads=-3.232069538174005*np.pi).on(q[22]),\n", - " cirq.rz(rads=5.3550627118441145*np.pi).on(q[25]),\n", - " cirq.rz(rads=-5.39650603709398*np.pi).on(q[26]),\n", - " cirq.rz(rads=8.163182357684818*np.pi).on(q[27]),\n", - " cirq.rz(rads=-8.138366701599459*np.pi).on(q[28]),\n", - " cirq.rz(rads=7.345311792027093*np.pi).on(q[29]),\n", - " cirq.rz(rads=-7.253825290014047*np.pi).on(q[30]),\n", - " [cirq.X(q[0])**0.5, cirq.H(q[0])**0.5, cirq.X(q[0])**-0.5],\n", - " cirq.Y(q[1])**0.5,\n", - " cirq.Y(q[2])**0.5,\n", - " [cirq.X(q[3])**0.5, cirq.H(q[3])**0.5, cirq.X(q[3])**-0.5],\n", - " cirq.X(q[4])**0.5,\n", - " [cirq.X(q[5])**0.5, cirq.H(q[5])**0.5, cirq.X(q[5])**-0.5],\n", - " [cirq.X(q[6])**0.5, cirq.H(q[6])**0.5, cirq.X(q[6])**-0.5],\n", - " [cirq.X(q[7])**0.5, cirq.H(q[7])**0.5, cirq.X(q[7])**-0.5],\n", - " cirq.X(q[8])**0.5,\n", - " cirq.Y(q[9])**0.5,\n", - " cirq.X(q[10])**0.5,\n", - " cirq.Y(q[11])**0.5,\n", - " cirq.X(q[12])**0.5,\n", - " [cirq.X(q[13])**0.5, cirq.H(q[13])**0.5, cirq.X(q[13])**-0.5],\n", - " cirq.Y(q[14])**0.5,\n", - " [cirq.X(q[15])**0.5, cirq.H(q[15])**0.5, cirq.X(q[15])**-0.5],\n", - " cirq.Y(q[16])**0.5,\n", - " cirq.X(q[17])**0.5,\n", - " cirq.Y(q[18])**0.5,\n", - " cirq.Y(q[19])**0.5,\n", - " cirq.X(q[20])**0.5,\n", - " [cirq.X(q[21])**0.5, cirq.H(q[21])**0.5, cirq.X(q[21])**-0.5],\n", - " cirq.X(q[22])**0.5,\n", - " [cirq.X(q[23])**0.5, cirq.H(q[23])**0.5, cirq.X(q[23])**-0.5],\n", - " cirq.X(q[24])**0.5,\n", - " cirq.X(q[25])**0.5,\n", - " cirq.X(q[26])**0.5,\n", - " cirq.X(q[27])**0.5,\n", - " [cirq.X(q[28])**0.5, cirq.H(q[28])**0.5, cirq.X(q[28])**-0.5],\n", - " [cirq.X(q[29])**0.5, cirq.H(q[29])**0.5, cirq.X(q[29])**-0.5],\n", - " cirq.Y(q[30])**0.5,\n", - " cirq.X(q[31])**0.5,\n", - " cirq.rz(rads=-17.867868884042345*np.pi).on(q[0]),\n", - " cirq.rz(rads=17.87049728934488*np.pi).on(q[1]),\n", - " cirq.rz(rads=-17.622485552499665*np.pi).on(q[4]),\n", - " cirq.rz(rads=17.602988862096296*np.pi).on(q[5]),\n", - " cirq.rz(rads=7.565359127187911*np.pi).on(q[7]),\n", - " cirq.rz(rads=-7.506809626368408*np.pi).on(q[8]),\n", - " cirq.rz(rads=-15.28470806725993*np.pi).on(q[9]),\n", - " cirq.rz(rads=15.329888267898626*np.pi).on(q[10]),\n", - " cirq.rz(rads=7.019954522972137*np.pi).on(q[13]),\n", - " cirq.rz(rads=-7.066266520580219*np.pi).on(q[14]),\n", - " cirq.rz(rads=-13.842047663366333*np.pi).on(q[15]),\n", - " cirq.rz(rads=13.881335880513822*np.pi).on(q[16]),\n", - " cirq.rz(rads=-7.765941989655391*np.pi).on(q[18]),\n", - " cirq.rz(rads=7.786825603456883*np.pi).on(q[19]),\n", - " cirq.rz(rads=3.001137480344569*np.pi).on(q[20]),\n", - " cirq.rz(rads=-2.8980279413275123*np.pi).on(q[21]),\n", - " cirq.rz(rads=5.563573798571002*np.pi).on(q[22]),\n", - " cirq.rz(rads=-5.8504123921354285*np.pi).on(q[23]),\n", - " cirq.rz(rads=5.509227495500649*np.pi).on(q[24]),\n", - " cirq.rz(rads=-5.792084333301517*np.pi).on(q[25]),\n", - " cirq.rz(rads=7.868086032823645*np.pi).on(q[26]),\n", - " cirq.rz(rads=-7.793090130850194*np.pi).on(q[27]),\n", - " cirq.rz(rads=4.3863074183418185*np.pi).on(q[30]),\n", - " cirq.rz(rads=-4.487034178043276*np.pi).on(q[31]),\n", - " [cirq.ISWAP(q[0], q[1])**-0.969777854908417, cirq.CZ(q[0], q[1])**-0.21266743136622576],\n", - " [cirq.ISWAP(q[4], q[5])**-0.9959624181216683, cirq.CZ(q[4], q[5])**-0.17314460131772672],\n", - " [cirq.ISWAP(q[7], q[8])**-0.8242343706275942, cirq.CZ(q[7], q[8])**-0.15468164635790926],\n", - " [cirq.ISWAP(q[9], q[10])**-0.981653050634976, cirq.CZ(q[9], q[10])**-0.1933349989832593],\n", - " [cirq.ISWAP(q[13], q[14])**-0.9637565510028211, cirq.CZ(q[13], q[14])**-0.15186761578643612],\n", - " [cirq.ISWAP(q[15], q[16])**-1.0089894642925605, cirq.CZ(q[15], q[16])**-0.17298943435986638],\n", - " [cirq.ISWAP(q[18], q[19])**-0.9446726997534635, cirq.CZ(q[18], q[19])**-0.16140479146278733],\n", - " [cirq.ISWAP(q[20], q[21])**-0.980271915828302, cirq.CZ(q[20], q[21])**-0.16470994863165317],\n", - " [cirq.ISWAP(q[22], q[23])**-0.9290392306402181, cirq.CZ(q[22], q[23])**-0.1664963204791881],\n", - " [cirq.ISWAP(q[24], q[25])**-0.9486971380890047, cirq.CZ(q[24], q[25])**-0.1448964931003518],\n", - " [cirq.ISWAP(q[26], q[27])**-0.9789198374818319, cirq.CZ(q[26], q[27])**-0.14726825222820017],\n", - " [cirq.ISWAP(q[30], q[31])**-0.9389507566733047, cirq.CZ(q[30], q[31])**-0.1385796856074536],\n", - " cirq.rz(rads=18.225856052586064*np.pi).on(q[0]),\n", - " cirq.rz(rads=-18.223227647283533*np.pi).on(q[1]),\n", - " cirq.rz(rads=17.655139057028*np.pi).on(q[4]),\n", - " cirq.rz(rads=-17.674635747431363*np.pi).on(q[5]),\n", - " cirq.rz(rads=-7.378072351850649*np.pi).on(q[7]),\n", - " cirq.rz(rads=7.436621852670151*np.pi).on(q[8]),\n", - " cirq.rz(rads=15.852199817881967*np.pi).on(q[9]),\n", - " cirq.rz(rads=-15.80701961724327*np.pi).on(q[10]),\n", - " cirq.rz(rads=-7.538336273583833*np.pi).on(q[13]),\n", - " cirq.rz(rads=7.492024275975751*np.pi).on(q[14]),\n", - " cirq.rz(rads=13.968508849527241*np.pi).on(q[15]),\n", - " cirq.rz(rads=-13.929220632379753*np.pi).on(q[16]),\n", - " cirq.rz(rads=6.861064422304347*np.pi).on(q[18]),\n", - " cirq.rz(rads=-6.840180808502855*np.pi).on(q[19]),\n", - " cirq.rz(rads=-3.771658529535837*np.pi).on(q[20]),\n", - " cirq.rz(rads=3.874768068552894*np.pi).on(q[21]),\n", - " cirq.rz(rads=-5.593307215154117*np.pi).on(q[22]),\n", - " cirq.rz(rads=5.30646862158969*np.pi).on(q[23]),\n", - " cirq.rz(rads=-3.800913502275713*np.pi).on(q[24]),\n", - " cirq.rz(rads=3.5180566644748446*np.pi).on(q[25]),\n", - " cirq.rz(rads=-7.9036364710757425*np.pi).on(q[26]),\n", - " cirq.rz(rads=7.978632373049194*np.pi).on(q[27]),\n", - " cirq.rz(rads=-4.825583222537869*np.pi).on(q[30]),\n", - " cirq.rz(rads=4.724856462836412*np.pi).on(q[31]),\n", - " cirq.X(q[0])**0.5,\n", - " [cirq.X(q[1])**0.5, cirq.H(q[1])**0.5, cirq.X(q[1])**-0.5],\n", - " [cirq.X(q[2])**0.5, cirq.H(q[2])**0.5, cirq.X(q[2])**-0.5],\n", - " cirq.Y(q[3])**0.5,\n", - " [cirq.X(q[4])**0.5, cirq.H(q[4])**0.5, cirq.X(q[4])**-0.5],\n", - " cirq.X(q[5])**0.5,\n", - " cirq.Y(q[6])**0.5,\n", - " cirq.X(q[7])**0.5,\n", - " cirq.Y(q[8])**0.5,\n", - " cirq.X(q[9])**0.5,\n", - " cirq.Y(q[10])**0.5,\n", - " cirq.X(q[11])**0.5,\n", - " [cirq.X(q[12])**0.5, cirq.H(q[12])**0.5, cirq.X(q[12])**-0.5],\n", - " cirq.Y(q[13])**0.5,\n", - " [cirq.X(q[14])**0.5, cirq.H(q[14])**0.5, cirq.X(q[14])**-0.5],\n", - " cirq.Y(q[15])**0.5,\n", - " [cirq.X(q[16])**0.5, cirq.H(q[16])**0.5, cirq.X(q[16])**-0.5],\n", - " [cirq.X(q[17])**0.5, cirq.H(q[17])**0.5, cirq.X(q[17])**-0.5],\n", - " [cirq.X(q[18])**0.5, cirq.H(q[18])**0.5, cirq.X(q[18])**-0.5],\n", - " [cirq.X(q[19])**0.5, cirq.H(q[19])**0.5, cirq.X(q[19])**-0.5],\n", - " [cirq.X(q[20])**0.5, cirq.H(q[20])**0.5, cirq.X(q[20])**-0.5],\n", - " cirq.Y(q[21])**0.5,\n", - " cirq.Y(q[22])**0.5,\n", - " cirq.Y(q[23])**0.5,\n", - " [cirq.X(q[24])**0.5, cirq.H(q[24])**0.5, cirq.X(q[24])**-0.5],\n", - " cirq.Y(q[25])**0.5,\n", - " [cirq.X(q[26])**0.5, cirq.H(q[26])**0.5, cirq.X(q[26])**-0.5],\n", - " [cirq.X(q[27])**0.5, cirq.H(q[27])**0.5, cirq.X(q[27])**-0.5],\n", - " cirq.Y(q[28])**0.5,\n", - " cirq.Y(q[29])**0.5,\n", - " [cirq.X(q[30])**0.5, cirq.H(q[30])**0.5, cirq.X(q[30])**-0.5],\n", - " [cirq.X(q[31])**0.5, cirq.H(q[31])**0.5, cirq.X(q[31])**-0.5],\n", - " cirq.rz(rads=-16.574223110662086*np.pi).on(q[3]),\n", - " cirq.rz(rads=16.60431588336404*np.pi).on(q[8]),\n", - " cirq.rz(rads=-15.816295096608934*np.pi).on(q[4]),\n", - " cirq.rz(rads=15.811833422443211*np.pi).on(q[9]),\n", - " cirq.rz(rads=-13.3598687747566*np.pi).on(q[5]),\n", - " cirq.rz(rads=13.249156584109453*np.pi).on(q[10]),\n", - " cirq.rz(rads=-4.127807240413703*np.pi).on(q[6]),\n", - " cirq.rz(rads=4.082519238690215*np.pi).on(q[11]),\n", - " cirq.rz(rads=-13.252932498710596*np.pi).on(q[12]),\n", - " cirq.rz(rads=13.24022142293596*np.pi).on(q[19]),\n", - " cirq.rz(rads=-8.162692838556204*np.pi).on(q[13]),\n", - " cirq.rz(rads=8.223006443218978*np.pi).on(q[20]),\n", - " cirq.rz(rads=-12.938755870544817*np.pi).on(q[14]),\n", - " cirq.rz(rads=12.965256899048683*np.pi).on(q[21]),\n", - " cirq.rz(rads=-12.724144773112773*np.pi).on(q[15]),\n", - " cirq.rz(rads=12.73446915351482*np.pi).on(q[22]),\n", - " cirq.rz(rads=11.027652291347495*np.pi).on(q[16]),\n", - " cirq.rz(rads=-10.570577602838458*np.pi).on(q[23]),\n", - " cirq.rz(rads=17.082146626922658*np.pi).on(q[25]),\n", - " cirq.rz(rads=-17.06476602620025*np.pi).on(q[29]),\n", - " cirq.rz(rads=14.58087327851535*np.pi).on(q[26]),\n", - " cirq.rz(rads=-14.563378195920992*np.pi).on(q[30]),\n", - " cirq.rz(rads=10.871739079510629*np.pi).on(q[27]),\n", - " cirq.rz(rads=-11.050778817008649*np.pi).on(q[31]),\n", - " [cirq.ISWAP(q[3], q[8])**-0.9582439102445623, cirq.CZ(q[3], q[8])**-0.16481196420780725],\n", - " [cirq.ISWAP(q[4], q[9])**-0.9924132629744455, cirq.CZ(q[4], q[9])**-0.17814200700009597],\n", - " [cirq.ISWAP(q[5], q[10])**-1.0126733526485854, cirq.CZ(q[5], q[10])**-0.18074346084220166],\n", - " [cirq.ISWAP(q[6], q[11])**-0.9737940569293067, cirq.CZ(q[6], q[11])**-0.17117494551642629],\n", - " [cirq.ISWAP(q[12], q[19])**-0.9744121515000286, cirq.CZ(q[12], q[19])**-0.16733875650098531],\n", - " [cirq.ISWAP(q[13], q[20])**-1.0121115249769066, cirq.CZ(q[13], q[20])**-0.16059979031178617],\n", - " [cirq.ISWAP(q[14], q[21])**-0.985003985982119, cirq.CZ(q[14], q[21])**-0.16606010863938203],\n", - " [cirq.ISWAP(q[15], q[22])**-0.9628319095031052, cirq.CZ(q[15], q[22])**-0.16339300450568622],\n", - " [cirq.ISWAP(q[16], q[23])**-0.9999941453695372, cirq.CZ(q[16], q[23])**-0.16477879415124544],\n", - " [cirq.ISWAP(q[25], q[29])**-1.0162656461553201, cirq.CZ(q[25], q[29])**-0.1624755502163923],\n", - " [cirq.ISWAP(q[26], q[30])**-0.9778318391639494, cirq.CZ(q[26], q[30])**-0.17777349355837574],\n", - " [cirq.ISWAP(q[27], q[31])**-0.881941750344955, cirq.CZ(q[27], q[31])**-0.18326258546194193],\n", - " cirq.rz(rads=17.259444062298133*np.pi).on(q[3]),\n", - " cirq.rz(rads=-17.229351289596174*np.pi).on(q[8]),\n", - " cirq.rz(rads=16.126615138480055*np.pi).on(q[4]),\n", - " cirq.rz(rads=-16.131076812645777*np.pi).on(q[9]),\n", - " cirq.rz(rads=14.142506057270092*np.pi).on(q[5]),\n", - " cirq.rz(rads=-14.253218247917241*np.pi).on(q[10]),\n", - " cirq.rz(rads=4.924729485113265*np.pi).on(q[6]),\n", - " cirq.rz(rads=-4.9700174868367535*np.pi).on(q[11]),\n", - " cirq.rz(rads=12.581705877923879*np.pi).on(q[12]),\n", - " cirq.rz(rads=-12.594416953698515*np.pi).on(q[19]),\n", - " cirq.rz(rads=7.826508725663096*np.pi).on(q[13]),\n", - " cirq.rz(rads=-7.7661951210003215*np.pi).on(q[20]),\n", - " cirq.rz(rads=12.014531408750791*np.pi).on(q[14]),\n", - " cirq.rz(rads=-11.988030380246926*np.pi).on(q[21]),\n", - " cirq.rz(rads=11.590471496440383*np.pi).on(q[15]),\n", - " cirq.rz(rads=-11.580147116038336*np.pi).on(q[22]),\n", - " cirq.rz(rads=-11.55701654221442*np.pi).on(q[16]),\n", - " cirq.rz(rads=12.014091230723457*np.pi).on(q[23]),\n", - " cirq.rz(rads=-15.693287261948884*np.pi).on(q[25]),\n", - " cirq.rz(rads=15.710667862671292*np.pi).on(q[29]),\n", - " cirq.rz(rads=-14.640627714067872*np.pi).on(q[26]),\n", - " cirq.rz(rads=14.658122796662232*np.pi).on(q[30]),\n", - " cirq.rz(rads=-10.271185992592658*np.pi).on(q[27]),\n", - " cirq.rz(rads=10.092146255094638*np.pi).on(q[31]),\n", - " [cirq.X(q[0])**0.5, cirq.H(q[0])**0.5, cirq.X(q[0])**-0.5],\n", - " cirq.Y(q[1])**0.5,\n", - " cirq.Y(q[2])**0.5,\n", - " [cirq.X(q[3])**0.5, cirq.H(q[3])**0.5, cirq.X(q[3])**-0.5],\n", - " cirq.Y(q[4])**0.5,\n", - " cirq.Y(q[5])**0.5,\n", - " [cirq.X(q[6])**0.5, cirq.H(q[6])**0.5, cirq.X(q[6])**-0.5],\n", - " [cirq.X(q[7])**0.5, cirq.H(q[7])**0.5, cirq.X(q[7])**-0.5],\n", - " cirq.X(q[8])**0.5,\n", - " [cirq.X(q[9])**0.5, cirq.H(q[9])**0.5, cirq.X(q[9])**-0.5],\n", - " cirq.X(q[10])**0.5,\n", - " cirq.Y(q[11])**0.5,\n", - " cirq.X(q[12])**0.5,\n", - " cirq.X(q[13])**0.5,\n", - " cirq.Y(q[14])**0.5,\n", - " cirq.X(q[15])**0.5,\n", - " cirq.Y(q[16])**0.5,\n", - " cirq.X(q[17])**0.5,\n", - " cirq.Y(q[18])**0.5,\n", - " cirq.Y(q[19])**0.5,\n", - " cirq.X(q[20])**0.5,\n", - " cirq.X(q[21])**0.5,\n", - " cirq.X(q[22])**0.5,\n", - " [cirq.X(q[23])**0.5, cirq.H(q[23])**0.5, cirq.X(q[23])**-0.5],\n", - " cirq.X(q[24])**0.5,\n", - " [cirq.X(q[25])**0.5, cirq.H(q[25])**0.5, cirq.X(q[25])**-0.5],\n", - " cirq.Y(q[26])**0.5,\n", - " cirq.X(q[27])**0.5,\n", - " cirq.X(q[28])**0.5,\n", - " cirq.X(q[29])**0.5,\n", - " cirq.Y(q[30])**0.5,\n", - " cirq.Y(q[31])**0.5,\n", - " cirq.rz(rads=-4.706584587366488*np.pi).on(q[0]),\n", - " cirq.rz(rads=4.709081406888329*np.pi).on(q[4]),\n", - " cirq.rz(rads=-4.644078115073251*np.pi).on(q[1]),\n", - " cirq.rz(rads=4.639398026235451*np.pi).on(q[5]),\n", - " cirq.rz(rads=4.902125678549236*np.pi).on(q[2]),\n", - " cirq.rz(rads=-4.908456163642546*np.pi).on(q[6]),\n", - " cirq.rz(rads=26.023597923836856*np.pi).on(q[7]),\n", - " cirq.rz(rads=-26.106962907913907*np.pi).on(q[13]),\n", - " cirq.rz(rads=25.356253063938887*np.pi).on(q[8]),\n", - " cirq.rz(rads=-25.2805848307585*np.pi).on(q[14]),\n", - " cirq.rz(rads=8.370562501914259*np.pi).on(q[9]),\n", - " cirq.rz(rads=-8.461596611893802*np.pi).on(q[15]),\n", - " cirq.rz(rads=10.100639843256841*np.pi).on(q[10]),\n", - " cirq.rz(rads=-10.099314675186001*np.pi).on(q[16]),\n", - " cirq.rz(rads=18.263937308298605*np.pi).on(q[11]),\n", - " cirq.rz(rads=-18.247908941862203*np.pi).on(q[17]),\n", - " cirq.rz(rads=4.303481743922509*np.pi).on(q[18]),\n", - " cirq.rz(rads=-4.595908389782827*np.pi).on(q[24]),\n", - " cirq.rz(rads=20.40623181672889*np.pi).on(q[19]),\n", - " cirq.rz(rads=-20.409639326033993*np.pi).on(q[25]),\n", - " cirq.rz(rads=13.138499004273484*np.pi).on(q[20]),\n", - " cirq.rz(rads=-13.02570710190338*np.pi).on(q[26]),\n", - " cirq.rz(rads=19.994449091768548*np.pi).on(q[21]),\n", - " cirq.rz(rads=-20.069061909163636*np.pi).on(q[27]),\n", - " cirq.rz(rads=13.831104618355031*np.pi).on(q[22]),\n", - " cirq.rz(rads=-13.786606163793484*np.pi).on(q[28]),\n", - " [cirq.ISWAP(q[0], q[4])**-0.9984812470539374, cirq.CZ(q[0], q[4])**-0.17233320530255947],\n", - " [cirq.ISWAP(q[1], q[5])**-1.0282887997603027, cirq.CZ(q[1], q[5])**-0.16427011854127802],\n", - " [cirq.ISWAP(q[2], q[6])**-0.9575293160506735, cirq.CZ(q[2], q[6])**-0.21522732166595954],\n", - " [cirq.ISWAP(q[7], q[13])**-0.933831313649303, cirq.CZ(q[7], q[13])**-0.1583933739924931],\n", - " [cirq.ISWAP(q[8], q[14])**-0.9390847780661252, cirq.CZ(q[8], q[14])**-0.17144555428591543],\n", - " [cirq.ISWAP(q[9], q[15])**-1.0209160715892363, cirq.CZ(q[9], q[15])**-0.14849009270439747],\n", - " [cirq.ISWAP(q[10], q[16])**-1.0287988330229174, cirq.CZ(q[10], q[16])**-0.1385888562342036],\n", - " [cirq.ISWAP(q[11], q[17])**-1.0128317439690167, cirq.CZ(q[11], q[17])**-0.1669440143200578],\n", - " [cirq.ISWAP(q[18], q[24])**-0.8044060664115181, cirq.CZ(q[18], q[24])**-0.10552370353526683],\n", - " [cirq.ISWAP(q[19], q[25])**-0.9705721508169989, cirq.CZ(q[19], q[25])**-0.15402718033611607],\n", - " [cirq.ISWAP(q[20], q[26])**-0.989459174023089, cirq.CZ(q[20], q[26])**-0.16509252502035418],\n", - " [cirq.ISWAP(q[21], q[27])**-0.9618960066063004, cirq.CZ(q[21], q[27])**-0.15722561327755682],\n", - " [cirq.ISWAP(q[22], q[28])**-1.0052002427791902, cirq.CZ(q[22], q[28])**-0.16175415193774326],\n", - " cirq.rz(rads=4.777874433792896*np.pi).on(q[0]),\n", - " cirq.rz(rads=-4.775377614271054*np.pi).on(q[4]),\n", - " cirq.rz(rads=4.198995232832642*np.pi).on(q[1]),\n", - " cirq.rz(rads=-4.203675321670441*np.pi).on(q[5]),\n", - " cirq.rz(rads=-5.321807436079611*np.pi).on(q[2]),\n", - " cirq.rz(rads=5.315476950986302*np.pi).on(q[6]),\n", - " cirq.rz(rads=-25.79725021952863*np.pi).on(q[7]),\n", - " cirq.rz(rads=25.713885235451578*np.pi).on(q[13]),\n", - " cirq.rz(rads=-24.48288974563276*np.pi).on(q[8]),\n", - " cirq.rz(rads=24.55855797881315*np.pi).on(q[14]),\n", - " cirq.rz(rads=-10.07786364079744*np.pi).on(q[9]),\n", - " cirq.rz(rads=9.986829530817898*np.pi).on(q[15]),\n", - " cirq.rz(rads=-11.191871460773655*np.pi).on(q[10]),\n", - " cirq.rz(rads=11.193196628844492*np.pi).on(q[16]),\n", - " cirq.rz(rads=-18.61869305225248*np.pi).on(q[11]),\n", - " cirq.rz(rads=18.63472141868888*np.pi).on(q[17]),\n", - " cirq.rz(rads=-5.067815524796681*np.pi).on(q[18]),\n", - " cirq.rz(rads=4.775388878936363*np.pi).on(q[24]),\n", - " cirq.rz(rads=-20.83856101076621*np.pi).on(q[19]),\n", - " cirq.rz(rads=20.835153501461107*np.pi).on(q[25]),\n", - " cirq.rz(rads=-12.242421382024746*np.pi).on(q[20]),\n", - " cirq.rz(rads=12.35521328439485*np.pi).on(q[26]),\n", - " cirq.rz(rads=-19.32248305368911*np.pi).on(q[21]),\n", - " cirq.rz(rads=19.24787023629402*np.pi).on(q[27]),\n", - " cirq.rz(rads=-13.967003503847575*np.pi).on(q[22]),\n", - " cirq.rz(rads=14.01150195840912*np.pi).on(q[28]),\n", - " cirq.Y(q[0])**0.5,\n", - " [cirq.X(q[1])**0.5, cirq.H(q[1])**0.5, cirq.X(q[1])**-0.5],\n", - " [cirq.X(q[2])**0.5, cirq.H(q[2])**0.5, cirq.X(q[2])**-0.5],\n", - " cirq.X(q[3])**0.5,\n", - " cirq.X(q[4])**0.5,\n", - " cirq.X(q[5])**0.5,\n", - " cirq.X(q[6])**0.5,\n", - " cirq.X(q[7])**0.5,\n", - " [cirq.X(q[8])**0.5, cirq.H(q[8])**0.5, cirq.X(q[8])**-0.5],\n", - " cirq.X(q[9])**0.5,\n", - " [cirq.X(q[10])**0.5, cirq.H(q[10])**0.5, cirq.X(q[10])**-0.5],\n", - " cirq.X(q[11])**0.5,\n", - " cirq.Y(q[12])**0.5,\n", - " [cirq.X(q[13])**0.5, cirq.H(q[13])**0.5, cirq.X(q[13])**-0.5],\n", - " cirq.X(q[14])**0.5,\n", - " cirq.Y(q[15])**0.5,\n", - " cirq.X(q[16])**0.5,\n", - " [cirq.X(q[17])**0.5, cirq.H(q[17])**0.5, cirq.X(q[17])**-0.5],\n", - " [cirq.X(q[18])**0.5, cirq.H(q[18])**0.5, cirq.X(q[18])**-0.5],\n", - " cirq.X(q[19])**0.5,\n", - " cirq.Y(q[20])**0.5,\n", - " [cirq.X(q[21])**0.5, cirq.H(q[21])**0.5, cirq.X(q[21])**-0.5],\n", - " [cirq.X(q[22])**0.5, cirq.H(q[22])**0.5, cirq.X(q[22])**-0.5],\n", - " cirq.Y(q[23])**0.5,\n", - " cirq.Y(q[24])**0.5,\n", - " cirq.X(q[25])**0.5,\n", - " [cirq.X(q[26])**0.5, cirq.H(q[26])**0.5, cirq.X(q[26])**-0.5],\n", - " cirq.Y(q[27])**0.5,\n", - " cirq.Y(q[28])**0.5,\n", - " cirq.Y(q[29])**0.5,\n", - " [cirq.X(q[30])**0.5, cirq.H(q[30])**0.5, cirq.X(q[30])**-0.5],\n", - " cirq.X(q[31])**0.5,\n", - " cirq.rz(rads=-23.983870303178655*np.pi).on(q[1]),\n", - " cirq.rz(rads=23.947691840749943*np.pi).on(q[2]),\n", - " cirq.rz(rads=9.52513916974456*np.pi).on(q[3]),\n", - " cirq.rz(rads=-9.570527436528984*np.pi).on(q[4]),\n", - " cirq.rz(rads=-13.084997501357485*np.pi).on(q[5]),\n", - " cirq.rz(rads=12.644483778485537*np.pi).on(q[6]),\n", - " cirq.rz(rads=10.044737337703173*np.pi).on(q[8]),\n", - " cirq.rz(rads=-9.952929415695523*np.pi).on(q[9]),\n", - " cirq.rz(rads=-1.4576740888019104*np.pi).on(q[10]),\n", - " cirq.rz(rads=1.4499714261238263*np.pi).on(q[11]),\n", - " cirq.rz(rads=-8.542750980814159*np.pi).on(q[12]),\n", - " cirq.rz(rads=8.512493259768608*np.pi).on(q[13]),\n", - " cirq.rz(rads=-8.401251133882973*np.pi).on(q[14]),\n", - " cirq.rz(rads=8.52245467467511*np.pi).on(q[15]),\n", - " cirq.rz(rads=7.236894386212986*np.pi).on(q[16]),\n", - " cirq.rz(rads=-7.223381665113074*np.pi).on(q[17]),\n", - " cirq.rz(rads=-2.0014238777188416*np.pi).on(q[19]),\n", - " cirq.rz(rads=2.057465958360948*np.pi).on(q[20]),\n", - " cirq.rz(rads=-6.843134633961698*np.pi).on(q[21]),\n", - " cirq.rz(rads=6.916407045184491*np.pi).on(q[22]),\n", - " cirq.rz(rads=-10.176126243969842*np.pi).on(q[25]),\n", - " cirq.rz(rads=10.134682918719976*np.pi).on(q[26]),\n", - " cirq.rz(rads=-12.347924259148533*np.pi).on(q[27]),\n", - " cirq.rz(rads=12.372739915233888*np.pi).on(q[28]),\n", - " cirq.rz(rads=-13.554795435376587*np.pi).on(q[29]),\n", - " cirq.rz(rads=13.646281937389634*np.pi).on(q[30]),\n", - " [cirq.ISWAP(q[1], q[2])**-0.9570391651387101, cirq.CZ(q[1], q[2])**-0.17511624695473224],\n", - " [cirq.ISWAP(q[3], q[4])**-1.0141403689884423, cirq.CZ(q[3], q[4])**-0.17046670168281958],\n", - " [cirq.ISWAP(q[5], q[6])**-1.013386784909492, cirq.CZ(q[5], q[6])**1.8378144783929071],\n", - " [cirq.ISWAP(q[8], q[9])**-1.009868884178167, cirq.CZ(q[8], q[9])**-0.16552586798219657],\n", - " [cirq.ISWAP(q[10], q[11])**-0.973165668451805, cirq.CZ(q[10], q[11])**-0.1627822085708043],\n", - " [cirq.ISWAP(q[12], q[13])**-0.9967062367293744, cirq.CZ(q[12], q[13])**-0.16320564272090876],\n", - " [cirq.ISWAP(q[14], q[15])**-0.9733750299685556, cirq.CZ(q[14], q[15])**-0.16091330726740966],\n", - " [cirq.ISWAP(q[16], q[17])**-0.9794265878513263, cirq.CZ(q[16], q[17])**-0.16849356010919606],\n", - " [cirq.ISWAP(q[19], q[20])**-0.9375857698276336, cirq.CZ(q[19], q[20])**-0.144908770657389],\n", - " [cirq.ISWAP(q[21], q[22])**-0.9769678680475263, cirq.CZ(q[21], q[22])**-0.16332605888196952],\n", - " [cirq.ISWAP(q[25], q[26])**-0.9656924944561719, cirq.CZ(q[25], q[26])**-0.1474408404408433],\n", - " [cirq.ISWAP(q[27], q[28])**-0.9998377482375511, cirq.CZ(q[27], q[28])**-0.15252451837046574],\n", - " [cirq.ISWAP(q[29], q[30])**-0.9878279109459591, cirq.CZ(q[29], q[30])**-0.1609201967232209],\n", - " cirq.rz(rads=23.28431055044745*np.pi).on(q[1]),\n", - " cirq.rz(rads=-23.320489012876163*np.pi).on(q[2]),\n", - " cirq.rz(rads=-9.054070555108892*np.pi).on(q[3]),\n", - " cirq.rz(rads=9.008682288324469*np.pi).on(q[4]),\n", - " cirq.rz(rads=13.750356038389338*np.pi).on(q[5]),\n", - " cirq.rz(rads=-14.190869761261286*np.pi).on(q[6]),\n", - " cirq.rz(rads=-10.440214577494247*np.pi).on(q[8]),\n", - " cirq.rz(rads=10.5320224995019*np.pi).on(q[9]),\n", - " cirq.rz(rads=2.0599079899133517*np.pi).on(q[10]),\n", - " cirq.rz(rads=-2.067610652591436*np.pi).on(q[11]),\n", - " cirq.rz(rads=8.780337110122234*np.pi).on(q[12]),\n", - " cirq.rz(rads=-8.810594831167785*np.pi).on(q[13]),\n", - " cirq.rz(rads=8.199075778124648*np.pi).on(q[14]),\n", - " cirq.rz(rads=-8.07787223733251*np.pi).on(q[15]),\n", - " cirq.rz(rads=-9.025823706766039*np.pi).on(q[16]),\n", - " cirq.rz(rads=9.039336427865951*np.pi).on(q[17]),\n", - " cirq.rz(rads=2.570829500938612*np.pi).on(q[19]),\n", - " cirq.rz(rads=-2.5147874202965053*np.pi).on(q[20]),\n", - " cirq.rz(rads=6.561341949396702*np.pi).on(q[21]),\n", - " cirq.rz(rads=-6.48806953817391*np.pi).on(q[22]),\n", - " cirq.rz(rads=10.239062711844038*np.pi).on(q[25]),\n", - " cirq.rz(rads=-10.280506037093904*np.pi).on(q[26]),\n", - " cirq.rz(rads=14.161779067835406*np.pi).on(q[27]),\n", - " cirq.rz(rads=-14.136963411750049*np.pi).on(q[28]),\n", - " cirq.rz(rads=13.413311792027148*np.pi).on(q[29]),\n", - " cirq.rz(rads=-13.3218252900141*np.pi).on(q[30]),\n", - " [cirq.X(q[0])**0.5, cirq.H(q[0])**0.5, cirq.X(q[0])**-0.5],\n", - " cirq.X(q[1])**0.5,\n", - " cirq.X(q[2])**0.5,\n", - " cirq.Y(q[3])**0.5,\n", - " [cirq.X(q[4])**0.5, cirq.H(q[4])**0.5, cirq.X(q[4])**-0.5],\n", - " cirq.Y(q[5])**0.5,\n", - " [cirq.X(q[6])**0.5, cirq.H(q[6])**0.5, cirq.X(q[6])**-0.5],\n", - " [cirq.X(q[7])**0.5, cirq.H(q[7])**0.5, cirq.X(q[7])**-0.5],\n", - " cirq.Y(q[8])**0.5,\n", - " [cirq.X(q[9])**0.5, cirq.H(q[9])**0.5, cirq.X(q[9])**-0.5],\n", - " cirq.Y(q[10])**0.5,\n", - " [cirq.X(q[11])**0.5, cirq.H(q[11])**0.5, cirq.X(q[11])**-0.5],\n", - " [cirq.X(q[12])**0.5, cirq.H(q[12])**0.5, cirq.X(q[12])**-0.5],\n", - " cirq.X(q[13])**0.5,\n", - " [cirq.X(q[14])**0.5, cirq.H(q[14])**0.5, cirq.X(q[14])**-0.5],\n", - " [cirq.X(q[15])**0.5, cirq.H(q[15])**0.5, cirq.X(q[15])**-0.5],\n", - " cirq.Y(q[16])**0.5,\n", - " cirq.X(q[17])**0.5,\n", - " cirq.Y(q[18])**0.5,\n", - " cirq.Y(q[19])**0.5,\n", - " cirq.X(q[20])**0.5,\n", - " cirq.X(q[21])**0.5,\n", - " cirq.X(q[22])**0.5,\n", - " cirq.X(q[23])**0.5,\n", - " cirq.X(q[24])**0.5,\n", - " cirq.Y(q[25])**0.5,\n", - " cirq.X(q[26])**0.5,\n", - " [cirq.X(q[27])**0.5, cirq.H(q[27])**0.5, cirq.X(q[27])**-0.5],\n", - " cirq.X(q[28])**0.5,\n", - " [cirq.X(q[29])**0.5, cirq.H(q[29])**0.5, cirq.X(q[29])**-0.5],\n", - " cirq.Y(q[30])**0.5,\n", - " cirq.Y(q[31])**0.5,\n", - " cirq.rz(rads=-30.29986888404229*np.pi).on(q[0]),\n", - " cirq.rz(rads=30.302497289344824*np.pi).on(q[1]),\n", - " cirq.rz(rads=-30.054485552499738*np.pi).on(q[4]),\n", - " cirq.rz(rads=30.034988862096366*np.pi).on(q[5]),\n", - " cirq.rz(rads=12.597359127188014*np.pi).on(q[7]),\n", - " cirq.rz(rads=-12.538809626368511*np.pi).on(q[8]),\n", - " cirq.rz(rads=-26.08870806725985*np.pi).on(q[9]),\n", - " cirq.rz(rads=26.13388826789855*np.pi).on(q[10]),\n", - " cirq.rz(rads=11.90395452297206*np.pi).on(q[13]),\n", - " cirq.rz(rads=-11.950266520580142*np.pi).on(q[14]),\n", - " cirq.rz(rads=-23.906047663366408*np.pi).on(q[15]),\n", - " cirq.rz(rads=23.945335880513902*np.pi).on(q[16]),\n", - " cirq.rz(rads=-12.64994198965531*np.pi).on(q[18]),\n", - " cirq.rz(rads=12.670825603456805*np.pi).on(q[19]),\n", - " cirq.rz(rads=5.221137480344522*np.pi).on(q[20]),\n", - " cirq.rz(rads=-5.118027941327464*np.pi).on(q[21]),\n", - " cirq.rz(rads=9.263573798570924*np.pi).on(q[22]),\n", - " cirq.rz(rads=-9.55041239213535*np.pi).on(q[23]),\n", - " cirq.rz(rads=8.765227495500554*np.pi).on(q[24]),\n", - " cirq.rz(rads=-9.048084333301423*np.pi).on(q[25]),\n", - " cirq.rz(rads=13.422682742974219*np.pi).on(q[26]),\n", - " cirq.rz(rads=-13.34768684100077*np.pi).on(q[27]),\n", - " cirq.rz(rads=7.346307418341885*np.pi).on(q[30]),\n", - " cirq.rz(rads=-7.447034178043343*np.pi).on(q[31]),\n", - " [cirq.ISWAP(q[0], q[1])**-0.969777854908417, cirq.CZ(q[0], q[1])**-0.21266743136622576],\n", - " [cirq.ISWAP(q[4], q[5])**-0.9959624181216683, cirq.CZ(q[4], q[5])**-0.17314460131772672],\n", - " [cirq.ISWAP(q[7], q[8])**-0.8242343706275942, cirq.CZ(q[7], q[8])**-0.15468164635790926],\n", - " [cirq.ISWAP(q[9], q[10])**-0.981653050634976, cirq.CZ(q[9], q[10])**-0.1933349989832593],\n", - " [cirq.ISWAP(q[13], q[14])**-0.9637565510028211, cirq.CZ(q[13], q[14])**-0.15186761578643612],\n", - " [cirq.ISWAP(q[15], q[16])**-1.0089894642925605, cirq.CZ(q[15], q[16])**-0.17298943435986638],\n", - " [cirq.ISWAP(q[18], q[19])**-0.9446726997534635, cirq.CZ(q[18], q[19])**-0.16140479146278733],\n", - " [cirq.ISWAP(q[20], q[21])**-0.980271915828302, cirq.CZ(q[20], q[21])**-0.16470994863165317],\n", - " [cirq.ISWAP(q[22], q[23])**-0.9290392306402181, cirq.CZ(q[22], q[23])**-0.1664963204791881],\n", - " [cirq.ISWAP(q[24], q[25])**-0.9486971380890047, cirq.CZ(q[24], q[25])**-0.1448964931003518],\n", - " [cirq.ISWAP(q[26], q[27])**-0.9789198374818319, cirq.CZ(q[26], q[27])**-0.14726825222820017],\n", - " [cirq.ISWAP(q[30], q[31])**-0.9389507566733047, cirq.CZ(q[30], q[31])**-0.1385796856074536],\n", - " cirq.rz(rads=30.657856052586013*np.pi).on(q[0]),\n", - " cirq.rz(rads=-30.65522764728348*np.pi).on(q[1]),\n", - " cirq.rz(rads=30.087139057028068*np.pi).on(q[4]),\n", - " cirq.rz(rads=-30.106635747431437*np.pi).on(q[5]),\n", - " cirq.rz(rads=-12.410072351850753*np.pi).on(q[7]),\n", - " cirq.rz(rads=12.468621852670255*np.pi).on(q[8]),\n", - " cirq.rz(rads=26.656199817881895*np.pi).on(q[9]),\n", - " cirq.rz(rads=-26.611019617243198*np.pi).on(q[10]),\n", - " cirq.rz(rads=-12.422336273583753*np.pi).on(q[13]),\n", - " cirq.rz(rads=12.376024275975672*np.pi).on(q[14]),\n", - " cirq.rz(rads=24.032508849527318*np.pi).on(q[15]),\n", - " cirq.rz(rads=-23.993220632379824*np.pi).on(q[16]),\n", - " cirq.rz(rads=11.745064422304269*np.pi).on(q[18]),\n", - " cirq.rz(rads=-11.724180808502775*np.pi).on(q[19]),\n", - " cirq.rz(rads=-5.991658529535789*np.pi).on(q[20]),\n", - " cirq.rz(rads=6.094768068552847*np.pi).on(q[21]),\n", - " cirq.rz(rads=-9.293307215154037*np.pi).on(q[22]),\n", - " cirq.rz(rads=9.006468621589612*np.pi).on(q[23]),\n", - " cirq.rz(rads=-7.056913502275617*np.pi).on(q[24]),\n", - " cirq.rz(rads=6.774056664474749*np.pi).on(q[25]),\n", - " cirq.rz(rads=-13.45823318122632*np.pi).on(q[26]),\n", - " cirq.rz(rads=13.53322908319977*np.pi).on(q[27]),\n", - " cirq.rz(rads=-7.785583222537938*np.pi).on(q[30]),\n", - " cirq.rz(rads=7.68485646283648*np.pi).on(q[31]),\n", - " cirq.X(q[0])**0.5,\n", - " cirq.Y(q[1])**0.5,\n", - " [cirq.X(q[2])**0.5, cirq.H(q[2])**0.5, cirq.X(q[2])**-0.5],\n", - " [cirq.X(q[3])**0.5, cirq.H(q[3])**0.5, cirq.X(q[3])**-0.5],\n", - " cirq.X(q[4])**0.5,\n", - " cirq.X(q[5])**0.5,\n", - " cirq.X(q[6])**0.5,\n", - " cirq.X(q[7])**0.5,\n", - " [cirq.X(q[8])**0.5, cirq.H(q[8])**0.5, cirq.X(q[8])**-0.5],\n", - " cirq.X(q[9])**0.5,\n", - " [cirq.X(q[10])**0.5, cirq.H(q[10])**0.5, cirq.X(q[10])**-0.5],\n", - " cirq.X(q[11])**0.5,\n", - " cirq.Y(q[12])**0.5,\n", - " [cirq.X(q[13])**0.5, cirq.H(q[13])**0.5, cirq.X(q[13])**-0.5],\n", - " cirq.Y(q[14])**0.5,\n", - " cirq.X(q[15])**0.5,\n", - " [cirq.X(q[16])**0.5, cirq.H(q[16])**0.5, cirq.X(q[16])**-0.5],\n", - " cirq.Y(q[17])**0.5,\n", - " cirq.X(q[18])**0.5,\n", - " cirq.X(q[19])**0.5,\n", - " cirq.Y(q[20])**0.5,\n", - " cirq.Y(q[21])**0.5,\n", - " [cirq.X(q[22])**0.5, cirq.H(q[22])**0.5, cirq.X(q[22])**-0.5],\n", - " [cirq.X(q[23])**0.5, cirq.H(q[23])**0.5, cirq.X(q[23])**-0.5],\n", - " [cirq.X(q[24])**0.5, cirq.H(q[24])**0.5, cirq.X(q[24])**-0.5],\n", - " cirq.X(q[25])**0.5,\n", - " [cirq.X(q[26])**0.5, cirq.H(q[26])**0.5, cirq.X(q[26])**-0.5],\n", - " cirq.Y(q[27])**0.5,\n", - " cirq.Y(q[28])**0.5,\n", - " cirq.X(q[29])**0.5,\n", - " cirq.X(q[30])**0.5,\n", - " cirq.X(q[31])**0.5,\n", - " cirq.rz(rads=-26.934223110661993*np.pi).on(q[3]),\n", - " cirq.rz(rads=26.964315883363945*np.pi).on(q[8]),\n", - " cirq.rz(rads=-25.436295096608994*np.pi).on(q[4]),\n", - " cirq.rz(rads=25.43183342244327*np.pi).on(q[9]),\n", - " cirq.rz(rads=-21.351868774756507*np.pi).on(q[5]),\n", - " cirq.rz(rads=21.24115658410936*np.pi).on(q[10]),\n", - " cirq.rz(rads=-6.643807240413623*np.pi).on(q[6]),\n", - " cirq.rz(rads=6.598519238690134*np.pi).on(q[11]),\n", - " cirq.rz(rads=-21.096932498710586*np.pi).on(q[12]),\n", - " cirq.rz(rads=21.084221422935954*np.pi).on(q[19]),\n", - " cirq.rz(rads=-13.046692838556257*np.pi).on(q[13]),\n", - " cirq.rz(rads=13.107006443219033*np.pi).on(q[20]),\n", - " cirq.rz(rads=-20.486755870544844*np.pi).on(q[14]),\n", - " cirq.rz(rads=20.51325689904871*np.pi).on(q[21]),\n", - " cirq.rz(rads=-19.82814477311278*np.pi).on(q[15]),\n", - " cirq.rz(rads=19.838469153514826*np.pi).on(q[22]),\n", - " cirq.rz(rads=17.687652291347487*np.pi).on(q[16]),\n", - " cirq.rz(rads=-17.230577602838448*np.pi).on(q[23]),\n", - " cirq.rz(rads=27.146146626922736*np.pi).on(q[25]),\n", - " cirq.rz(rads=-27.128766026200324*np.pi).on(q[29]),\n", - " cirq.rz(rads=23.46087327851529*np.pi).on(q[26]),\n", - " cirq.rz(rads=-23.443378195920936*np.pi).on(q[30]),\n", - " cirq.rz(rads=17.157142369360066*np.pi).on(q[27]),\n", - " cirq.rz(rads=-17.33618210685809*np.pi).on(q[31]),\n", - " [cirq.ISWAP(q[3], q[8])**-0.9582439102445623, cirq.CZ(q[3], q[8])**-0.16481196420780725],\n", - " [cirq.ISWAP(q[4], q[9])**-0.9924132629744455, cirq.CZ(q[4], q[9])**-0.17814200700009597],\n", - " [cirq.ISWAP(q[5], q[10])**-1.0126733526485854, cirq.CZ(q[5], q[10])**-0.18074346084220166],\n", - " [cirq.ISWAP(q[6], q[11])**-0.9737940569293067, cirq.CZ(q[6], q[11])**-0.17117494551642629],\n", - " [cirq.ISWAP(q[12], q[19])**-0.9744121515000286, cirq.CZ(q[12], q[19])**-0.16733875650098531],\n", - " [cirq.ISWAP(q[13], q[20])**-1.0121115249769066, cirq.CZ(q[13], q[20])**-0.16059979031178617],\n", - " [cirq.ISWAP(q[14], q[21])**-0.985003985982119, cirq.CZ(q[14], q[21])**-0.16606010863938203],\n", - " [cirq.ISWAP(q[15], q[22])**-0.9628319095031052, cirq.CZ(q[15], q[22])**-0.16339300450568622],\n", - " [cirq.ISWAP(q[16], q[23])**-0.9999941453695372, cirq.CZ(q[16], q[23])**-0.16477879415124544],\n", - " [cirq.ISWAP(q[25], q[29])**-1.0162656461553201, cirq.CZ(q[25], q[29])**-0.1624755502163923],\n", - " [cirq.ISWAP(q[26], q[30])**-0.9778318391639494, cirq.CZ(q[26], q[30])**-0.17777349355837574],\n", - " [cirq.ISWAP(q[27], q[31])**-0.881941750344955, cirq.CZ(q[27], q[31])**-0.18326258546194193],\n", - " cirq.rz(rads=27.61944406229804*np.pi).on(q[3]),\n", - " cirq.rz(rads=-27.589351289596088*np.pi).on(q[8]),\n", - " cirq.rz(rads=25.746615138480117*np.pi).on(q[4]),\n", - " cirq.rz(rads=-25.75107681264584*np.pi).on(q[9]),\n", - " cirq.rz(rads=22.13450605727*np.pi).on(q[5]),\n", - " cirq.rz(rads=-22.245218247917148*np.pi).on(q[10]),\n", - " cirq.rz(rads=7.440729485113184*np.pi).on(q[6]),\n", - " cirq.rz(rads=-7.486017486836674*np.pi).on(q[11]),\n", - " cirq.rz(rads=20.425705877923868*np.pi).on(q[12]),\n", - " cirq.rz(rads=-20.4384169536985*np.pi).on(q[19]),\n", - " cirq.rz(rads=12.71050872566315*np.pi).on(q[13]),\n", - " cirq.rz(rads=-12.650195121000372*np.pi).on(q[20]),\n", - " cirq.rz(rads=19.562531408750814*np.pi).on(q[14]),\n", - " cirq.rz(rads=-19.53603038024695*np.pi).on(q[21]),\n", - " cirq.rz(rads=18.69447149644039*np.pi).on(q[15]),\n", - " cirq.rz(rads=-18.684147116038343*np.pi).on(q[22]),\n", - " cirq.rz(rads=-18.21701654221441*np.pi).on(q[16]),\n", - " cirq.rz(rads=18.674091230723448*np.pi).on(q[23]),\n", - " cirq.rz(rads=-25.757287261948953*np.pi).on(q[25]),\n", - " cirq.rz(rads=25.774667862671368*np.pi).on(q[29]),\n", - " cirq.rz(rads=-23.52062771406781*np.pi).on(q[26]),\n", - " cirq.rz(rads=23.538122796662165*np.pi).on(q[30]),\n", - " cirq.rz(rads=-16.556589282442097*np.pi).on(q[27]),\n", - " cirq.rz(rads=16.377549544944078*np.pi).on(q[31]),\n", - " [cirq.X(q[0])**0.5, cirq.H(q[0])**0.5, cirq.X(q[0])**-0.5],\n", - " cirq.X(q[1])**0.5,\n", - " cirq.X(q[2])**0.5,\n", - " cirq.X(q[3])**0.5,\n", - " [cirq.X(q[4])**0.5, cirq.H(q[4])**0.5, cirq.X(q[4])**-0.5],\n", - " [cirq.X(q[5])**0.5, cirq.H(q[5])**0.5, cirq.X(q[5])**-0.5],\n", - " cirq.Y(q[6])**0.5,\n", - " [cirq.X(q[7])**0.5, cirq.H(q[7])**0.5, cirq.X(q[7])**-0.5],\n", - " cirq.X(q[8])**0.5,\n", - " [cirq.X(q[9])**0.5, cirq.H(q[9])**0.5, cirq.X(q[9])**-0.5],\n", - " cirq.X(q[10])**0.5,\n", - " [cirq.X(q[11])**0.5, cirq.H(q[11])**0.5, cirq.X(q[11])**-0.5],\n", - " [cirq.X(q[12])**0.5, cirq.H(q[12])**0.5, cirq.X(q[12])**-0.5],\n", - " cirq.Y(q[13])**0.5,\n", - " cirq.X(q[14])**0.5,\n", - " [cirq.X(q[15])**0.5, cirq.H(q[15])**0.5, cirq.X(q[15])**-0.5],\n", - " cirq.X(q[16])**0.5,\n", - " cirq.X(q[17])**0.5,\n", - " [cirq.X(q[18])**0.5, cirq.H(q[18])**0.5, cirq.X(q[18])**-0.5],\n", - " [cirq.X(q[19])**0.5, cirq.H(q[19])**0.5, cirq.X(q[19])**-0.5],\n", - " [cirq.X(q[20])**0.5, cirq.H(q[20])**0.5, cirq.X(q[20])**-0.5],\n", - " cirq.X(q[21])**0.5,\n", - " cirq.X(q[22])**0.5,\n", - " cirq.X(q[23])**0.5,\n", - " cirq.X(q[24])**0.5,\n", - " [cirq.X(q[25])**0.5, cirq.H(q[25])**0.5, cirq.X(q[25])**-0.5],\n", - " cirq.Y(q[26])**0.5,\n", - " cirq.X(q[27])**0.5,\n", - " cirq.X(q[28])**0.5,\n", - " [cirq.X(q[29])**0.5, cirq.H(q[29])**0.5, cirq.X(q[29])**-0.5],\n", - " [cirq.X(q[30])**0.5, cirq.H(q[30])**0.5, cirq.X(q[30])**-0.5],\n", - " [cirq.X(q[31])**0.5, cirq.H(q[31])**0.5, cirq.X(q[31])**-0.5],\n", - " cirq.rz(rads=-6.926584587366442*np.pi).on(q[0]),\n", - " cirq.rz(rads=6.929081406888282*np.pi).on(q[4]),\n", - " cirq.rz(rads=-6.864078115073335*np.pi).on(q[1]),\n", - " cirq.rz(rads=6.859398026235534*np.pi).on(q[5]),\n", - " cirq.rz(rads=7.418125678549155*np.pi).on(q[2]),\n", - " cirq.rz(rads=-7.424456163642465*np.pi).on(q[6]),\n", - " cirq.rz(rads=39.34359792383697*np.pi).on(q[7]),\n", - " cirq.rz(rads=-39.42696290791402*np.pi).on(q[13]),\n", - " cirq.rz(rads=38.52825306393881*np.pi).on(q[8]),\n", - " cirq.rz(rads=-38.452584830758425*np.pi).on(q[14]),\n", - " cirq.rz(rads=12.958562501914345*np.pi).on(q[9]),\n", - " cirq.rz(rads=-13.049596611893888*np.pi).on(q[15]),\n", - " cirq.rz(rads=15.428639843256777*np.pi).on(q[10]),\n", - " cirq.rz(rads=-15.42731467518594*np.pi).on(q[16]),\n", - " cirq.rz(rads=28.031937308298577*np.pi).on(q[11]),\n", - " cirq.rz(rads=-28.01590894186218*np.pi).on(q[17]),\n", - " cirq.rz(rads=6.967481743922609*np.pi).on(q[18]),\n", - " cirq.rz(rads=-7.259908389782927*np.pi).on(q[24]),\n", - " cirq.rz(rads=31.210231816728815*np.pi).on(q[19]),\n", - " cirq.rz(rads=-31.213639326033913*np.pi).on(q[25]),\n", - " cirq.rz(rads=19.946499004273523*np.pi).on(q[20]),\n", - " cirq.rz(rads=-19.833707101903418*np.pi).on(q[26]),\n", - " cirq.rz(rads=30.137045801919207*np.pi).on(q[21]),\n", - " cirq.rz(rads=-30.211658619314296*np.pi).on(q[27]),\n", - " cirq.rz(rads=21.231104618355*np.pi).on(q[22]),\n", - " cirq.rz(rads=-21.186606163793456*np.pi).on(q[28]),\n", - " [cirq.ISWAP(q[0], q[4])**-0.9984812470539374, cirq.CZ(q[0], q[4])**-0.17233320530255947],\n", - " [cirq.ISWAP(q[1], q[5])**-1.0282887997603027, cirq.CZ(q[1], q[5])**-0.16427011854127802],\n", - " [cirq.ISWAP(q[2], q[6])**-0.9575293160506735, cirq.CZ(q[2], q[6])**-0.21522732166595954],\n", - " [cirq.ISWAP(q[7], q[13])**-0.933831313649303, cirq.CZ(q[7], q[13])**-0.1583933739924931],\n", - " [cirq.ISWAP(q[8], q[14])**-0.9390847780661252, cirq.CZ(q[8], q[14])**-0.17144555428591543],\n", - " [cirq.ISWAP(q[9], q[15])**-1.0209160715892363, cirq.CZ(q[9], q[15])**-0.14849009270439747],\n", - " [cirq.ISWAP(q[10], q[16])**-1.0287988330229174, cirq.CZ(q[10], q[16])**-0.1385888562342036],\n", - " [cirq.ISWAP(q[11], q[17])**-1.0128317439690167, cirq.CZ(q[11], q[17])**-0.1669440143200578],\n", - " [cirq.ISWAP(q[18], q[24])**-0.8044060664115181, cirq.CZ(q[18], q[24])**-0.10552370353526683],\n", - " [cirq.ISWAP(q[19], q[25])**-0.9705721508169989, cirq.CZ(q[19], q[25])**-0.15402718033611607],\n", - " [cirq.ISWAP(q[20], q[26])**-0.989459174023089, cirq.CZ(q[20], q[26])**-0.16509252502035418],\n", - " [cirq.ISWAP(q[21], q[27])**-0.9618960066063004, cirq.CZ(q[21], q[27])**-0.15722561327755682],\n", - " [cirq.ISWAP(q[22], q[28])**-1.0052002427791902, cirq.CZ(q[22], q[28])**-0.16175415193774326],\n", - " cirq.rz(rads=6.997874433792849*np.pi).on(q[0]),\n", - " cirq.rz(rads=-6.995377614271008*np.pi).on(q[4]),\n", - " cirq.rz(rads=6.418995232832726*np.pi).on(q[1]),\n", - " cirq.rz(rads=-6.423675321670527*np.pi).on(q[5]),\n", - " cirq.rz(rads=-7.8378074360795305*np.pi).on(q[2]),\n", - " cirq.rz(rads=7.831476950986221*np.pi).on(q[6]),\n", - " cirq.rz(rads=-39.11725021952874*np.pi).on(q[7]),\n", - " cirq.rz(rads=39.03388523545169*np.pi).on(q[13]),\n", - " cirq.rz(rads=-37.65488974563269*np.pi).on(q[8]),\n", - " cirq.rz(rads=37.730557978813074*np.pi).on(q[14]),\n", - " cirq.rz(rads=-14.665863640797525*np.pi).on(q[9]),\n", - " cirq.rz(rads=14.574829530817984*np.pi).on(q[15]),\n", - " cirq.rz(rads=-16.519871460773594*np.pi).on(q[10]),\n", - " cirq.rz(rads=16.52119662884443*np.pi).on(q[16]),\n", - " cirq.rz(rads=-28.386693052252454*np.pi).on(q[11]),\n", - " cirq.rz(rads=28.402721418688852*np.pi).on(q[17]),\n", - " cirq.rz(rads=-7.731815524796781*np.pi).on(q[18]),\n", - " cirq.rz(rads=7.439388878936463*np.pi).on(q[24]),\n", - " cirq.rz(rads=-31.64256101076613*np.pi).on(q[19]),\n", - " cirq.rz(rads=31.63915350146103*np.pi).on(q[25]),\n", - " cirq.rz(rads=-19.050421382024783*np.pi).on(q[20]),\n", - " cirq.rz(rads=19.16321328439489*np.pi).on(q[26]),\n", - " cirq.rz(rads=-29.465079763839764*np.pi).on(q[21]),\n", - " cirq.rz(rads=29.390466946444676*np.pi).on(q[27]),\n", - " cirq.rz(rads=-21.367003503847553*np.pi).on(q[22]),\n", - " cirq.rz(rads=21.411501958409097*np.pi).on(q[28]),\n", - " cirq.Y(q[0])**0.5,\n", - " cirq.Y(q[1])**0.5,\n", - " [cirq.X(q[2])**0.5, cirq.H(q[2])**0.5, cirq.X(q[2])**-0.5],\n", - " cirq.Y(q[3])**0.5,\n", - " cirq.Y(q[4])**0.5,\n", - " cirq.X(q[5])**0.5,\n", - " [cirq.X(q[6])**0.5, cirq.H(q[6])**0.5, cirq.X(q[6])**-0.5],\n", - " cirq.Y(q[7])**0.5,\n", - " cirq.Y(q[8])**0.5,\n", - " cirq.Y(q[9])**0.5,\n", - " cirq.Y(q[10])**0.5,\n", - " cirq.Y(q[11])**0.5,\n", - " cirq.Y(q[12])**0.5,\n", - " [cirq.X(q[13])**0.5, cirq.H(q[13])**0.5, cirq.X(q[13])**-0.5],\n", - " cirq.Y(q[14])**0.5,\n", - " cirq.X(q[15])**0.5,\n", - " cirq.Y(q[16])**0.5,\n", - " cirq.Y(q[17])**0.5,\n", - " cirq.Y(q[18])**0.5,\n", - " cirq.Y(q[19])**0.5,\n", - " cirq.X(q[20])**0.5,\n", - " [cirq.X(q[21])**0.5, cirq.H(q[21])**0.5, cirq.X(q[21])**-0.5],\n", - " cirq.Y(q[22])**0.5,\n", - " [cirq.X(q[23])**0.5, cirq.H(q[23])**0.5, cirq.X(q[23])**-0.5],\n", - " cirq.Y(q[24])**0.5,\n", - " cirq.X(q[25])**0.5,\n", - " [cirq.X(q[26])**0.5, cirq.H(q[26])**0.5, cirq.X(q[26])**-0.5],\n", - " cirq.Y(q[27])**0.5,\n", - " [cirq.X(q[28])**0.5, cirq.H(q[28])**0.5, cirq.X(q[28])**-0.5],\n", - " cirq.X(q[29])**0.5,\n", - " cirq.Y(q[30])**0.5,\n", - " cirq.Y(q[31])**0.5,\n", - " cirq.rz(rads=-34.93587030317863*np.pi).on(q[1]),\n", - " cirq.rz(rads=34.899691840749924*np.pi).on(q[2]),\n", - " cirq.rz(rads=13.66913916974463*np.pi).on(q[3]),\n", - " cirq.rz(rads=-13.714527436529053*np.pi).on(q[4]),\n", - " cirq.rz(rads=-19.300997501357458*np.pi).on(q[5]),\n", - " cirq.rz(rads=18.86048377848551*np.pi).on(q[6]),\n", - " cirq.rz(rads=14.928737337703097*np.pi).on(q[8]),\n", - " cirq.rz(rads=-14.836929415695444*np.pi).on(q[9]),\n", - " cirq.rz(rads=-2.1976740888018944*np.pi).on(q[10]),\n", - " cirq.rz(rads=2.1899714261238103*np.pi).on(q[11]),\n", - " cirq.rz(rads=-12.39075098081413*np.pi).on(q[12]),\n", - " cirq.rz(rads=12.360493259768578*np.pi).on(q[13]),\n", - " cirq.rz(rads=-12.10125113388289*np.pi).on(q[14]),\n", - " cirq.rz(rads=12.22245467467503*np.pi).on(q[15]),\n", - " cirq.rz(rads=10.936894386213037*np.pi).on(q[16]),\n", - " cirq.rz(rads=-10.923381665113125*np.pi).on(q[17]),\n", - " cirq.rz(rads=-2.8894238777188748*np.pi).on(q[19]),\n", - " cirq.rz(rads=2.945465958360982*np.pi).on(q[20]),\n", - " cirq.rz(rads=-10.099134633961603*np.pi).on(q[21]),\n", - " cirq.rz(rads=10.172407045184396*np.pi).on(q[22]),\n", - " cirq.rz(rads=-15.060126243969762*np.pi).on(q[25]),\n", - " cirq.rz(rads=15.018682918719897*np.pi).on(q[26]),\n", - " cirq.rz(rads=-18.34652096929912*np.pi).on(q[27]),\n", - " cirq.rz(rads=18.371336625384476*np.pi).on(q[28]),\n", - " cirq.rz(rads=-19.622795435376638*np.pi).on(q[29]),\n", - " cirq.rz(rads=19.714281937389686*np.pi).on(q[30]),\n", - " [cirq.ISWAP(q[1], q[2])**-0.9570391651387101, cirq.CZ(q[1], q[2])**-0.17511624695473224],\n", - " [cirq.ISWAP(q[3], q[4])**-1.0141403689884423, cirq.CZ(q[3], q[4])**-0.17046670168281958],\n", - " [cirq.ISWAP(q[5], q[6])**-1.013386784909492, cirq.CZ(q[5], q[6])**1.8378144783929071],\n", - " [cirq.ISWAP(q[8], q[9])**-1.009868884178167, cirq.CZ(q[8], q[9])**-0.16552586798219657],\n", - " [cirq.ISWAP(q[10], q[11])**-0.973165668451805, cirq.CZ(q[10], q[11])**-0.1627822085708043],\n", - " [cirq.ISWAP(q[12], q[13])**-0.9967062367293744, cirq.CZ(q[12], q[13])**-0.16320564272090876],\n", - " [cirq.ISWAP(q[14], q[15])**-0.9733750299685556, cirq.CZ(q[14], q[15])**-0.16091330726740966],\n", - " [cirq.ISWAP(q[16], q[17])**-0.9794265878513263, cirq.CZ(q[16], q[17])**-0.16849356010919606],\n", - " [cirq.ISWAP(q[19], q[20])**-0.9375857698276336, cirq.CZ(q[19], q[20])**-0.144908770657389],\n", - " [cirq.ISWAP(q[21], q[22])**-0.9769678680475263, cirq.CZ(q[21], q[22])**-0.16332605888196952],\n", - " [cirq.ISWAP(q[25], q[26])**-0.9656924944561719, cirq.CZ(q[25], q[26])**-0.1474408404408433],\n", - " [cirq.ISWAP(q[27], q[28])**-0.9998377482375511, cirq.CZ(q[27], q[28])**-0.15252451837046574],\n", - " [cirq.ISWAP(q[29], q[30])**-0.9878279109459591, cirq.CZ(q[29], q[30])**-0.1609201967232209],\n", - " cirq.rz(rads=34.236310550447435*np.pi).on(q[1]),\n", - " cirq.rz(rads=-34.27248901287614*np.pi).on(q[2]),\n", - " cirq.rz(rads=-13.19807055510896*np.pi).on(q[3]),\n", - " cirq.rz(rads=13.152682288324536*np.pi).on(q[4]),\n", - " cirq.rz(rads=19.96635603838931*np.pi).on(q[5]),\n", - " cirq.rz(rads=-20.40686976126126*np.pi).on(q[6]),\n", - " cirq.rz(rads=-15.32421457749417*np.pi).on(q[8]),\n", - " cirq.rz(rads=15.416022499501823*np.pi).on(q[9]),\n", - " cirq.rz(rads=2.7999079899133363*np.pi).on(q[10]),\n", - " cirq.rz(rads=-2.80761065259142*np.pi).on(q[11]),\n", - " cirq.rz(rads=12.628337110122207*np.pi).on(q[12]),\n", - " cirq.rz(rads=-12.658594831167758*np.pi).on(q[13]),\n", - " cirq.rz(rads=11.899075778124569*np.pi).on(q[14]),\n", - " cirq.rz(rads=-11.777872237332431*np.pi).on(q[15]),\n", - " cirq.rz(rads=-12.725823706766091*np.pi).on(q[16]),\n", - " cirq.rz(rads=12.739336427866004*np.pi).on(q[17]),\n", - " cirq.rz(rads=3.458829500938646*np.pi).on(q[19]),\n", - " cirq.rz(rads=-3.4027874202965385*np.pi).on(q[20]),\n", - " cirq.rz(rads=9.817341949396608*np.pi).on(q[21]),\n", - " cirq.rz(rads=-9.744069538173814*np.pi).on(q[22]),\n", - " cirq.rz(rads=15.12306271184396*np.pi).on(q[25]),\n", - " cirq.rz(rads=-15.164506037093826*np.pi).on(q[26]),\n", - " cirq.rz(rads=20.160375777985994*np.pi).on(q[27]),\n", - " cirq.rz(rads=-20.13556012190064*np.pi).on(q[28]),\n", - " cirq.rz(rads=19.481311792027203*np.pi).on(q[29]),\n", - " cirq.rz(rads=-19.389825290014155*np.pi).on(q[30]),\n", - " [cirq.X(q[0])**0.5, cirq.H(q[0])**0.5, cirq.X(q[0])**-0.5],\n", - " [cirq.X(q[1])**0.5, cirq.H(q[1])**0.5, cirq.X(q[1])**-0.5],\n", - " cirq.Y(q[2])**0.5,\n", - " cirq.X(q[3])**0.5,\n", - " [cirq.X(q[4])**0.5, cirq.H(q[4])**0.5, cirq.X(q[4])**-0.5],\n", - " cirq.Y(q[5])**0.5,\n", - " cirq.Y(q[6])**0.5,\n", - " [cirq.X(q[7])**0.5, cirq.H(q[7])**0.5, cirq.X(q[7])**-0.5],\n", - " cirq.X(q[8])**0.5,\n", - " cirq.X(q[9])**0.5,\n", - " cirq.X(q[10])**0.5,\n", - " [cirq.X(q[11])**0.5, cirq.H(q[11])**0.5, cirq.X(q[11])**-0.5],\n", - " [cirq.X(q[12])**0.5, cirq.H(q[12])**0.5, cirq.X(q[12])**-0.5],\n", - " cirq.Y(q[13])**0.5,\n", - " cirq.X(q[14])**0.5,\n", - " cirq.Y(q[15])**0.5,\n", - " cirq.X(q[16])**0.5,\n", - " cirq.X(q[17])**0.5,\n", - " [cirq.X(q[18])**0.5, cirq.H(q[18])**0.5, cirq.X(q[18])**-0.5],\n", - " [cirq.X(q[19])**0.5, cirq.H(q[19])**0.5, cirq.X(q[19])**-0.5],\n", - " [cirq.X(q[20])**0.5, cirq.H(q[20])**0.5, cirq.X(q[20])**-0.5],\n", - " cirq.Y(q[21])**0.5,\n", - " [cirq.X(q[22])**0.5, cirq.H(q[22])**0.5, cirq.X(q[22])**-0.5],\n", - " cirq.X(q[23])**0.5,\n", - " cirq.X(q[24])**0.5,\n", - " cirq.Y(q[25])**0.5,\n", - " cirq.Y(q[26])**0.5,\n", - " cirq.X(q[27])**0.5,\n", - " cirq.Y(q[28])**0.5,\n", - " [cirq.X(q[29])**0.5, cirq.H(q[29])**0.5, cirq.X(q[29])**-0.5],\n", - " [cirq.X(q[30])**0.5, cirq.H(q[30])**0.5, cirq.X(q[30])**-0.5],\n", - " cirq.X(q[31])**0.5,\n", - " cirq.rz(rads=-42.731868884042235*np.pi).on(q[0]),\n", - " cirq.rz(rads=42.73449728934477*np.pi).on(q[1]),\n", - " cirq.rz(rads=-42.48648555249982*np.pi).on(q[4]),\n", - " cirq.rz(rads=42.46698886209646*np.pi).on(q[5]),\n", - " cirq.rz(rads=17.629359127188117*np.pi).on(q[7]),\n", - " cirq.rz(rads=-17.570809626368614*np.pi).on(q[8]),\n", - " cirq.rz(rads=-36.89270806725978*np.pi).on(q[9]),\n", - " cirq.rz(rads=36.93788826789848*np.pi).on(q[10]),\n", - " cirq.rz(rads=16.787954522971983*np.pi).on(q[13]),\n", - " cirq.rz(rads=-16.834266520580062*np.pi).on(q[14]),\n", - " cirq.rz(rads=-33.970047663366486*np.pi).on(q[15]),\n", - " cirq.rz(rads=34.00933588051398*np.pi).on(q[16]),\n", - " cirq.rz(rads=-17.533941989655233*np.pi).on(q[18]),\n", - " cirq.rz(rads=17.554825603456727*np.pi).on(q[19]),\n", - " cirq.rz(rads=7.441137480344476*np.pi).on(q[20]),\n", - " cirq.rz(rads=-7.338027941327417*np.pi).on(q[21]),\n", - " cirq.rz(rads=12.963573798570843*np.pi).on(q[22]),\n", - " cirq.rz(rads=-13.250412392135269*np.pi).on(q[23]),\n", - " cirq.rz(rads=12.021227495500458*np.pi).on(q[24]),\n", - " cirq.rz(rads=-12.30408433330133*np.pi).on(q[25]),\n", - " cirq.rz(rads=18.97727945312479*np.pi).on(q[26]),\n", - " cirq.rz(rads=-18.902283551151342*np.pi).on(q[27]),\n", - " cirq.rz(rads=10.306307418341955*np.pi).on(q[30]),\n", - " cirq.rz(rads=-10.407034178043412*np.pi).on(q[31]),\n", - " [cirq.ISWAP(q[0], q[1])**-0.969777854908417, cirq.CZ(q[0], q[1])**-0.21266743136622576],\n", - " [cirq.ISWAP(q[4], q[5])**-0.9959624181216683, cirq.CZ(q[4], q[5])**-0.17314460131772672],\n", - " [cirq.ISWAP(q[7], q[8])**-0.8242343706275942, cirq.CZ(q[7], q[8])**-0.15468164635790926],\n", - " [cirq.ISWAP(q[9], q[10])**-0.981653050634976, cirq.CZ(q[9], q[10])**-0.1933349989832593],\n", - " [cirq.ISWAP(q[13], q[14])**-0.9637565510028211, cirq.CZ(q[13], q[14])**-0.15186761578643612],\n", - " [cirq.ISWAP(q[15], q[16])**-1.0089894642925605, cirq.CZ(q[15], q[16])**-0.17298943435986638],\n", - " [cirq.ISWAP(q[18], q[19])**-0.9446726997534635, cirq.CZ(q[18], q[19])**-0.16140479146278733],\n", - " [cirq.ISWAP(q[20], q[21])**-0.980271915828302, cirq.CZ(q[20], q[21])**-0.16470994863165317],\n", - " [cirq.ISWAP(q[22], q[23])**-0.9290392306402181, cirq.CZ(q[22], q[23])**-0.1664963204791881],\n", - " [cirq.ISWAP(q[24], q[25])**-0.9486971380890047, cirq.CZ(q[24], q[25])**-0.1448964931003518],\n", - " [cirq.ISWAP(q[26], q[27])**-0.9789198374818319, cirq.CZ(q[26], q[27])**-0.14726825222820017],\n", - " [cirq.ISWAP(q[30], q[31])**-0.9389507566733047, cirq.CZ(q[30], q[31])**-0.1385796856074536],\n", - " cirq.rz(rads=43.08985605258596*np.pi).on(q[0]),\n", - " cirq.rz(rads=-43.08722764728342*np.pi).on(q[1]),\n", - " cirq.rz(rads=42.51913905702814*np.pi).on(q[4]),\n", - " cirq.rz(rads=-42.53863574743151*np.pi).on(q[5]),\n", - " cirq.rz(rads=-17.442072351850854*np.pi).on(q[7]),\n", - " cirq.rz(rads=17.500621852670356*np.pi).on(q[8]),\n", - " cirq.rz(rads=37.46019981788182*np.pi).on(q[9]),\n", - " cirq.rz(rads=-37.415019617243125*np.pi).on(q[10]),\n", - " cirq.rz(rads=-17.306336273583675*np.pi).on(q[13]),\n", - " cirq.rz(rads=17.260024275975592*np.pi).on(q[14]),\n", - " cirq.rz(rads=34.09650884952739*np.pi).on(q[15]),\n", - " cirq.rz(rads=-34.057220632379895*np.pi).on(q[16]),\n", - " cirq.rz(rads=16.629064422304193*np.pi).on(q[18]),\n", - " cirq.rz(rads=-16.6081808085027*np.pi).on(q[19]),\n", - " cirq.rz(rads=-8.211658529535743*np.pi).on(q[20]),\n", - " cirq.rz(rads=8.3147680685528*np.pi).on(q[21]),\n", - " cirq.rz(rads=-12.993307215153958*np.pi).on(q[22]),\n", - " cirq.rz(rads=12.706468621589535*np.pi).on(q[23]),\n", - " cirq.rz(rads=-10.31291350227552*np.pi).on(q[24]),\n", - " cirq.rz(rads=10.030056664474653*np.pi).on(q[25]),\n", - " cirq.rz(rads=-19.012829891376892*np.pi).on(q[26]),\n", - " cirq.rz(rads=19.08782579335034*np.pi).on(q[27]),\n", - " cirq.rz(rads=-10.745583222538006*np.pi).on(q[30]),\n", - " cirq.rz(rads=10.644856462836547*np.pi).on(q[31]),\n", - " cirq.X(q[0])**0.5,\n", - " cirq.Y(q[1])**0.5,\n", - " [cirq.X(q[2])**0.5, cirq.H(q[2])**0.5, cirq.X(q[2])**-0.5],\n", - " cirq.Y(q[3])**0.5,\n", - " cirq.X(q[4])**0.5,\n", - " cirq.X(q[5])**0.5,\n", - " [cirq.X(q[6])**0.5, cirq.H(q[6])**0.5, cirq.X(q[6])**-0.5],\n", - " cirq.Y(q[7])**0.5,\n", - " [cirq.X(q[8])**0.5, cirq.H(q[8])**0.5, cirq.X(q[8])**-0.5],\n", - " [cirq.X(q[9])**0.5, cirq.H(q[9])**0.5, cirq.X(q[9])**-0.5],\n", - " cirq.Y(q[10])**0.5,\n", - " cirq.X(q[11])**0.5,\n", - " cirq.X(q[12])**0.5,\n", - " [cirq.X(q[13])**0.5, cirq.H(q[13])**0.5, cirq.X(q[13])**-0.5],\n", - " cirq.Y(q[14])**0.5,\n", - " cirq.X(q[15])**0.5,\n", - " cirq.Y(q[16])**0.5,\n", - " cirq.Y(q[17])**0.5,\n", - " cirq.Y(q[18])**0.5,\n", - " cirq.X(q[19])**0.5,\n", - " cirq.X(q[20])**0.5,\n", - " [cirq.X(q[21])**0.5, cirq.H(q[21])**0.5, cirq.X(q[21])**-0.5],\n", - " cirq.Y(q[22])**0.5,\n", - " [cirq.X(q[23])**0.5, cirq.H(q[23])**0.5, cirq.X(q[23])**-0.5],\n", - " [cirq.X(q[24])**0.5, cirq.H(q[24])**0.5, cirq.X(q[24])**-0.5],\n", - " cirq.X(q[25])**0.5,\n", - " [cirq.X(q[26])**0.5, cirq.H(q[26])**0.5, cirq.X(q[26])**-0.5],\n", - " [cirq.X(q[27])**0.5, cirq.H(q[27])**0.5, cirq.X(q[27])**-0.5],\n", - " [cirq.X(q[28])**0.5, cirq.H(q[28])**0.5, cirq.X(q[28])**-0.5],\n", - " cirq.Y(q[29])**0.5,\n", - " cirq.Y(q[30])**0.5,\n", - " [cirq.X(q[31])**0.5, cirq.H(q[31])**0.5, cirq.X(q[31])**-0.5]\n", + " cirq.Y(q[0]) ** 0.5,\n", + " cirq.X(q[1]) ** 0.5,\n", + " cirq.X(q[2]) ** 0.5,\n", + " cirq.X(q[3]) ** 0.5,\n", + " cirq.Y(q[4]) ** 0.5,\n", + " cirq.X(q[5]) ** 0.5,\n", + " [cirq.X(q[6]) ** 0.5, cirq.H(q[6]) ** 0.5, cirq.X(q[6]) ** -0.5],\n", + " cirq.Y(q[7]) ** 0.5,\n", + " [cirq.X(q[8]) ** 0.5, cirq.H(q[8]) ** 0.5, cirq.X(q[8]) ** -0.5],\n", + " cirq.Y(q[9]) ** 0.5,\n", + " cirq.Y(q[10]) ** 0.5,\n", + " cirq.X(q[11]) ** 0.5,\n", + " [cirq.X(q[12]) ** 0.5, cirq.H(q[12]) ** 0.5, cirq.X(q[12]) ** -0.5],\n", + " cirq.X(q[13]) ** 0.5,\n", + " [cirq.X(q[14]) ** 0.5, cirq.H(q[14]) ** 0.5, cirq.X(q[14]) ** -0.5],\n", + " cirq.X(q[15]) ** 0.5,\n", + " cirq.X(q[16]) ** 0.5,\n", + " [cirq.X(q[17]) ** 0.5, cirq.H(q[17]) ** 0.5, cirq.X(q[17]) ** -0.5],\n", + " cirq.X(q[18]) ** 0.5,\n", + " cirq.Y(q[19]) ** 0.5,\n", + " cirq.X(q[20]) ** 0.5,\n", + " cirq.X(q[21]) ** 0.5,\n", + " cirq.Y(q[22]) ** 0.5,\n", + " cirq.Y(q[23]) ** 0.5,\n", + " cirq.X(q[24]) ** 0.5,\n", + " [cirq.X(q[25]) ** 0.5, cirq.H(q[25]) ** 0.5, cirq.X(q[25]) ** -0.5],\n", + " cirq.X(q[26]) ** 0.5,\n", + " cirq.X(q[27]) ** 0.5,\n", + " cirq.X(q[28]) ** 0.5,\n", + " [cirq.X(q[29]) ** 0.5, cirq.H(q[29]) ** 0.5, cirq.X(q[29]) ** -0.5],\n", + " [cirq.X(q[30]) ** 0.5, cirq.H(q[30]) ** 0.5, cirq.X(q[30]) ** -0.5],\n", + " cirq.X(q[31]) ** 0.5,\n", + " cirq.rz(rads=-2.079870303178702 * np.pi).on(q[1]),\n", + " cirq.rz(rads=2.0436918407499873 * np.pi).on(q[2]),\n", + " cirq.rz(rads=1.2371391697444234 * np.pi).on(q[3]),\n", + " cirq.rz(rads=-1.2825274365288457 * np.pi).on(q[4]),\n", + " cirq.rz(rads=-0.6529975013575373 * np.pi).on(q[5]),\n", + " cirq.rz(rads=0.21248377848559125 * np.pi).on(q[6]),\n", + " cirq.rz(rads=0.2767373377033284 * np.pi).on(q[8]),\n", + " cirq.rz(rads=-0.18492941569567625 * np.pi).on(q[9]),\n", + " cirq.rz(rads=0.02232591119805812 * np.pi).on(q[10]),\n", + " cirq.rz(rads=-0.030028573876142287 * np.pi).on(q[11]),\n", + " cirq.rz(rads=-0.8467509808142173 * np.pi).on(q[12]),\n", + " cirq.rz(rads=0.8164932597686655 * np.pi).on(q[13]),\n", + " cirq.rz(rads=-1.00125113388313 * np.pi).on(q[14]),\n", + " cirq.rz(rads=1.1224546746752684 * np.pi).on(q[15]),\n", + " cirq.rz(rads=-0.16310561378711827 * np.pi).on(q[16]),\n", + " cirq.rz(rads=0.1766183348870303 * np.pi).on(q[17]),\n", + " cirq.rz(rads=-0.22542387771877406 * np.pi).on(q[19]),\n", + " cirq.rz(rads=0.2814659583608806 * np.pi).on(q[20]),\n", + " cirq.rz(rads=-0.33113463396189063 * np.pi).on(q[21]),\n", + " cirq.rz(rads=0.40440704518468423 * np.pi).on(q[22]),\n", + " cirq.rz(rads=-0.4081262439699967 * np.pi).on(q[25]),\n", + " cirq.rz(rads=0.3666829187201306 * np.pi).on(q[26]),\n", + " cirq.rz(rads=-0.3507308388473503 * np.pi).on(q[27]),\n", + " cirq.rz(rads=0.37554649493270875 * np.pi).on(q[28]),\n", + " cirq.rz(rads=-1.4187954353764791 * np.pi).on(q[29]),\n", + " cirq.rz(rads=1.5102819373895253 * np.pi).on(q[30]),\n", + " [\n", + " cirq.ISWAP(q[1], q[2]) ** -0.9570391651387101,\n", + " cirq.CZ(q[1], q[2]) ** -0.17511624695473224,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[3], q[4]) ** -1.0141403689884423,\n", + " cirq.CZ(q[3], q[4]) ** -0.17046670168281958,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[5], q[6]) ** -1.013386784909492,\n", + " cirq.CZ(q[5], q[6]) ** 1.8378144783929071,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[8], q[9]) ** -1.009868884178167,\n", + " cirq.CZ(q[8], q[9]) ** -0.16552586798219657,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[10], q[11]) ** -0.973165668451805,\n", + " cirq.CZ(q[10], q[11]) ** -0.1627822085708043,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[12], q[13]) ** -0.9967062367293744,\n", + " cirq.CZ(q[12], q[13]) ** -0.16320564272090876,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[14], q[15]) ** -0.9733750299685556,\n", + " cirq.CZ(q[14], q[15]) ** -0.16091330726740966,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[16], q[17]) ** -0.9794265878513263,\n", + " cirq.CZ(q[16], q[17]) ** -0.16849356010919606,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[19], q[20]) ** -0.9375857698276336,\n", + " cirq.CZ(q[19], q[20]) ** -0.144908770657389,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[21], q[22]) ** -0.9769678680475263,\n", + " cirq.CZ(q[21], q[22]) ** -0.16332605888196952,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[25], q[26]) ** -0.9656924944561719,\n", + " cirq.CZ(q[25], q[26]) ** -0.1474408404408433,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[27], q[28]) ** -0.9998377482375511,\n", + " cirq.CZ(q[27], q[28]) ** -0.15252451837046574,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[29], q[30]) ** -0.9878279109459591,\n", + " cirq.CZ(q[29], q[30]) ** -0.1609201967232209,\n", + " ],\n", + " cirq.rz(rads=1.3803105504474993 * np.pi).on(q[1]),\n", + " cirq.rz(rads=-1.4164890128762133 * np.pi).on(q[2]),\n", + " cirq.rz(rads=-0.7660705551087533 * np.pi).on(q[3]),\n", + " cirq.rz(rads=0.7206822883243308 * np.pi).on(q[4]),\n", + " cirq.rz(rads=1.3183560383893944 * np.pi).on(q[5]),\n", + " cirq.rz(rads=-1.7588697612613406 * np.pi).on(q[6]),\n", + " cirq.rz(rads=-0.6722145774944012 * np.pi).on(q[8]),\n", + " cirq.rz(rads=0.7640224995020534 * np.pi).on(q[9]),\n", + " cirq.rz(rads=0.5799079899133832 * np.pi).on(q[10]),\n", + " cirq.rz(rads=-0.5876106525914674 * np.pi).on(q[11]),\n", + " cirq.rz(rads=1.0843371101222938 * np.pi).on(q[12]),\n", + " cirq.rz(rads=-1.1145948311678457 * np.pi).on(q[13]),\n", + " cirq.rz(rads=0.7990757781248072 * np.pi).on(q[14]),\n", + " cirq.rz(rads=-0.6778722373326689 * np.pi).on(q[15]),\n", + " cirq.rz(rads=-1.6258237067659351 * np.pi).on(q[16]),\n", + " cirq.rz(rads=1.6393364278658469 * np.pi).on(q[17]),\n", + " cirq.rz(rads=0.7948295009385445 * np.pi).on(q[19]),\n", + " cirq.rz(rads=-0.7387874202964381 * np.pi).on(q[20]),\n", + " cirq.rz(rads=0.049341949396894985 * np.pi).on(q[21]),\n", + " cirq.rz(rads=0.02393046182589869 * np.pi).on(q[22]),\n", + " cirq.rz(rads=0.4710627118441926 * np.pi).on(q[25]),\n", + " cirq.rz(rads=-0.5125060370940587 * np.pi).on(q[26]),\n", + " cirq.rz(rads=2.1645856475342256 * np.pi).on(q[27]),\n", + " cirq.rz(rads=-2.1397699914488673 * np.pi).on(q[28]),\n", + " cirq.rz(rads=1.2773117920270392 * np.pi).on(q[29]),\n", + " cirq.rz(rads=-1.1858252900139932 * np.pi).on(q[30]),\n", + " cirq.X(q[0]) ** 0.5,\n", + " cirq.Y(q[1]) ** 0.5,\n", + " cirq.Y(q[2]) ** 0.5,\n", + " [cirq.X(q[3]) ** 0.5, cirq.H(q[3]) ** 0.5, cirq.X(q[3]) ** -0.5],\n", + " [cirq.X(q[4]) ** 0.5, cirq.H(q[4]) ** 0.5, cirq.X(q[4]) ** -0.5],\n", + " [cirq.X(q[5]) ** 0.5, cirq.H(q[5]) ** 0.5, cirq.X(q[5]) ** -0.5],\n", + " cirq.Y(q[6]) ** 0.5,\n", + " cirq.X(q[7]) ** 0.5,\n", + " cirq.Y(q[8]) ** 0.5,\n", + " [cirq.X(q[9]) ** 0.5, cirq.H(q[9]) ** 0.5, cirq.X(q[9]) ** -0.5],\n", + " [cirq.X(q[10]) ** 0.5, cirq.H(q[10]) ** 0.5, cirq.X(q[10]) ** -0.5],\n", + " [cirq.X(q[11]) ** 0.5, cirq.H(q[11]) ** 0.5, cirq.X(q[11]) ** -0.5],\n", + " cirq.Y(q[12]) ** 0.5,\n", + " [cirq.X(q[13]) ** 0.5, cirq.H(q[13]) ** 0.5, cirq.X(q[13]) ** -0.5],\n", + " cirq.Y(q[14]) ** 0.5,\n", + " [cirq.X(q[15]) ** 0.5, cirq.H(q[15]) ** 0.5, cirq.X(q[15]) ** -0.5],\n", + " [cirq.X(q[16]) ** 0.5, cirq.H(q[16]) ** 0.5, cirq.X(q[16]) ** -0.5],\n", + " cirq.X(q[17]) ** 0.5,\n", + " cirq.Y(q[18]) ** 0.5,\n", + " [cirq.X(q[19]) ** 0.5, cirq.H(q[19]) ** 0.5, cirq.X(q[19]) ** -0.5],\n", + " cirq.Y(q[20]) ** 0.5,\n", + " cirq.Y(q[21]) ** 0.5,\n", + " cirq.X(q[22]) ** 0.5,\n", + " [cirq.X(q[23]) ** 0.5, cirq.H(q[23]) ** 0.5, cirq.X(q[23]) ** -0.5],\n", + " cirq.Y(q[24]) ** 0.5,\n", + " cirq.Y(q[25]) ** 0.5,\n", + " cirq.Y(q[26]) ** 0.5,\n", + " [cirq.X(q[27]) ** 0.5, cirq.H(q[27]) ** 0.5, cirq.X(q[27]) ** -0.5],\n", + " cirq.Y(q[28]) ** 0.5,\n", + " cirq.X(q[29]) ** 0.5,\n", + " cirq.X(q[30]) ** 0.5,\n", + " [cirq.X(q[31]) ** 0.5, cirq.H(q[31]) ** 0.5, cirq.X(q[31]) ** -0.5],\n", + " cirq.rz(rads=-5.435868884042397 * np.pi).on(q[0]),\n", + " cirq.rz(rads=5.438497289344933 * np.pi).on(q[1]),\n", + " cirq.rz(rads=-5.19048555249959 * np.pi).on(q[4]),\n", + " cirq.rz(rads=5.170988862096221 * np.pi).on(q[5]),\n", + " cirq.rz(rads=2.5333591271878086 * np.pi).on(q[7]),\n", + " cirq.rz(rads=-2.4748096263683066 * np.pi).on(q[8]),\n", + " cirq.rz(rads=-4.480708067260001 * np.pi).on(q[9]),\n", + " cirq.rz(rads=4.525888267898699 * np.pi).on(q[10]),\n", + " cirq.rz(rads=2.135954522972214 * np.pi).on(q[13]),\n", + " cirq.rz(rads=-2.1822665205802965 * np.pi).on(q[14]),\n", + " cirq.rz(rads=-3.7780476633662574 * np.pi).on(q[15]),\n", + " cirq.rz(rads=3.817335880513747 * np.pi).on(q[16]),\n", + " cirq.rz(rads=-2.8819419896554686 * np.pi).on(q[18]),\n", + " cirq.rz(rads=2.9028256034569604 * np.pi).on(q[19]),\n", + " cirq.rz(rads=0.7811374803446167 * np.pi).on(q[20]),\n", + " cirq.rz(rads=-0.6780279413275597 * np.pi).on(q[21]),\n", + " cirq.rz(rads=1.863573798571082 * np.pi).on(q[22]),\n", + " cirq.rz(rads=-2.150412392135508 * np.pi).on(q[23]),\n", + " cirq.rz(rads=2.2532274955007456 * np.pi).on(q[24]),\n", + " cirq.rz(rads=-2.5360843333016145 * np.pi).on(q[25]),\n", + " cirq.rz(rads=2.3134893226730737 * np.pi).on(q[26]),\n", + " cirq.rz(rads=-2.238493420699622 * np.pi).on(q[27]),\n", + " cirq.rz(rads=1.42630741834175 * np.pi).on(q[30]),\n", + " cirq.rz(rads=-1.5270341780432073 * np.pi).on(q[31]),\n", + " [\n", + " cirq.ISWAP(q[0], q[1]) ** -0.969777854908417,\n", + " cirq.CZ(q[0], q[1]) ** -0.21266743136622576,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[4], q[5]) ** -0.9959624181216683,\n", + " cirq.CZ(q[4], q[5]) ** -0.17314460131772672,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[7], q[8]) ** -0.8242343706275942,\n", + " cirq.CZ(q[7], q[8]) ** -0.15468164635790926,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[9], q[10]) ** -0.981653050634976,\n", + " cirq.CZ(q[9], q[10]) ** -0.1933349989832593,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[13], q[14]) ** -0.9637565510028211,\n", + " cirq.CZ(q[13], q[14]) ** -0.15186761578643612,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[15], q[16]) ** -1.0089894642925605,\n", + " cirq.CZ(q[15], q[16]) ** -0.17298943435986638,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[18], q[19]) ** -0.9446726997534635,\n", + " cirq.CZ(q[18], q[19]) ** -0.16140479146278733,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[20], q[21]) ** -0.980271915828302,\n", + " cirq.CZ(q[20], q[21]) ** -0.16470994863165317,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[22], q[23]) ** -0.9290392306402181,\n", + " cirq.CZ(q[22], q[23]) ** -0.1664963204791881,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[24], q[25]) ** -0.9486971380890047,\n", + " cirq.CZ(q[24], q[25]) ** -0.1448964931003518,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[26], q[27]) ** -0.9789198374818319,\n", + " cirq.CZ(q[26], q[27]) ** -0.14726825222820017,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[30], q[31]) ** -0.9389507566733047,\n", + " cirq.CZ(q[30], q[31]) ** -0.1385796856074536,\n", + " ],\n", + " cirq.rz(rads=5.79385605258612 * np.pi).on(q[0]),\n", + " cirq.rz(rads=-5.791227647283584 * np.pi).on(q[1]),\n", + " cirq.rz(rads=5.223139057027918 * np.pi).on(q[4]),\n", + " cirq.rz(rads=-5.242635747431287 * np.pi).on(q[5]),\n", + " cirq.rz(rads=-2.346072351850546 * np.pi).on(q[7]),\n", + " cirq.rz(rads=2.404621852670048 * np.pi).on(q[8]),\n", + " cirq.rz(rads=5.048199817882042 * np.pi).on(q[9]),\n", + " cirq.rz(rads=-5.0030196172433445 * np.pi).on(q[10]),\n", + " cirq.rz(rads=-2.6543362735839113 * np.pi).on(q[13]),\n", + " cirq.rz(rads=2.6080242759758283 * np.pi).on(q[14]),\n", + " cirq.rz(rads=3.9045088495271663 * np.pi).on(q[15]),\n", + " cirq.rz(rads=-3.8652206323796765 * np.pi).on(q[16]),\n", + " cirq.rz(rads=1.9770644223044243 * np.pi).on(q[18]),\n", + " cirq.rz(rads=-1.9561808085029322 * np.pi).on(q[19]),\n", + " cirq.rz(rads=-1.5516585295358842 * np.pi).on(q[20]),\n", + " cirq.rz(rads=1.6547680685529413 * np.pi).on(q[21]),\n", + " cirq.rz(rads=-1.8933072151541963 * np.pi).on(q[22]),\n", + " cirq.rz(rads=1.6064686215897703 * np.pi).on(q[23]),\n", + " cirq.rz(rads=-0.5449135022758093 * np.pi).on(q[24]),\n", + " cirq.rz(rads=0.2620566644749405 * np.pi).on(q[25]),\n", + " cirq.rz(rads=-2.3490397609251703 * np.pi).on(q[26]),\n", + " cirq.rz(rads=2.424035662898622 * np.pi).on(q[27]),\n", + " cirq.rz(rads=-1.8655832225378013 * np.pi).on(q[30]),\n", + " cirq.rz(rads=1.7648564628363437 * np.pi).on(q[31]),\n", + " [cirq.X(q[0]) ** 0.5, cirq.H(q[0]) ** 0.5, cirq.X(q[0]) ** -0.5],\n", + " cirq.X(q[1]) ** 0.5,\n", + " cirq.X(q[2]) ** 0.5,\n", + " cirq.Y(q[3]) ** 0.5,\n", + " cirq.X(q[4]) ** 0.5,\n", + " cirq.X(q[5]) ** 0.5,\n", + " [cirq.X(q[6]) ** 0.5, cirq.H(q[6]) ** 0.5, cirq.X(q[6]) ** -0.5],\n", + " cirq.Y(q[7]) ** 0.5,\n", + " [cirq.X(q[8]) ** 0.5, cirq.H(q[8]) ** 0.5, cirq.X(q[8]) ** -0.5],\n", + " cirq.Y(q[9]) ** 0.5,\n", + " cirq.Y(q[10]) ** 0.5,\n", + " cirq.X(q[11]) ** 0.5,\n", + " [cirq.X(q[12]) ** 0.5, cirq.H(q[12]) ** 0.5, cirq.X(q[12]) ** -0.5],\n", + " cirq.X(q[13]) ** 0.5,\n", + " cirq.X(q[14]) ** 0.5,\n", + " cirq.Y(q[15]) ** 0.5,\n", + " cirq.Y(q[16]) ** 0.5,\n", + " cirq.Y(q[17]) ** 0.5,\n", + " cirq.X(q[18]) ** 0.5,\n", + " cirq.X(q[19]) ** 0.5,\n", + " [cirq.X(q[20]) ** 0.5, cirq.H(q[20]) ** 0.5, cirq.X(q[20]) ** -0.5],\n", + " cirq.X(q[21]) ** 0.5,\n", + " cirq.Y(q[22]) ** 0.5,\n", + " cirq.X(q[23]) ** 0.5,\n", + " [cirq.X(q[24]) ** 0.5, cirq.H(q[24]) ** 0.5, cirq.X(q[24]) ** -0.5],\n", + " [cirq.X(q[25]) ** 0.5, cirq.H(q[25]) ** 0.5, cirq.X(q[25]) ** -0.5],\n", + " cirq.X(q[26]) ** 0.5,\n", + " cirq.Y(q[27]) ** 0.5,\n", + " cirq.X(q[28]) ** 0.5,\n", + " [cirq.X(q[29]) ** 0.5, cirq.H(q[29]) ** 0.5, cirq.X(q[29]) ** -0.5],\n", + " [cirq.X(q[30]) ** 0.5, cirq.H(q[30]) ** 0.5, cirq.X(q[30]) ** -0.5],\n", + " cirq.Y(q[31]) ** 0.5,\n", + " cirq.rz(rads=-6.214223110662173 * np.pi).on(q[3]),\n", + " cirq.rz(rads=6.24431588336413 * np.pi).on(q[8]),\n", + " cirq.rz(rads=-6.196295096608877 * np.pi).on(q[4]),\n", + " cirq.rz(rads=6.191833422443152 * np.pi).on(q[9]),\n", + " cirq.rz(rads=-5.367868774756692 * np.pi).on(q[5]),\n", + " cirq.rz(rads=5.257156584109544 * np.pi).on(q[10]),\n", + " cirq.rz(rads=-1.6118072404137829 * np.pi).on(q[6]),\n", + " cirq.rz(rads=1.5665192386902935 * np.pi).on(q[11]),\n", + " cirq.rz(rads=-5.408932498710608 * np.pi).on(q[12]),\n", + " cirq.rz(rads=5.396221422935972 * np.pi).on(q[19]),\n", + " cirq.rz(rads=-3.2786928385561493 * np.pi).on(q[13]),\n", + " cirq.rz(rads=3.339006443218924 * np.pi).on(q[20]),\n", + " cirq.rz(rads=-5.390755870544794 * np.pi).on(q[14]),\n", + " cirq.rz(rads=5.4172568990486605 * np.pi).on(q[21]),\n", + " cirq.rz(rads=-5.620144773112766 * np.pi).on(q[15]),\n", + " cirq.rz(rads=5.630469153514815 * np.pi).on(q[22]),\n", + " cirq.rz(rads=4.367652291347506 * np.pi).on(q[16]),\n", + " cirq.rz(rads=-3.9105776028384707 * np.pi).on(q[23]),\n", + " cirq.rz(rads=7.0181466269225865 * np.pi).on(q[25]),\n", + " cirq.rz(rads=-7.000766026200176 * np.pi).on(q[29]),\n", + " cirq.rz(rads=5.700873278515409 * np.pi).on(q[26]),\n", + " cirq.rz(rads=-5.683378195921049 * np.pi).on(q[30]),\n", + " cirq.rz(rads=4.586335789661189 * np.pi).on(q[27]),\n", + " cirq.rz(rads=-4.76537552715921 * np.pi).on(q[31]),\n", + " [\n", + " cirq.ISWAP(q[3], q[8]) ** -0.9582439102445623,\n", + " cirq.CZ(q[3], q[8]) ** -0.16481196420780725,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[4], q[9]) ** -0.9924132629744455,\n", + " cirq.CZ(q[4], q[9]) ** -0.17814200700009597,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[5], q[10]) ** -1.0126733526485854,\n", + " cirq.CZ(q[5], q[10]) ** -0.18074346084220166,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[6], q[11]) ** -0.9737940569293067,\n", + " cirq.CZ(q[6], q[11]) ** -0.17117494551642629,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[12], q[19]) ** -0.9744121515000286,\n", + " cirq.CZ(q[12], q[19]) ** -0.16733875650098531,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[13], q[20]) ** -1.0121115249769066,\n", + " cirq.CZ(q[13], q[20]) ** -0.16059979031178617,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[14], q[21]) ** -0.985003985982119,\n", + " cirq.CZ(q[14], q[21]) ** -0.16606010863938203,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[15], q[22]) ** -0.9628319095031052,\n", + " cirq.CZ(q[15], q[22]) ** -0.16339300450568622,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[16], q[23]) ** -0.9999941453695372,\n", + " cirq.CZ(q[16], q[23]) ** -0.16477879415124544,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[25], q[29]) ** -1.0162656461553201,\n", + " cirq.CZ(q[25], q[29]) ** -0.1624755502163923,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[26], q[30]) ** -0.9778318391639494,\n", + " cirq.CZ(q[26], q[30]) ** -0.17777349355837574,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[27], q[31]) ** -0.881941750344955,\n", + " cirq.CZ(q[27], q[31]) ** -0.18326258546194193,\n", + " ],\n", + " cirq.rz(rads=6.89944406229822 * np.pi).on(q[3]),\n", + " cirq.rz(rads=-6.869351289596263 * np.pi).on(q[8]),\n", + " cirq.rz(rads=6.506615138479995 * np.pi).on(q[4]),\n", + " cirq.rz(rads=-6.511076812645719 * np.pi).on(q[9]),\n", + " cirq.rz(rads=6.150506057270183 * np.pi).on(q[5]),\n", + " cirq.rz(rads=-6.2612182479173315 * np.pi).on(q[10]),\n", + " cirq.rz(rads=2.4087294851133443 * np.pi).on(q[6]),\n", + " cirq.rz(rads=-2.4540174868368334 * np.pi).on(q[11]),\n", + " cirq.rz(rads=4.737705877923889 * np.pi).on(q[12]),\n", + " cirq.rz(rads=-4.750416953698525 * np.pi).on(q[19]),\n", + " cirq.rz(rads=2.9425087256630427 * np.pi).on(q[13]),\n", + " cirq.rz(rads=-2.882195121000268 * np.pi).on(q[20]),\n", + " cirq.rz(rads=4.466531408750767 * np.pi).on(q[14]),\n", + " cirq.rz(rads=-4.440030380246901 * np.pi).on(q[21]),\n", + " cirq.rz(rads=4.486471496440378 * np.pi).on(q[15]),\n", + " cirq.rz(rads=-4.476147116038329 * np.pi).on(q[22]),\n", + " cirq.rz(rads=-4.89701654221443 * np.pi).on(q[16]),\n", + " cirq.rz(rads=5.354091230723465 * np.pi).on(q[23]),\n", + " cirq.rz(rads=-5.629287261948809 * np.pi).on(q[25]),\n", + " cirq.rz(rads=5.646667862671219 * np.pi).on(q[29]),\n", + " cirq.rz(rads=-5.760627714067928 * np.pi).on(q[26]),\n", + " cirq.rz(rads=5.778122796662288 * np.pi).on(q[30]),\n", + " cirq.rz(rads=-3.985782702743221 * np.pi).on(q[27]),\n", + " cirq.rz(rads=3.806742965245199 * np.pi).on(q[31]),\n", + " cirq.X(q[0]) ** 0.5,\n", + " cirq.Y(q[1]) ** 0.5,\n", + " cirq.Y(q[2]) ** 0.5,\n", + " [cirq.X(q[3]) ** 0.5, cirq.H(q[3]) ** 0.5, cirq.X(q[3]) ** -0.5],\n", + " [cirq.X(q[4]) ** 0.5, cirq.H(q[4]) ** 0.5, cirq.X(q[4]) ** -0.5],\n", + " cirq.Y(q[5]) ** 0.5,\n", + " cirq.X(q[6]) ** 0.5,\n", + " [cirq.X(q[7]) ** 0.5, cirq.H(q[7]) ** 0.5, cirq.X(q[7]) ** -0.5],\n", + " cirq.X(q[8]) ** 0.5,\n", + " [cirq.X(q[9]) ** 0.5, cirq.H(q[9]) ** 0.5, cirq.X(q[9]) ** -0.5],\n", + " [cirq.X(q[10]) ** 0.5, cirq.H(q[10]) ** 0.5, cirq.X(q[10]) ** -0.5],\n", + " cirq.Y(q[11]) ** 0.5,\n", + " cirq.Y(q[12]) ** 0.5,\n", + " [cirq.X(q[13]) ** 0.5, cirq.H(q[13]) ** 0.5, cirq.X(q[13]) ** -0.5],\n", + " cirq.Y(q[14]) ** 0.5,\n", + " [cirq.X(q[15]) ** 0.5, cirq.H(q[15]) ** 0.5, cirq.X(q[15]) ** -0.5],\n", + " [cirq.X(q[16]) ** 0.5, cirq.H(q[16]) ** 0.5, cirq.X(q[16]) ** -0.5],\n", + " cirq.X(q[17]) ** 0.5,\n", + " cirq.Y(q[18]) ** 0.5,\n", + " cirq.Y(q[19]) ** 0.5,\n", + " cirq.X(q[20]) ** 0.5,\n", + " cirq.Y(q[21]) ** 0.5,\n", + " cirq.X(q[22]) ** 0.5,\n", + " cirq.Y(q[23]) ** 0.5,\n", + " cirq.X(q[24]) ** 0.5,\n", + " cirq.X(q[25]) ** 0.5,\n", + " cirq.Y(q[26]) ** 0.5,\n", + " [cirq.X(q[27]) ** 0.5, cirq.H(q[27]) ** 0.5, cirq.X(q[27]) ** -0.5],\n", + " [cirq.X(q[28]) ** 0.5, cirq.H(q[28]) ** 0.5, cirq.X(q[28]) ** -0.5],\n", + " cirq.X(q[29]) ** 0.5,\n", + " cirq.Y(q[30]) ** 0.5,\n", + " cirq.X(q[31]) ** 0.5,\n", + " cirq.rz(rads=-2.4865845873665364 * np.pi).on(q[0]),\n", + " cirq.rz(rads=2.4890814068883764 * np.pi).on(q[4]),\n", + " cirq.rz(rads=-2.4240781150731663 * np.pi).on(q[1]),\n", + " cirq.rz(rads=2.419398026235366 * np.pi).on(q[5]),\n", + " cirq.rz(rads=2.3861256785493166 * np.pi).on(q[2]),\n", + " cirq.rz(rads=-2.392456163642626 * np.pi).on(q[6]),\n", + " cirq.rz(rads=12.703597923836748 * np.pi).on(q[7]),\n", + " cirq.rz(rads=-12.7869629079138 * np.pi).on(q[13]),\n", + " cirq.rz(rads=12.184253063938954 * np.pi).on(q[8]),\n", + " cirq.rz(rads=-12.108584830758572 * np.pi).on(q[14]),\n", + " cirq.rz(rads=3.782562501914174 * np.pi).on(q[9]),\n", + " cirq.rz(rads=-3.873596611893716 * np.pi).on(q[15]),\n", + " cirq.rz(rads=4.772639843256901 * np.pi).on(q[10]),\n", + " cirq.rz(rads=-4.771314675186062 * np.pi).on(q[16]),\n", + " cirq.rz(rads=8.49593730829863 * np.pi).on(q[11]),\n", + " cirq.rz(rads=-8.479908941862229 * np.pi).on(q[17]),\n", + " cirq.rz(rads=1.639481743922408 * np.pi).on(q[18]),\n", + " cirq.rz(rads=-1.9319083897827265 * np.pi).on(q[24]),\n", + " cirq.rz(rads=9.60223181672896 * np.pi).on(q[19]),\n", + " cirq.rz(rads=-9.605639326034064 * np.pi).on(q[25]),\n", + " cirq.rz(rads=6.330499004273446 * np.pi).on(q[20]),\n", + " cirq.rz(rads=-6.2177071019033425 * np.pi).on(q[26]),\n", + " cirq.rz(rads=9.851852381617888 * np.pi).on(q[21]),\n", + " cirq.rz(rads=-9.926465199012979 * np.pi).on(q[27]),\n", + " cirq.rz(rads=6.431104618355057 * np.pi).on(q[22]),\n", + " cirq.rz(rads=-6.38660616379351 * np.pi).on(q[28]),\n", + " [\n", + " cirq.ISWAP(q[0], q[4]) ** -0.9984812470539374,\n", + " cirq.CZ(q[0], q[4]) ** -0.17233320530255947,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[1], q[5]) ** -1.0282887997603027,\n", + " cirq.CZ(q[1], q[5]) ** -0.16427011854127802,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[2], q[6]) ** -0.9575293160506735,\n", + " cirq.CZ(q[2], q[6]) ** -0.21522732166595954,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[7], q[13]) ** -0.933831313649303,\n", + " cirq.CZ(q[7], q[13]) ** -0.1583933739924931,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[8], q[14]) ** -0.9390847780661252,\n", + " cirq.CZ(q[8], q[14]) ** -0.17144555428591543,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[9], q[15]) ** -1.0209160715892363,\n", + " cirq.CZ(q[9], q[15]) ** -0.14849009270439747,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[10], q[16]) ** -1.0287988330229174,\n", + " cirq.CZ(q[10], q[16]) ** -0.1385888562342036,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[11], q[17]) ** -1.0128317439690167,\n", + " cirq.CZ(q[11], q[17]) ** -0.1669440143200578,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[18], q[24]) ** -0.8044060664115181,\n", + " cirq.CZ(q[18], q[24]) ** -0.10552370353526683,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[19], q[25]) ** -0.9705721508169989,\n", + " cirq.CZ(q[19], q[25]) ** -0.15402718033611607,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[20], q[26]) ** -0.989459174023089,\n", + " cirq.CZ(q[20], q[26]) ** -0.16509252502035418,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[21], q[27]) ** -0.9618960066063004,\n", + " cirq.CZ(q[21], q[27]) ** -0.15722561327755682,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[22], q[28]) ** -1.0052002427791902,\n", + " cirq.CZ(q[22], q[28]) ** -0.16175415193774326,\n", + " ],\n", + " cirq.rz(rads=2.557874433792943 * np.pi).on(q[0]),\n", + " cirq.rz(rads=-2.555377614271102 * np.pi).on(q[4]),\n", + " cirq.rz(rads=1.9789952328325573 * np.pi).on(q[1]),\n", + " cirq.rz(rads=-1.9836753216703575 * np.pi).on(q[5]),\n", + " cirq.rz(rads=-2.805807436079691 * np.pi).on(q[2]),\n", + " cirq.rz(rads=2.7994769509863815 * np.pi).on(q[6]),\n", + " cirq.rz(rads=-12.477250219528523 * np.pi).on(q[7]),\n", + " cirq.rz(rads=12.39388523545147 * np.pi).on(q[13]),\n", + " cirq.rz(rads=-11.31088974563283 * np.pi).on(q[8]),\n", + " cirq.rz(rads=11.386557978813212 * np.pi).on(q[14]),\n", + " cirq.rz(rads=-5.4898636407973544 * np.pi).on(q[9]),\n", + " cirq.rz(rads=5.398829530817813 * np.pi).on(q[15]),\n", + " cirq.rz(rads=-5.863871460773714 * np.pi).on(q[10]),\n", + " cirq.rz(rads=5.8651966288445525 * np.pi).on(q[16]),\n", + " cirq.rz(rads=-8.850693052252502 * np.pi).on(q[11]),\n", + " cirq.rz(rads=8.866721418688904 * np.pi).on(q[17]),\n", + " cirq.rz(rads=-2.40381552479658 * np.pi).on(q[18]),\n", + " cirq.rz(rads=2.1113888789362614 * np.pi).on(q[24]),\n", + " cirq.rz(rads=-10.03456101076628 * np.pi).on(q[19]),\n", + " cirq.rz(rads=10.031153501461176 * np.pi).on(q[25]),\n", + " cirq.rz(rads=-5.434421382024706 * np.pi).on(q[20]),\n", + " cirq.rz(rads=5.54721328439481 * np.pi).on(q[26]),\n", + " cirq.rz(rads=-9.17988634353845 * np.pi).on(q[21]),\n", + " cirq.rz(rads=9.10527352614336 * np.pi).on(q[27]),\n", + " cirq.rz(rads=-6.5670035038476025 * np.pi).on(q[22]),\n", + " cirq.rz(rads=6.61150195840915 * np.pi).on(q[28]),\n", + " cirq.Y(q[0]) ** 0.5,\n", + " cirq.X(q[1]) ** 0.5,\n", + " [cirq.X(q[2]) ** 0.5, cirq.H(q[2]) ** 0.5, cirq.X(q[2]) ** -0.5],\n", + " cirq.X(q[3]) ** 0.5,\n", + " cirq.Y(q[4]) ** 0.5,\n", + " cirq.X(q[5]) ** 0.5,\n", + " cirq.Y(q[6]) ** 0.5,\n", + " cirq.Y(q[7]) ** 0.5,\n", + " [cirq.X(q[8]) ** 0.5, cirq.H(q[8]) ** 0.5, cirq.X(q[8]) ** -0.5],\n", + " cirq.X(q[9]) ** 0.5,\n", + " cirq.Y(q[10]) ** 0.5,\n", + " cirq.X(q[11]) ** 0.5,\n", + " [cirq.X(q[12]) ** 0.5, cirq.H(q[12]) ** 0.5, cirq.X(q[12]) ** -0.5],\n", + " cirq.X(q[13]) ** 0.5,\n", + " cirq.X(q[14]) ** 0.5,\n", + " cirq.Y(q[15]) ** 0.5,\n", + " cirq.X(q[16]) ** 0.5,\n", + " cirq.Y(q[17]) ** 0.5,\n", + " cirq.X(q[18]) ** 0.5,\n", + " cirq.X(q[19]) ** 0.5,\n", + " cirq.Y(q[20]) ** 0.5,\n", + " cirq.X(q[21]) ** 0.5,\n", + " cirq.Y(q[22]) ** 0.5,\n", + " cirq.X(q[23]) ** 0.5,\n", + " cirq.Y(q[24]) ** 0.5,\n", + " cirq.Y(q[25]) ** 0.5,\n", + " [cirq.X(q[26]) ** 0.5, cirq.H(q[26]) ** 0.5, cirq.X(q[26]) ** -0.5],\n", + " cirq.Y(q[27]) ** 0.5,\n", + " cirq.X(q[28]) ** 0.5,\n", + " cirq.Y(q[29]) ** 0.5,\n", + " [cirq.X(q[30]) ** 0.5, cirq.H(q[30]) ** 0.5, cirq.X(q[30]) ** -0.5],\n", + " cirq.Y(q[31]) ** 0.5,\n", + " cirq.rz(rads=-13.031870303178678 * np.pi).on(q[1]),\n", + " cirq.rz(rads=12.995691840749963 * np.pi).on(q[2]),\n", + " cirq.rz(rads=5.381139169744492 * np.pi).on(q[3]),\n", + " cirq.rz(rads=-5.426527436528915 * np.pi).on(q[4]),\n", + " cirq.rz(rads=-6.86899750135751 * np.pi).on(q[5]),\n", + " cirq.rz(rads=6.428483778485565 * np.pi).on(q[6]),\n", + " cirq.rz(rads=5.16073733770325 * np.pi).on(q[8]),\n", + " cirq.rz(rads=-5.068929415695599 * np.pi).on(q[9]),\n", + " cirq.rz(rads=-0.7176740888019262 * np.pi).on(q[10]),\n", + " cirq.rz(rads=0.7099714261238419 * np.pi).on(q[11]),\n", + " cirq.rz(rads=-4.694750980814187 * np.pi).on(q[12]),\n", + " cirq.rz(rads=4.664493259768636 * np.pi).on(q[13]),\n", + " cirq.rz(rads=-4.701251133883051 * np.pi).on(q[14]),\n", + " cirq.rz(rads=4.82245467467519 * np.pi).on(q[15]),\n", + " cirq.rz(rads=3.5368943862129347 * np.pi).on(q[16]),\n", + " cirq.rz(rads=-3.523381665113022 * np.pi).on(q[17]),\n", + " cirq.rz(rads=-1.113423877718808 * np.pi).on(q[19]),\n", + " cirq.rz(rads=1.1694659583609144 * np.pi).on(q[20]),\n", + " cirq.rz(rads=-3.587134633961795 * np.pi).on(q[21]),\n", + " cirq.rz(rads=3.6604070451845887 * np.pi).on(q[22]),\n", + " cirq.rz(rads=-5.2921262439699195 * np.pi).on(q[25]),\n", + " cirq.rz(rads=5.250682918720053 * np.pi).on(q[26]),\n", + " cirq.rz(rads=-6.349327548997941 * np.pi).on(q[27]),\n", + " cirq.rz(rads=6.3741432050833 * np.pi).on(q[28]),\n", + " cirq.rz(rads=-7.486795435376533 * np.pi).on(q[29]),\n", + " cirq.rz(rads=7.578281937389579 * np.pi).on(q[30]),\n", + " [\n", + " cirq.ISWAP(q[1], q[2]) ** -0.9570391651387101,\n", + " cirq.CZ(q[1], q[2]) ** -0.17511624695473224,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[3], q[4]) ** -1.0141403689884423,\n", + " cirq.CZ(q[3], q[4]) ** -0.17046670168281958,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[5], q[6]) ** -1.013386784909492,\n", + " cirq.CZ(q[5], q[6]) ** 1.8378144783929071,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[8], q[9]) ** -1.009868884178167,\n", + " cirq.CZ(q[8], q[9]) ** -0.16552586798219657,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[10], q[11]) ** -0.973165668451805,\n", + " cirq.CZ(q[10], q[11]) ** -0.1627822085708043,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[12], q[13]) ** -0.9967062367293744,\n", + " cirq.CZ(q[12], q[13]) ** -0.16320564272090876,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[14], q[15]) ** -0.9733750299685556,\n", + " cirq.CZ(q[14], q[15]) ** -0.16091330726740966,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[16], q[17]) ** -0.9794265878513263,\n", + " cirq.CZ(q[16], q[17]) ** -0.16849356010919606,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[19], q[20]) ** -0.9375857698276336,\n", + " cirq.CZ(q[19], q[20]) ** -0.144908770657389,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[21], q[22]) ** -0.9769678680475263,\n", + " cirq.CZ(q[21], q[22]) ** -0.16332605888196952,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[25], q[26]) ** -0.9656924944561719,\n", + " cirq.CZ(q[25], q[26]) ** -0.1474408404408433,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[27], q[28]) ** -0.9998377482375511,\n", + " cirq.CZ(q[27], q[28]) ** -0.15252451837046574,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[29], q[30]) ** -0.9878279109459591,\n", + " cirq.CZ(q[29], q[30]) ** -0.1609201967232209,\n", + " ],\n", + " cirq.rz(rads=12.332310550447476 * np.pi).on(q[1]),\n", + " cirq.rz(rads=-12.36848901287619 * np.pi).on(q[2]),\n", + " cirq.rz(rads=-4.910070555108823 * np.pi).on(q[3]),\n", + " cirq.rz(rads=4.864682288324399 * np.pi).on(q[4]),\n", + " cirq.rz(rads=7.534356038389369 * np.pi).on(q[5]),\n", + " cirq.rz(rads=-7.974869761261314 * np.pi).on(q[6]),\n", + " cirq.rz(rads=-5.556214577494324 * np.pi).on(q[8]),\n", + " cirq.rz(rads=5.648022499501975 * np.pi).on(q[9]),\n", + " cirq.rz(rads=1.3199079899133674 * np.pi).on(q[10]),\n", + " cirq.rz(rads=-1.3276106525914517 * np.pi).on(q[11]),\n", + " cirq.rz(rads=4.932337110122265 * np.pi).on(q[12]),\n", + " cirq.rz(rads=-4.9625948311678165 * np.pi).on(q[13]),\n", + " cirq.rz(rads=4.499075778124728 * np.pi).on(q[14]),\n", + " cirq.rz(rads=-4.37787223733259 * np.pi).on(q[15]),\n", + " cirq.rz(rads=-5.325823706765988 * np.pi).on(q[16]),\n", + " cirq.rz(rads=5.3393364278658995 * np.pi).on(q[17]),\n", + " cirq.rz(rads=1.682829500938578 * np.pi).on(q[19]),\n", + " cirq.rz(rads=-1.6267874202964716 * np.pi).on(q[20]),\n", + " cirq.rz(rads=3.305341949396799 * np.pi).on(q[21]),\n", + " cirq.rz(rads=-3.232069538174005 * np.pi).on(q[22]),\n", + " cirq.rz(rads=5.3550627118441145 * np.pi).on(q[25]),\n", + " cirq.rz(rads=-5.39650603709398 * np.pi).on(q[26]),\n", + " cirq.rz(rads=8.163182357684818 * np.pi).on(q[27]),\n", + " cirq.rz(rads=-8.138366701599459 * np.pi).on(q[28]),\n", + " cirq.rz(rads=7.345311792027093 * np.pi).on(q[29]),\n", + " cirq.rz(rads=-7.253825290014047 * np.pi).on(q[30]),\n", + " [cirq.X(q[0]) ** 0.5, cirq.H(q[0]) ** 0.5, cirq.X(q[0]) ** -0.5],\n", + " cirq.Y(q[1]) ** 0.5,\n", + " cirq.Y(q[2]) ** 0.5,\n", + " [cirq.X(q[3]) ** 0.5, cirq.H(q[3]) ** 0.5, cirq.X(q[3]) ** -0.5],\n", + " cirq.X(q[4]) ** 0.5,\n", + " [cirq.X(q[5]) ** 0.5, cirq.H(q[5]) ** 0.5, cirq.X(q[5]) ** -0.5],\n", + " [cirq.X(q[6]) ** 0.5, cirq.H(q[6]) ** 0.5, cirq.X(q[6]) ** -0.5],\n", + " [cirq.X(q[7]) ** 0.5, cirq.H(q[7]) ** 0.5, cirq.X(q[7]) ** -0.5],\n", + " cirq.X(q[8]) ** 0.5,\n", + " cirq.Y(q[9]) ** 0.5,\n", + " cirq.X(q[10]) ** 0.5,\n", + " cirq.Y(q[11]) ** 0.5,\n", + " cirq.X(q[12]) ** 0.5,\n", + " [cirq.X(q[13]) ** 0.5, cirq.H(q[13]) ** 0.5, cirq.X(q[13]) ** -0.5],\n", + " cirq.Y(q[14]) ** 0.5,\n", + " [cirq.X(q[15]) ** 0.5, cirq.H(q[15]) ** 0.5, cirq.X(q[15]) ** -0.5],\n", + " cirq.Y(q[16]) ** 0.5,\n", + " cirq.X(q[17]) ** 0.5,\n", + " cirq.Y(q[18]) ** 0.5,\n", + " cirq.Y(q[19]) ** 0.5,\n", + " cirq.X(q[20]) ** 0.5,\n", + " [cirq.X(q[21]) ** 0.5, cirq.H(q[21]) ** 0.5, cirq.X(q[21]) ** -0.5],\n", + " cirq.X(q[22]) ** 0.5,\n", + " [cirq.X(q[23]) ** 0.5, cirq.H(q[23]) ** 0.5, cirq.X(q[23]) ** -0.5],\n", + " cirq.X(q[24]) ** 0.5,\n", + " cirq.X(q[25]) ** 0.5,\n", + " cirq.X(q[26]) ** 0.5,\n", + " cirq.X(q[27]) ** 0.5,\n", + " [cirq.X(q[28]) ** 0.5, cirq.H(q[28]) ** 0.5, cirq.X(q[28]) ** -0.5],\n", + " [cirq.X(q[29]) ** 0.5, cirq.H(q[29]) ** 0.5, cirq.X(q[29]) ** -0.5],\n", + " cirq.Y(q[30]) ** 0.5,\n", + " cirq.X(q[31]) ** 0.5,\n", + " cirq.rz(rads=-17.867868884042345 * np.pi).on(q[0]),\n", + " cirq.rz(rads=17.87049728934488 * np.pi).on(q[1]),\n", + " cirq.rz(rads=-17.622485552499665 * np.pi).on(q[4]),\n", + " cirq.rz(rads=17.602988862096296 * np.pi).on(q[5]),\n", + " cirq.rz(rads=7.565359127187911 * np.pi).on(q[7]),\n", + " cirq.rz(rads=-7.506809626368408 * np.pi).on(q[8]),\n", + " cirq.rz(rads=-15.28470806725993 * np.pi).on(q[9]),\n", + " cirq.rz(rads=15.329888267898626 * np.pi).on(q[10]),\n", + " cirq.rz(rads=7.019954522972137 * np.pi).on(q[13]),\n", + " cirq.rz(rads=-7.066266520580219 * np.pi).on(q[14]),\n", + " cirq.rz(rads=-13.842047663366333 * np.pi).on(q[15]),\n", + " cirq.rz(rads=13.881335880513822 * np.pi).on(q[16]),\n", + " cirq.rz(rads=-7.765941989655391 * np.pi).on(q[18]),\n", + " cirq.rz(rads=7.786825603456883 * np.pi).on(q[19]),\n", + " cirq.rz(rads=3.001137480344569 * np.pi).on(q[20]),\n", + " cirq.rz(rads=-2.8980279413275123 * np.pi).on(q[21]),\n", + " cirq.rz(rads=5.563573798571002 * np.pi).on(q[22]),\n", + " cirq.rz(rads=-5.8504123921354285 * np.pi).on(q[23]),\n", + " cirq.rz(rads=5.509227495500649 * np.pi).on(q[24]),\n", + " cirq.rz(rads=-5.792084333301517 * np.pi).on(q[25]),\n", + " cirq.rz(rads=7.868086032823645 * np.pi).on(q[26]),\n", + " cirq.rz(rads=-7.793090130850194 * np.pi).on(q[27]),\n", + " cirq.rz(rads=4.3863074183418185 * np.pi).on(q[30]),\n", + " cirq.rz(rads=-4.487034178043276 * np.pi).on(q[31]),\n", + " [\n", + " cirq.ISWAP(q[0], q[1]) ** -0.969777854908417,\n", + " cirq.CZ(q[0], q[1]) ** -0.21266743136622576,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[4], q[5]) ** -0.9959624181216683,\n", + " cirq.CZ(q[4], q[5]) ** -0.17314460131772672,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[7], q[8]) ** -0.8242343706275942,\n", + " cirq.CZ(q[7], q[8]) ** -0.15468164635790926,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[9], q[10]) ** -0.981653050634976,\n", + " cirq.CZ(q[9], q[10]) ** -0.1933349989832593,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[13], q[14]) ** -0.9637565510028211,\n", + " cirq.CZ(q[13], q[14]) ** -0.15186761578643612,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[15], q[16]) ** -1.0089894642925605,\n", + " cirq.CZ(q[15], q[16]) ** -0.17298943435986638,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[18], q[19]) ** -0.9446726997534635,\n", + " cirq.CZ(q[18], q[19]) ** -0.16140479146278733,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[20], q[21]) ** -0.980271915828302,\n", + " cirq.CZ(q[20], q[21]) ** -0.16470994863165317,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[22], q[23]) ** -0.9290392306402181,\n", + " cirq.CZ(q[22], q[23]) ** -0.1664963204791881,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[24], q[25]) ** -0.9486971380890047,\n", + " cirq.CZ(q[24], q[25]) ** -0.1448964931003518,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[26], q[27]) ** -0.9789198374818319,\n", + " cirq.CZ(q[26], q[27]) ** -0.14726825222820017,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[30], q[31]) ** -0.9389507566733047,\n", + " cirq.CZ(q[30], q[31]) ** -0.1385796856074536,\n", + " ],\n", + " cirq.rz(rads=18.225856052586064 * np.pi).on(q[0]),\n", + " cirq.rz(rads=-18.223227647283533 * np.pi).on(q[1]),\n", + " cirq.rz(rads=17.655139057028 * np.pi).on(q[4]),\n", + " cirq.rz(rads=-17.674635747431363 * np.pi).on(q[5]),\n", + " cirq.rz(rads=-7.378072351850649 * np.pi).on(q[7]),\n", + " cirq.rz(rads=7.436621852670151 * np.pi).on(q[8]),\n", + " cirq.rz(rads=15.852199817881967 * np.pi).on(q[9]),\n", + " cirq.rz(rads=-15.80701961724327 * np.pi).on(q[10]),\n", + " cirq.rz(rads=-7.538336273583833 * np.pi).on(q[13]),\n", + " cirq.rz(rads=7.492024275975751 * np.pi).on(q[14]),\n", + " cirq.rz(rads=13.968508849527241 * np.pi).on(q[15]),\n", + " cirq.rz(rads=-13.929220632379753 * np.pi).on(q[16]),\n", + " cirq.rz(rads=6.861064422304347 * np.pi).on(q[18]),\n", + " cirq.rz(rads=-6.840180808502855 * np.pi).on(q[19]),\n", + " cirq.rz(rads=-3.771658529535837 * np.pi).on(q[20]),\n", + " cirq.rz(rads=3.874768068552894 * np.pi).on(q[21]),\n", + " cirq.rz(rads=-5.593307215154117 * np.pi).on(q[22]),\n", + " cirq.rz(rads=5.30646862158969 * np.pi).on(q[23]),\n", + " cirq.rz(rads=-3.800913502275713 * np.pi).on(q[24]),\n", + " cirq.rz(rads=3.5180566644748446 * np.pi).on(q[25]),\n", + " cirq.rz(rads=-7.9036364710757425 * np.pi).on(q[26]),\n", + " cirq.rz(rads=7.978632373049194 * np.pi).on(q[27]),\n", + " cirq.rz(rads=-4.825583222537869 * np.pi).on(q[30]),\n", + " cirq.rz(rads=4.724856462836412 * np.pi).on(q[31]),\n", + " cirq.X(q[0]) ** 0.5,\n", + " [cirq.X(q[1]) ** 0.5, cirq.H(q[1]) ** 0.5, cirq.X(q[1]) ** -0.5],\n", + " [cirq.X(q[2]) ** 0.5, cirq.H(q[2]) ** 0.5, cirq.X(q[2]) ** -0.5],\n", + " cirq.Y(q[3]) ** 0.5,\n", + " [cirq.X(q[4]) ** 0.5, cirq.H(q[4]) ** 0.5, cirq.X(q[4]) ** -0.5],\n", + " cirq.X(q[5]) ** 0.5,\n", + " cirq.Y(q[6]) ** 0.5,\n", + " cirq.X(q[7]) ** 0.5,\n", + " cirq.Y(q[8]) ** 0.5,\n", + " cirq.X(q[9]) ** 0.5,\n", + " cirq.Y(q[10]) ** 0.5,\n", + " cirq.X(q[11]) ** 0.5,\n", + " [cirq.X(q[12]) ** 0.5, cirq.H(q[12]) ** 0.5, cirq.X(q[12]) ** -0.5],\n", + " cirq.Y(q[13]) ** 0.5,\n", + " [cirq.X(q[14]) ** 0.5, cirq.H(q[14]) ** 0.5, cirq.X(q[14]) ** -0.5],\n", + " cirq.Y(q[15]) ** 0.5,\n", + " [cirq.X(q[16]) ** 0.5, cirq.H(q[16]) ** 0.5, cirq.X(q[16]) ** -0.5],\n", + " [cirq.X(q[17]) ** 0.5, cirq.H(q[17]) ** 0.5, cirq.X(q[17]) ** -0.5],\n", + " [cirq.X(q[18]) ** 0.5, cirq.H(q[18]) ** 0.5, cirq.X(q[18]) ** -0.5],\n", + " [cirq.X(q[19]) ** 0.5, cirq.H(q[19]) ** 0.5, cirq.X(q[19]) ** -0.5],\n", + " [cirq.X(q[20]) ** 0.5, cirq.H(q[20]) ** 0.5, cirq.X(q[20]) ** -0.5],\n", + " cirq.Y(q[21]) ** 0.5,\n", + " cirq.Y(q[22]) ** 0.5,\n", + " cirq.Y(q[23]) ** 0.5,\n", + " [cirq.X(q[24]) ** 0.5, cirq.H(q[24]) ** 0.5, cirq.X(q[24]) ** -0.5],\n", + " cirq.Y(q[25]) ** 0.5,\n", + " [cirq.X(q[26]) ** 0.5, cirq.H(q[26]) ** 0.5, cirq.X(q[26]) ** -0.5],\n", + " [cirq.X(q[27]) ** 0.5, cirq.H(q[27]) ** 0.5, cirq.X(q[27]) ** -0.5],\n", + " cirq.Y(q[28]) ** 0.5,\n", + " cirq.Y(q[29]) ** 0.5,\n", + " [cirq.X(q[30]) ** 0.5, cirq.H(q[30]) ** 0.5, cirq.X(q[30]) ** -0.5],\n", + " [cirq.X(q[31]) ** 0.5, cirq.H(q[31]) ** 0.5, cirq.X(q[31]) ** -0.5],\n", + " cirq.rz(rads=-16.574223110662086 * np.pi).on(q[3]),\n", + " cirq.rz(rads=16.60431588336404 * np.pi).on(q[8]),\n", + " cirq.rz(rads=-15.816295096608934 * np.pi).on(q[4]),\n", + " cirq.rz(rads=15.811833422443211 * np.pi).on(q[9]),\n", + " cirq.rz(rads=-13.3598687747566 * np.pi).on(q[5]),\n", + " cirq.rz(rads=13.249156584109453 * np.pi).on(q[10]),\n", + " cirq.rz(rads=-4.127807240413703 * np.pi).on(q[6]),\n", + " cirq.rz(rads=4.082519238690215 * np.pi).on(q[11]),\n", + " cirq.rz(rads=-13.252932498710596 * np.pi).on(q[12]),\n", + " cirq.rz(rads=13.24022142293596 * np.pi).on(q[19]),\n", + " cirq.rz(rads=-8.162692838556204 * np.pi).on(q[13]),\n", + " cirq.rz(rads=8.223006443218978 * np.pi).on(q[20]),\n", + " cirq.rz(rads=-12.938755870544817 * np.pi).on(q[14]),\n", + " cirq.rz(rads=12.965256899048683 * np.pi).on(q[21]),\n", + " cirq.rz(rads=-12.724144773112773 * np.pi).on(q[15]),\n", + " cirq.rz(rads=12.73446915351482 * np.pi).on(q[22]),\n", + " cirq.rz(rads=11.027652291347495 * np.pi).on(q[16]),\n", + " cirq.rz(rads=-10.570577602838458 * np.pi).on(q[23]),\n", + " cirq.rz(rads=17.082146626922658 * np.pi).on(q[25]),\n", + " cirq.rz(rads=-17.06476602620025 * np.pi).on(q[29]),\n", + " cirq.rz(rads=14.58087327851535 * np.pi).on(q[26]),\n", + " cirq.rz(rads=-14.563378195920992 * np.pi).on(q[30]),\n", + " cirq.rz(rads=10.871739079510629 * np.pi).on(q[27]),\n", + " cirq.rz(rads=-11.050778817008649 * np.pi).on(q[31]),\n", + " [\n", + " cirq.ISWAP(q[3], q[8]) ** -0.9582439102445623,\n", + " cirq.CZ(q[3], q[8]) ** -0.16481196420780725,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[4], q[9]) ** -0.9924132629744455,\n", + " cirq.CZ(q[4], q[9]) ** -0.17814200700009597,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[5], q[10]) ** -1.0126733526485854,\n", + " cirq.CZ(q[5], q[10]) ** -0.18074346084220166,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[6], q[11]) ** -0.9737940569293067,\n", + " cirq.CZ(q[6], q[11]) ** -0.17117494551642629,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[12], q[19]) ** -0.9744121515000286,\n", + " cirq.CZ(q[12], q[19]) ** -0.16733875650098531,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[13], q[20]) ** -1.0121115249769066,\n", + " cirq.CZ(q[13], q[20]) ** -0.16059979031178617,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[14], q[21]) ** -0.985003985982119,\n", + " cirq.CZ(q[14], q[21]) ** -0.16606010863938203,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[15], q[22]) ** -0.9628319095031052,\n", + " cirq.CZ(q[15], q[22]) ** -0.16339300450568622,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[16], q[23]) ** -0.9999941453695372,\n", + " cirq.CZ(q[16], q[23]) ** -0.16477879415124544,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[25], q[29]) ** -1.0162656461553201,\n", + " cirq.CZ(q[25], q[29]) ** -0.1624755502163923,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[26], q[30]) ** -0.9778318391639494,\n", + " cirq.CZ(q[26], q[30]) ** -0.17777349355837574,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[27], q[31]) ** -0.881941750344955,\n", + " cirq.CZ(q[27], q[31]) ** -0.18326258546194193,\n", + " ],\n", + " cirq.rz(rads=17.259444062298133 * np.pi).on(q[3]),\n", + " cirq.rz(rads=-17.229351289596174 * np.pi).on(q[8]),\n", + " cirq.rz(rads=16.126615138480055 * np.pi).on(q[4]),\n", + " cirq.rz(rads=-16.131076812645777 * np.pi).on(q[9]),\n", + " cirq.rz(rads=14.142506057270092 * np.pi).on(q[5]),\n", + " cirq.rz(rads=-14.253218247917241 * np.pi).on(q[10]),\n", + " cirq.rz(rads=4.924729485113265 * np.pi).on(q[6]),\n", + " cirq.rz(rads=-4.9700174868367535 * np.pi).on(q[11]),\n", + " cirq.rz(rads=12.581705877923879 * np.pi).on(q[12]),\n", + " cirq.rz(rads=-12.594416953698515 * np.pi).on(q[19]),\n", + " cirq.rz(rads=7.826508725663096 * np.pi).on(q[13]),\n", + " cirq.rz(rads=-7.7661951210003215 * np.pi).on(q[20]),\n", + " cirq.rz(rads=12.014531408750791 * np.pi).on(q[14]),\n", + " cirq.rz(rads=-11.988030380246926 * np.pi).on(q[21]),\n", + " cirq.rz(rads=11.590471496440383 * np.pi).on(q[15]),\n", + " cirq.rz(rads=-11.580147116038336 * np.pi).on(q[22]),\n", + " cirq.rz(rads=-11.55701654221442 * np.pi).on(q[16]),\n", + " cirq.rz(rads=12.014091230723457 * np.pi).on(q[23]),\n", + " cirq.rz(rads=-15.693287261948884 * np.pi).on(q[25]),\n", + " cirq.rz(rads=15.710667862671292 * np.pi).on(q[29]),\n", + " cirq.rz(rads=-14.640627714067872 * np.pi).on(q[26]),\n", + " cirq.rz(rads=14.658122796662232 * np.pi).on(q[30]),\n", + " cirq.rz(rads=-10.271185992592658 * np.pi).on(q[27]),\n", + " cirq.rz(rads=10.092146255094638 * np.pi).on(q[31]),\n", + " [cirq.X(q[0]) ** 0.5, cirq.H(q[0]) ** 0.5, cirq.X(q[0]) ** -0.5],\n", + " cirq.Y(q[1]) ** 0.5,\n", + " cirq.Y(q[2]) ** 0.5,\n", + " [cirq.X(q[3]) ** 0.5, cirq.H(q[3]) ** 0.5, cirq.X(q[3]) ** -0.5],\n", + " cirq.Y(q[4]) ** 0.5,\n", + " cirq.Y(q[5]) ** 0.5,\n", + " [cirq.X(q[6]) ** 0.5, cirq.H(q[6]) ** 0.5, cirq.X(q[6]) ** -0.5],\n", + " [cirq.X(q[7]) ** 0.5, cirq.H(q[7]) ** 0.5, cirq.X(q[7]) ** -0.5],\n", + " cirq.X(q[8]) ** 0.5,\n", + " [cirq.X(q[9]) ** 0.5, cirq.H(q[9]) ** 0.5, cirq.X(q[9]) ** -0.5],\n", + " cirq.X(q[10]) ** 0.5,\n", + " cirq.Y(q[11]) ** 0.5,\n", + " cirq.X(q[12]) ** 0.5,\n", + " cirq.X(q[13]) ** 0.5,\n", + " cirq.Y(q[14]) ** 0.5,\n", + " cirq.X(q[15]) ** 0.5,\n", + " cirq.Y(q[16]) ** 0.5,\n", + " cirq.X(q[17]) ** 0.5,\n", + " cirq.Y(q[18]) ** 0.5,\n", + " cirq.Y(q[19]) ** 0.5,\n", + " cirq.X(q[20]) ** 0.5,\n", + " cirq.X(q[21]) ** 0.5,\n", + " cirq.X(q[22]) ** 0.5,\n", + " [cirq.X(q[23]) ** 0.5, cirq.H(q[23]) ** 0.5, cirq.X(q[23]) ** -0.5],\n", + " cirq.X(q[24]) ** 0.5,\n", + " [cirq.X(q[25]) ** 0.5, cirq.H(q[25]) ** 0.5, cirq.X(q[25]) ** -0.5],\n", + " cirq.Y(q[26]) ** 0.5,\n", + " cirq.X(q[27]) ** 0.5,\n", + " cirq.X(q[28]) ** 0.5,\n", + " cirq.X(q[29]) ** 0.5,\n", + " cirq.Y(q[30]) ** 0.5,\n", + " cirq.Y(q[31]) ** 0.5,\n", + " cirq.rz(rads=-4.706584587366488 * np.pi).on(q[0]),\n", + " cirq.rz(rads=4.709081406888329 * np.pi).on(q[4]),\n", + " cirq.rz(rads=-4.644078115073251 * np.pi).on(q[1]),\n", + " cirq.rz(rads=4.639398026235451 * np.pi).on(q[5]),\n", + " cirq.rz(rads=4.902125678549236 * np.pi).on(q[2]),\n", + " cirq.rz(rads=-4.908456163642546 * np.pi).on(q[6]),\n", + " cirq.rz(rads=26.023597923836856 * np.pi).on(q[7]),\n", + " cirq.rz(rads=-26.106962907913907 * np.pi).on(q[13]),\n", + " cirq.rz(rads=25.356253063938887 * np.pi).on(q[8]),\n", + " cirq.rz(rads=-25.2805848307585 * np.pi).on(q[14]),\n", + " cirq.rz(rads=8.370562501914259 * np.pi).on(q[9]),\n", + " cirq.rz(rads=-8.461596611893802 * np.pi).on(q[15]),\n", + " cirq.rz(rads=10.100639843256841 * np.pi).on(q[10]),\n", + " cirq.rz(rads=-10.099314675186001 * np.pi).on(q[16]),\n", + " cirq.rz(rads=18.263937308298605 * np.pi).on(q[11]),\n", + " cirq.rz(rads=-18.247908941862203 * np.pi).on(q[17]),\n", + " cirq.rz(rads=4.303481743922509 * np.pi).on(q[18]),\n", + " cirq.rz(rads=-4.595908389782827 * np.pi).on(q[24]),\n", + " cirq.rz(rads=20.40623181672889 * np.pi).on(q[19]),\n", + " cirq.rz(rads=-20.409639326033993 * np.pi).on(q[25]),\n", + " cirq.rz(rads=13.138499004273484 * np.pi).on(q[20]),\n", + " cirq.rz(rads=-13.02570710190338 * np.pi).on(q[26]),\n", + " cirq.rz(rads=19.994449091768548 * np.pi).on(q[21]),\n", + " cirq.rz(rads=-20.069061909163636 * np.pi).on(q[27]),\n", + " cirq.rz(rads=13.831104618355031 * np.pi).on(q[22]),\n", + " cirq.rz(rads=-13.786606163793484 * np.pi).on(q[28]),\n", + " [\n", + " cirq.ISWAP(q[0], q[4]) ** -0.9984812470539374,\n", + " cirq.CZ(q[0], q[4]) ** -0.17233320530255947,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[1], q[5]) ** -1.0282887997603027,\n", + " cirq.CZ(q[1], q[5]) ** -0.16427011854127802,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[2], q[6]) ** -0.9575293160506735,\n", + " cirq.CZ(q[2], q[6]) ** -0.21522732166595954,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[7], q[13]) ** -0.933831313649303,\n", + " cirq.CZ(q[7], q[13]) ** -0.1583933739924931,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[8], q[14]) ** -0.9390847780661252,\n", + " cirq.CZ(q[8], q[14]) ** -0.17144555428591543,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[9], q[15]) ** -1.0209160715892363,\n", + " cirq.CZ(q[9], q[15]) ** -0.14849009270439747,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[10], q[16]) ** -1.0287988330229174,\n", + " cirq.CZ(q[10], q[16]) ** -0.1385888562342036,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[11], q[17]) ** -1.0128317439690167,\n", + " cirq.CZ(q[11], q[17]) ** -0.1669440143200578,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[18], q[24]) ** -0.8044060664115181,\n", + " cirq.CZ(q[18], q[24]) ** -0.10552370353526683,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[19], q[25]) ** -0.9705721508169989,\n", + " cirq.CZ(q[19], q[25]) ** -0.15402718033611607,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[20], q[26]) ** -0.989459174023089,\n", + " cirq.CZ(q[20], q[26]) ** -0.16509252502035418,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[21], q[27]) ** -0.9618960066063004,\n", + " cirq.CZ(q[21], q[27]) ** -0.15722561327755682,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[22], q[28]) ** -1.0052002427791902,\n", + " cirq.CZ(q[22], q[28]) ** -0.16175415193774326,\n", + " ],\n", + " cirq.rz(rads=4.777874433792896 * np.pi).on(q[0]),\n", + " cirq.rz(rads=-4.775377614271054 * np.pi).on(q[4]),\n", + " cirq.rz(rads=4.198995232832642 * np.pi).on(q[1]),\n", + " cirq.rz(rads=-4.203675321670441 * np.pi).on(q[5]),\n", + " cirq.rz(rads=-5.321807436079611 * np.pi).on(q[2]),\n", + " cirq.rz(rads=5.315476950986302 * np.pi).on(q[6]),\n", + " cirq.rz(rads=-25.79725021952863 * np.pi).on(q[7]),\n", + " cirq.rz(rads=25.713885235451578 * np.pi).on(q[13]),\n", + " cirq.rz(rads=-24.48288974563276 * np.pi).on(q[8]),\n", + " cirq.rz(rads=24.55855797881315 * np.pi).on(q[14]),\n", + " cirq.rz(rads=-10.07786364079744 * np.pi).on(q[9]),\n", + " cirq.rz(rads=9.986829530817898 * np.pi).on(q[15]),\n", + " cirq.rz(rads=-11.191871460773655 * np.pi).on(q[10]),\n", + " cirq.rz(rads=11.193196628844492 * np.pi).on(q[16]),\n", + " cirq.rz(rads=-18.61869305225248 * np.pi).on(q[11]),\n", + " cirq.rz(rads=18.63472141868888 * np.pi).on(q[17]),\n", + " cirq.rz(rads=-5.067815524796681 * np.pi).on(q[18]),\n", + " cirq.rz(rads=4.775388878936363 * np.pi).on(q[24]),\n", + " cirq.rz(rads=-20.83856101076621 * np.pi).on(q[19]),\n", + " cirq.rz(rads=20.835153501461107 * np.pi).on(q[25]),\n", + " cirq.rz(rads=-12.242421382024746 * np.pi).on(q[20]),\n", + " cirq.rz(rads=12.35521328439485 * np.pi).on(q[26]),\n", + " cirq.rz(rads=-19.32248305368911 * np.pi).on(q[21]),\n", + " cirq.rz(rads=19.24787023629402 * np.pi).on(q[27]),\n", + " cirq.rz(rads=-13.967003503847575 * np.pi).on(q[22]),\n", + " cirq.rz(rads=14.01150195840912 * np.pi).on(q[28]),\n", + " cirq.Y(q[0]) ** 0.5,\n", + " [cirq.X(q[1]) ** 0.5, cirq.H(q[1]) ** 0.5, cirq.X(q[1]) ** -0.5],\n", + " [cirq.X(q[2]) ** 0.5, cirq.H(q[2]) ** 0.5, cirq.X(q[2]) ** -0.5],\n", + " cirq.X(q[3]) ** 0.5,\n", + " cirq.X(q[4]) ** 0.5,\n", + " cirq.X(q[5]) ** 0.5,\n", + " cirq.X(q[6]) ** 0.5,\n", + " cirq.X(q[7]) ** 0.5,\n", + " [cirq.X(q[8]) ** 0.5, cirq.H(q[8]) ** 0.5, cirq.X(q[8]) ** -0.5],\n", + " cirq.X(q[9]) ** 0.5,\n", + " [cirq.X(q[10]) ** 0.5, cirq.H(q[10]) ** 0.5, cirq.X(q[10]) ** -0.5],\n", + " cirq.X(q[11]) ** 0.5,\n", + " cirq.Y(q[12]) ** 0.5,\n", + " [cirq.X(q[13]) ** 0.5, cirq.H(q[13]) ** 0.5, cirq.X(q[13]) ** -0.5],\n", + " cirq.X(q[14]) ** 0.5,\n", + " cirq.Y(q[15]) ** 0.5,\n", + " cirq.X(q[16]) ** 0.5,\n", + " [cirq.X(q[17]) ** 0.5, cirq.H(q[17]) ** 0.5, cirq.X(q[17]) ** -0.5],\n", + " [cirq.X(q[18]) ** 0.5, cirq.H(q[18]) ** 0.5, cirq.X(q[18]) ** -0.5],\n", + " cirq.X(q[19]) ** 0.5,\n", + " cirq.Y(q[20]) ** 0.5,\n", + " [cirq.X(q[21]) ** 0.5, cirq.H(q[21]) ** 0.5, cirq.X(q[21]) ** -0.5],\n", + " [cirq.X(q[22]) ** 0.5, cirq.H(q[22]) ** 0.5, cirq.X(q[22]) ** -0.5],\n", + " cirq.Y(q[23]) ** 0.5,\n", + " cirq.Y(q[24]) ** 0.5,\n", + " cirq.X(q[25]) ** 0.5,\n", + " [cirq.X(q[26]) ** 0.5, cirq.H(q[26]) ** 0.5, cirq.X(q[26]) ** -0.5],\n", + " cirq.Y(q[27]) ** 0.5,\n", + " cirq.Y(q[28]) ** 0.5,\n", + " cirq.Y(q[29]) ** 0.5,\n", + " [cirq.X(q[30]) ** 0.5, cirq.H(q[30]) ** 0.5, cirq.X(q[30]) ** -0.5],\n", + " cirq.X(q[31]) ** 0.5,\n", + " cirq.rz(rads=-23.983870303178655 * np.pi).on(q[1]),\n", + " cirq.rz(rads=23.947691840749943 * np.pi).on(q[2]),\n", + " cirq.rz(rads=9.52513916974456 * np.pi).on(q[3]),\n", + " cirq.rz(rads=-9.570527436528984 * np.pi).on(q[4]),\n", + " cirq.rz(rads=-13.084997501357485 * np.pi).on(q[5]),\n", + " cirq.rz(rads=12.644483778485537 * np.pi).on(q[6]),\n", + " cirq.rz(rads=10.044737337703173 * np.pi).on(q[8]),\n", + " cirq.rz(rads=-9.952929415695523 * np.pi).on(q[9]),\n", + " cirq.rz(rads=-1.4576740888019104 * np.pi).on(q[10]),\n", + " cirq.rz(rads=1.4499714261238263 * np.pi).on(q[11]),\n", + " cirq.rz(rads=-8.542750980814159 * np.pi).on(q[12]),\n", + " cirq.rz(rads=8.512493259768608 * np.pi).on(q[13]),\n", + " cirq.rz(rads=-8.401251133882973 * np.pi).on(q[14]),\n", + " cirq.rz(rads=8.52245467467511 * np.pi).on(q[15]),\n", + " cirq.rz(rads=7.236894386212986 * np.pi).on(q[16]),\n", + " cirq.rz(rads=-7.223381665113074 * np.pi).on(q[17]),\n", + " cirq.rz(rads=-2.0014238777188416 * np.pi).on(q[19]),\n", + " cirq.rz(rads=2.057465958360948 * np.pi).on(q[20]),\n", + " cirq.rz(rads=-6.843134633961698 * np.pi).on(q[21]),\n", + " cirq.rz(rads=6.916407045184491 * np.pi).on(q[22]),\n", + " cirq.rz(rads=-10.176126243969842 * np.pi).on(q[25]),\n", + " cirq.rz(rads=10.134682918719976 * np.pi).on(q[26]),\n", + " cirq.rz(rads=-12.347924259148533 * np.pi).on(q[27]),\n", + " cirq.rz(rads=12.372739915233888 * np.pi).on(q[28]),\n", + " cirq.rz(rads=-13.554795435376587 * np.pi).on(q[29]),\n", + " cirq.rz(rads=13.646281937389634 * np.pi).on(q[30]),\n", + " [\n", + " cirq.ISWAP(q[1], q[2]) ** -0.9570391651387101,\n", + " cirq.CZ(q[1], q[2]) ** -0.17511624695473224,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[3], q[4]) ** -1.0141403689884423,\n", + " cirq.CZ(q[3], q[4]) ** -0.17046670168281958,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[5], q[6]) ** -1.013386784909492,\n", + " cirq.CZ(q[5], q[6]) ** 1.8378144783929071,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[8], q[9]) ** -1.009868884178167,\n", + " cirq.CZ(q[8], q[9]) ** -0.16552586798219657,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[10], q[11]) ** -0.973165668451805,\n", + " cirq.CZ(q[10], q[11]) ** -0.1627822085708043,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[12], q[13]) ** -0.9967062367293744,\n", + " cirq.CZ(q[12], q[13]) ** -0.16320564272090876,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[14], q[15]) ** -0.9733750299685556,\n", + " cirq.CZ(q[14], q[15]) ** -0.16091330726740966,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[16], q[17]) ** -0.9794265878513263,\n", + " cirq.CZ(q[16], q[17]) ** -0.16849356010919606,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[19], q[20]) ** -0.9375857698276336,\n", + " cirq.CZ(q[19], q[20]) ** -0.144908770657389,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[21], q[22]) ** -0.9769678680475263,\n", + " cirq.CZ(q[21], q[22]) ** -0.16332605888196952,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[25], q[26]) ** -0.9656924944561719,\n", + " cirq.CZ(q[25], q[26]) ** -0.1474408404408433,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[27], q[28]) ** -0.9998377482375511,\n", + " cirq.CZ(q[27], q[28]) ** -0.15252451837046574,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[29], q[30]) ** -0.9878279109459591,\n", + " cirq.CZ(q[29], q[30]) ** -0.1609201967232209,\n", + " ],\n", + " cirq.rz(rads=23.28431055044745 * np.pi).on(q[1]),\n", + " cirq.rz(rads=-23.320489012876163 * np.pi).on(q[2]),\n", + " cirq.rz(rads=-9.054070555108892 * np.pi).on(q[3]),\n", + " cirq.rz(rads=9.008682288324469 * np.pi).on(q[4]),\n", + " cirq.rz(rads=13.750356038389338 * np.pi).on(q[5]),\n", + " cirq.rz(rads=-14.190869761261286 * np.pi).on(q[6]),\n", + " cirq.rz(rads=-10.440214577494247 * np.pi).on(q[8]),\n", + " cirq.rz(rads=10.5320224995019 * np.pi).on(q[9]),\n", + " cirq.rz(rads=2.0599079899133517 * np.pi).on(q[10]),\n", + " cirq.rz(rads=-2.067610652591436 * np.pi).on(q[11]),\n", + " cirq.rz(rads=8.780337110122234 * np.pi).on(q[12]),\n", + " cirq.rz(rads=-8.810594831167785 * np.pi).on(q[13]),\n", + " cirq.rz(rads=8.199075778124648 * np.pi).on(q[14]),\n", + " cirq.rz(rads=-8.07787223733251 * np.pi).on(q[15]),\n", + " cirq.rz(rads=-9.025823706766039 * np.pi).on(q[16]),\n", + " cirq.rz(rads=9.039336427865951 * np.pi).on(q[17]),\n", + " cirq.rz(rads=2.570829500938612 * np.pi).on(q[19]),\n", + " cirq.rz(rads=-2.5147874202965053 * np.pi).on(q[20]),\n", + " cirq.rz(rads=6.561341949396702 * np.pi).on(q[21]),\n", + " cirq.rz(rads=-6.48806953817391 * np.pi).on(q[22]),\n", + " cirq.rz(rads=10.239062711844038 * np.pi).on(q[25]),\n", + " cirq.rz(rads=-10.280506037093904 * np.pi).on(q[26]),\n", + " cirq.rz(rads=14.161779067835406 * np.pi).on(q[27]),\n", + " cirq.rz(rads=-14.136963411750049 * np.pi).on(q[28]),\n", + " cirq.rz(rads=13.413311792027148 * np.pi).on(q[29]),\n", + " cirq.rz(rads=-13.3218252900141 * np.pi).on(q[30]),\n", + " [cirq.X(q[0]) ** 0.5, cirq.H(q[0]) ** 0.5, cirq.X(q[0]) ** -0.5],\n", + " cirq.X(q[1]) ** 0.5,\n", + " cirq.X(q[2]) ** 0.5,\n", + " cirq.Y(q[3]) ** 0.5,\n", + " [cirq.X(q[4]) ** 0.5, cirq.H(q[4]) ** 0.5, cirq.X(q[4]) ** -0.5],\n", + " cirq.Y(q[5]) ** 0.5,\n", + " [cirq.X(q[6]) ** 0.5, cirq.H(q[6]) ** 0.5, cirq.X(q[6]) ** -0.5],\n", + " [cirq.X(q[7]) ** 0.5, cirq.H(q[7]) ** 0.5, cirq.X(q[7]) ** -0.5],\n", + " cirq.Y(q[8]) ** 0.5,\n", + " [cirq.X(q[9]) ** 0.5, cirq.H(q[9]) ** 0.5, cirq.X(q[9]) ** -0.5],\n", + " cirq.Y(q[10]) ** 0.5,\n", + " [cirq.X(q[11]) ** 0.5, cirq.H(q[11]) ** 0.5, cirq.X(q[11]) ** -0.5],\n", + " [cirq.X(q[12]) ** 0.5, cirq.H(q[12]) ** 0.5, cirq.X(q[12]) ** -0.5],\n", + " cirq.X(q[13]) ** 0.5,\n", + " [cirq.X(q[14]) ** 0.5, cirq.H(q[14]) ** 0.5, cirq.X(q[14]) ** -0.5],\n", + " [cirq.X(q[15]) ** 0.5, cirq.H(q[15]) ** 0.5, cirq.X(q[15]) ** -0.5],\n", + " cirq.Y(q[16]) ** 0.5,\n", + " cirq.X(q[17]) ** 0.5,\n", + " cirq.Y(q[18]) ** 0.5,\n", + " cirq.Y(q[19]) ** 0.5,\n", + " cirq.X(q[20]) ** 0.5,\n", + " cirq.X(q[21]) ** 0.5,\n", + " cirq.X(q[22]) ** 0.5,\n", + " cirq.X(q[23]) ** 0.5,\n", + " cirq.X(q[24]) ** 0.5,\n", + " cirq.Y(q[25]) ** 0.5,\n", + " cirq.X(q[26]) ** 0.5,\n", + " [cirq.X(q[27]) ** 0.5, cirq.H(q[27]) ** 0.5, cirq.X(q[27]) ** -0.5],\n", + " cirq.X(q[28]) ** 0.5,\n", + " [cirq.X(q[29]) ** 0.5, cirq.H(q[29]) ** 0.5, cirq.X(q[29]) ** -0.5],\n", + " cirq.Y(q[30]) ** 0.5,\n", + " cirq.Y(q[31]) ** 0.5,\n", + " cirq.rz(rads=-30.29986888404229 * np.pi).on(q[0]),\n", + " cirq.rz(rads=30.302497289344824 * np.pi).on(q[1]),\n", + " cirq.rz(rads=-30.054485552499738 * np.pi).on(q[4]),\n", + " cirq.rz(rads=30.034988862096366 * np.pi).on(q[5]),\n", + " cirq.rz(rads=12.597359127188014 * np.pi).on(q[7]),\n", + " cirq.rz(rads=-12.538809626368511 * np.pi).on(q[8]),\n", + " cirq.rz(rads=-26.08870806725985 * np.pi).on(q[9]),\n", + " cirq.rz(rads=26.13388826789855 * np.pi).on(q[10]),\n", + " cirq.rz(rads=11.90395452297206 * np.pi).on(q[13]),\n", + " cirq.rz(rads=-11.950266520580142 * np.pi).on(q[14]),\n", + " cirq.rz(rads=-23.906047663366408 * np.pi).on(q[15]),\n", + " cirq.rz(rads=23.945335880513902 * np.pi).on(q[16]),\n", + " cirq.rz(rads=-12.64994198965531 * np.pi).on(q[18]),\n", + " cirq.rz(rads=12.670825603456805 * np.pi).on(q[19]),\n", + " cirq.rz(rads=5.221137480344522 * np.pi).on(q[20]),\n", + " cirq.rz(rads=-5.118027941327464 * np.pi).on(q[21]),\n", + " cirq.rz(rads=9.263573798570924 * np.pi).on(q[22]),\n", + " cirq.rz(rads=-9.55041239213535 * np.pi).on(q[23]),\n", + " cirq.rz(rads=8.765227495500554 * np.pi).on(q[24]),\n", + " cirq.rz(rads=-9.048084333301423 * np.pi).on(q[25]),\n", + " cirq.rz(rads=13.422682742974219 * np.pi).on(q[26]),\n", + " cirq.rz(rads=-13.34768684100077 * np.pi).on(q[27]),\n", + " cirq.rz(rads=7.346307418341885 * np.pi).on(q[30]),\n", + " cirq.rz(rads=-7.447034178043343 * np.pi).on(q[31]),\n", + " [\n", + " cirq.ISWAP(q[0], q[1]) ** -0.969777854908417,\n", + " cirq.CZ(q[0], q[1]) ** -0.21266743136622576,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[4], q[5]) ** -0.9959624181216683,\n", + " cirq.CZ(q[4], q[5]) ** -0.17314460131772672,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[7], q[8]) ** -0.8242343706275942,\n", + " cirq.CZ(q[7], q[8]) ** -0.15468164635790926,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[9], q[10]) ** -0.981653050634976,\n", + " cirq.CZ(q[9], q[10]) ** -0.1933349989832593,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[13], q[14]) ** -0.9637565510028211,\n", + " cirq.CZ(q[13], q[14]) ** -0.15186761578643612,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[15], q[16]) ** -1.0089894642925605,\n", + " cirq.CZ(q[15], q[16]) ** -0.17298943435986638,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[18], q[19]) ** -0.9446726997534635,\n", + " cirq.CZ(q[18], q[19]) ** -0.16140479146278733,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[20], q[21]) ** -0.980271915828302,\n", + " cirq.CZ(q[20], q[21]) ** -0.16470994863165317,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[22], q[23]) ** -0.9290392306402181,\n", + " cirq.CZ(q[22], q[23]) ** -0.1664963204791881,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[24], q[25]) ** -0.9486971380890047,\n", + " cirq.CZ(q[24], q[25]) ** -0.1448964931003518,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[26], q[27]) ** -0.9789198374818319,\n", + " cirq.CZ(q[26], q[27]) ** -0.14726825222820017,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[30], q[31]) ** -0.9389507566733047,\n", + " cirq.CZ(q[30], q[31]) ** -0.1385796856074536,\n", + " ],\n", + " cirq.rz(rads=30.657856052586013 * np.pi).on(q[0]),\n", + " cirq.rz(rads=-30.65522764728348 * np.pi).on(q[1]),\n", + " cirq.rz(rads=30.087139057028068 * np.pi).on(q[4]),\n", + " cirq.rz(rads=-30.106635747431437 * np.pi).on(q[5]),\n", + " cirq.rz(rads=-12.410072351850753 * np.pi).on(q[7]),\n", + " cirq.rz(rads=12.468621852670255 * np.pi).on(q[8]),\n", + " cirq.rz(rads=26.656199817881895 * np.pi).on(q[9]),\n", + " cirq.rz(rads=-26.611019617243198 * np.pi).on(q[10]),\n", + " cirq.rz(rads=-12.422336273583753 * np.pi).on(q[13]),\n", + " cirq.rz(rads=12.376024275975672 * np.pi).on(q[14]),\n", + " cirq.rz(rads=24.032508849527318 * np.pi).on(q[15]),\n", + " cirq.rz(rads=-23.993220632379824 * np.pi).on(q[16]),\n", + " cirq.rz(rads=11.745064422304269 * np.pi).on(q[18]),\n", + " cirq.rz(rads=-11.724180808502775 * np.pi).on(q[19]),\n", + " cirq.rz(rads=-5.991658529535789 * np.pi).on(q[20]),\n", + " cirq.rz(rads=6.094768068552847 * np.pi).on(q[21]),\n", + " cirq.rz(rads=-9.293307215154037 * np.pi).on(q[22]),\n", + " cirq.rz(rads=9.006468621589612 * np.pi).on(q[23]),\n", + " cirq.rz(rads=-7.056913502275617 * np.pi).on(q[24]),\n", + " cirq.rz(rads=6.774056664474749 * np.pi).on(q[25]),\n", + " cirq.rz(rads=-13.45823318122632 * np.pi).on(q[26]),\n", + " cirq.rz(rads=13.53322908319977 * np.pi).on(q[27]),\n", + " cirq.rz(rads=-7.785583222537938 * np.pi).on(q[30]),\n", + " cirq.rz(rads=7.68485646283648 * np.pi).on(q[31]),\n", + " cirq.X(q[0]) ** 0.5,\n", + " cirq.Y(q[1]) ** 0.5,\n", + " [cirq.X(q[2]) ** 0.5, cirq.H(q[2]) ** 0.5, cirq.X(q[2]) ** -0.5],\n", + " [cirq.X(q[3]) ** 0.5, cirq.H(q[3]) ** 0.5, cirq.X(q[3]) ** -0.5],\n", + " cirq.X(q[4]) ** 0.5,\n", + " cirq.X(q[5]) ** 0.5,\n", + " cirq.X(q[6]) ** 0.5,\n", + " cirq.X(q[7]) ** 0.5,\n", + " [cirq.X(q[8]) ** 0.5, cirq.H(q[8]) ** 0.5, cirq.X(q[8]) ** -0.5],\n", + " cirq.X(q[9]) ** 0.5,\n", + " [cirq.X(q[10]) ** 0.5, cirq.H(q[10]) ** 0.5, cirq.X(q[10]) ** -0.5],\n", + " cirq.X(q[11]) ** 0.5,\n", + " cirq.Y(q[12]) ** 0.5,\n", + " [cirq.X(q[13]) ** 0.5, cirq.H(q[13]) ** 0.5, cirq.X(q[13]) ** -0.5],\n", + " cirq.Y(q[14]) ** 0.5,\n", + " cirq.X(q[15]) ** 0.5,\n", + " [cirq.X(q[16]) ** 0.5, cirq.H(q[16]) ** 0.5, cirq.X(q[16]) ** -0.5],\n", + " cirq.Y(q[17]) ** 0.5,\n", + " cirq.X(q[18]) ** 0.5,\n", + " cirq.X(q[19]) ** 0.5,\n", + " cirq.Y(q[20]) ** 0.5,\n", + " cirq.Y(q[21]) ** 0.5,\n", + " [cirq.X(q[22]) ** 0.5, cirq.H(q[22]) ** 0.5, cirq.X(q[22]) ** -0.5],\n", + " [cirq.X(q[23]) ** 0.5, cirq.H(q[23]) ** 0.5, cirq.X(q[23]) ** -0.5],\n", + " [cirq.X(q[24]) ** 0.5, cirq.H(q[24]) ** 0.5, cirq.X(q[24]) ** -0.5],\n", + " cirq.X(q[25]) ** 0.5,\n", + " [cirq.X(q[26]) ** 0.5, cirq.H(q[26]) ** 0.5, cirq.X(q[26]) ** -0.5],\n", + " cirq.Y(q[27]) ** 0.5,\n", + " cirq.Y(q[28]) ** 0.5,\n", + " cirq.X(q[29]) ** 0.5,\n", + " cirq.X(q[30]) ** 0.5,\n", + " cirq.X(q[31]) ** 0.5,\n", + " cirq.rz(rads=-26.934223110661993 * np.pi).on(q[3]),\n", + " cirq.rz(rads=26.964315883363945 * np.pi).on(q[8]),\n", + " cirq.rz(rads=-25.436295096608994 * np.pi).on(q[4]),\n", + " cirq.rz(rads=25.43183342244327 * np.pi).on(q[9]),\n", + " cirq.rz(rads=-21.351868774756507 * np.pi).on(q[5]),\n", + " cirq.rz(rads=21.24115658410936 * np.pi).on(q[10]),\n", + " cirq.rz(rads=-6.643807240413623 * np.pi).on(q[6]),\n", + " cirq.rz(rads=6.598519238690134 * np.pi).on(q[11]),\n", + " cirq.rz(rads=-21.096932498710586 * np.pi).on(q[12]),\n", + " cirq.rz(rads=21.084221422935954 * np.pi).on(q[19]),\n", + " cirq.rz(rads=-13.046692838556257 * np.pi).on(q[13]),\n", + " cirq.rz(rads=13.107006443219033 * np.pi).on(q[20]),\n", + " cirq.rz(rads=-20.486755870544844 * np.pi).on(q[14]),\n", + " cirq.rz(rads=20.51325689904871 * np.pi).on(q[21]),\n", + " cirq.rz(rads=-19.82814477311278 * np.pi).on(q[15]),\n", + " cirq.rz(rads=19.838469153514826 * np.pi).on(q[22]),\n", + " cirq.rz(rads=17.687652291347487 * np.pi).on(q[16]),\n", + " cirq.rz(rads=-17.230577602838448 * np.pi).on(q[23]),\n", + " cirq.rz(rads=27.146146626922736 * np.pi).on(q[25]),\n", + " cirq.rz(rads=-27.128766026200324 * np.pi).on(q[29]),\n", + " cirq.rz(rads=23.46087327851529 * np.pi).on(q[26]),\n", + " cirq.rz(rads=-23.443378195920936 * np.pi).on(q[30]),\n", + " cirq.rz(rads=17.157142369360066 * np.pi).on(q[27]),\n", + " cirq.rz(rads=-17.33618210685809 * np.pi).on(q[31]),\n", + " [\n", + " cirq.ISWAP(q[3], q[8]) ** -0.9582439102445623,\n", + " cirq.CZ(q[3], q[8]) ** -0.16481196420780725,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[4], q[9]) ** -0.9924132629744455,\n", + " cirq.CZ(q[4], q[9]) ** -0.17814200700009597,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[5], q[10]) ** -1.0126733526485854,\n", + " cirq.CZ(q[5], q[10]) ** -0.18074346084220166,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[6], q[11]) ** -0.9737940569293067,\n", + " cirq.CZ(q[6], q[11]) ** -0.17117494551642629,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[12], q[19]) ** -0.9744121515000286,\n", + " cirq.CZ(q[12], q[19]) ** -0.16733875650098531,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[13], q[20]) ** -1.0121115249769066,\n", + " cirq.CZ(q[13], q[20]) ** -0.16059979031178617,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[14], q[21]) ** -0.985003985982119,\n", + " cirq.CZ(q[14], q[21]) ** -0.16606010863938203,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[15], q[22]) ** -0.9628319095031052,\n", + " cirq.CZ(q[15], q[22]) ** -0.16339300450568622,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[16], q[23]) ** -0.9999941453695372,\n", + " cirq.CZ(q[16], q[23]) ** -0.16477879415124544,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[25], q[29]) ** -1.0162656461553201,\n", + " cirq.CZ(q[25], q[29]) ** -0.1624755502163923,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[26], q[30]) ** -0.9778318391639494,\n", + " cirq.CZ(q[26], q[30]) ** -0.17777349355837574,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[27], q[31]) ** -0.881941750344955,\n", + " cirq.CZ(q[27], q[31]) ** -0.18326258546194193,\n", + " ],\n", + " cirq.rz(rads=27.61944406229804 * np.pi).on(q[3]),\n", + " cirq.rz(rads=-27.589351289596088 * np.pi).on(q[8]),\n", + " cirq.rz(rads=25.746615138480117 * np.pi).on(q[4]),\n", + " cirq.rz(rads=-25.75107681264584 * np.pi).on(q[9]),\n", + " cirq.rz(rads=22.13450605727 * np.pi).on(q[5]),\n", + " cirq.rz(rads=-22.245218247917148 * np.pi).on(q[10]),\n", + " cirq.rz(rads=7.440729485113184 * np.pi).on(q[6]),\n", + " cirq.rz(rads=-7.486017486836674 * np.pi).on(q[11]),\n", + " cirq.rz(rads=20.425705877923868 * np.pi).on(q[12]),\n", + " cirq.rz(rads=-20.4384169536985 * np.pi).on(q[19]),\n", + " cirq.rz(rads=12.71050872566315 * np.pi).on(q[13]),\n", + " cirq.rz(rads=-12.650195121000372 * np.pi).on(q[20]),\n", + " cirq.rz(rads=19.562531408750814 * np.pi).on(q[14]),\n", + " cirq.rz(rads=-19.53603038024695 * np.pi).on(q[21]),\n", + " cirq.rz(rads=18.69447149644039 * np.pi).on(q[15]),\n", + " cirq.rz(rads=-18.684147116038343 * np.pi).on(q[22]),\n", + " cirq.rz(rads=-18.21701654221441 * np.pi).on(q[16]),\n", + " cirq.rz(rads=18.674091230723448 * np.pi).on(q[23]),\n", + " cirq.rz(rads=-25.757287261948953 * np.pi).on(q[25]),\n", + " cirq.rz(rads=25.774667862671368 * np.pi).on(q[29]),\n", + " cirq.rz(rads=-23.52062771406781 * np.pi).on(q[26]),\n", + " cirq.rz(rads=23.538122796662165 * np.pi).on(q[30]),\n", + " cirq.rz(rads=-16.556589282442097 * np.pi).on(q[27]),\n", + " cirq.rz(rads=16.377549544944078 * np.pi).on(q[31]),\n", + " [cirq.X(q[0]) ** 0.5, cirq.H(q[0]) ** 0.5, cirq.X(q[0]) ** -0.5],\n", + " cirq.X(q[1]) ** 0.5,\n", + " cirq.X(q[2]) ** 0.5,\n", + " cirq.X(q[3]) ** 0.5,\n", + " [cirq.X(q[4]) ** 0.5, cirq.H(q[4]) ** 0.5, cirq.X(q[4]) ** -0.5],\n", + " [cirq.X(q[5]) ** 0.5, cirq.H(q[5]) ** 0.5, cirq.X(q[5]) ** -0.5],\n", + " cirq.Y(q[6]) ** 0.5,\n", + " [cirq.X(q[7]) ** 0.5, cirq.H(q[7]) ** 0.5, cirq.X(q[7]) ** -0.5],\n", + " cirq.X(q[8]) ** 0.5,\n", + " [cirq.X(q[9]) ** 0.5, cirq.H(q[9]) ** 0.5, cirq.X(q[9]) ** -0.5],\n", + " cirq.X(q[10]) ** 0.5,\n", + " [cirq.X(q[11]) ** 0.5, cirq.H(q[11]) ** 0.5, cirq.X(q[11]) ** -0.5],\n", + " [cirq.X(q[12]) ** 0.5, cirq.H(q[12]) ** 0.5, cirq.X(q[12]) ** -0.5],\n", + " cirq.Y(q[13]) ** 0.5,\n", + " cirq.X(q[14]) ** 0.5,\n", + " [cirq.X(q[15]) ** 0.5, cirq.H(q[15]) ** 0.5, cirq.X(q[15]) ** -0.5],\n", + " cirq.X(q[16]) ** 0.5,\n", + " cirq.X(q[17]) ** 0.5,\n", + " [cirq.X(q[18]) ** 0.5, cirq.H(q[18]) ** 0.5, cirq.X(q[18]) ** -0.5],\n", + " [cirq.X(q[19]) ** 0.5, cirq.H(q[19]) ** 0.5, cirq.X(q[19]) ** -0.5],\n", + " [cirq.X(q[20]) ** 0.5, cirq.H(q[20]) ** 0.5, cirq.X(q[20]) ** -0.5],\n", + " cirq.X(q[21]) ** 0.5,\n", + " cirq.X(q[22]) ** 0.5,\n", + " cirq.X(q[23]) ** 0.5,\n", + " cirq.X(q[24]) ** 0.5,\n", + " [cirq.X(q[25]) ** 0.5, cirq.H(q[25]) ** 0.5, cirq.X(q[25]) ** -0.5],\n", + " cirq.Y(q[26]) ** 0.5,\n", + " cirq.X(q[27]) ** 0.5,\n", + " cirq.X(q[28]) ** 0.5,\n", + " [cirq.X(q[29]) ** 0.5, cirq.H(q[29]) ** 0.5, cirq.X(q[29]) ** -0.5],\n", + " [cirq.X(q[30]) ** 0.5, cirq.H(q[30]) ** 0.5, cirq.X(q[30]) ** -0.5],\n", + " [cirq.X(q[31]) ** 0.5, cirq.H(q[31]) ** 0.5, cirq.X(q[31]) ** -0.5],\n", + " cirq.rz(rads=-6.926584587366442 * np.pi).on(q[0]),\n", + " cirq.rz(rads=6.929081406888282 * np.pi).on(q[4]),\n", + " cirq.rz(rads=-6.864078115073335 * np.pi).on(q[1]),\n", + " cirq.rz(rads=6.859398026235534 * np.pi).on(q[5]),\n", + " cirq.rz(rads=7.418125678549155 * np.pi).on(q[2]),\n", + " cirq.rz(rads=-7.424456163642465 * np.pi).on(q[6]),\n", + " cirq.rz(rads=39.34359792383697 * np.pi).on(q[7]),\n", + " cirq.rz(rads=-39.42696290791402 * np.pi).on(q[13]),\n", + " cirq.rz(rads=38.52825306393881 * np.pi).on(q[8]),\n", + " cirq.rz(rads=-38.452584830758425 * np.pi).on(q[14]),\n", + " cirq.rz(rads=12.958562501914345 * np.pi).on(q[9]),\n", + " cirq.rz(rads=-13.049596611893888 * np.pi).on(q[15]),\n", + " cirq.rz(rads=15.428639843256777 * np.pi).on(q[10]),\n", + " cirq.rz(rads=-15.42731467518594 * np.pi).on(q[16]),\n", + " cirq.rz(rads=28.031937308298577 * np.pi).on(q[11]),\n", + " cirq.rz(rads=-28.01590894186218 * np.pi).on(q[17]),\n", + " cirq.rz(rads=6.967481743922609 * np.pi).on(q[18]),\n", + " cirq.rz(rads=-7.259908389782927 * np.pi).on(q[24]),\n", + " cirq.rz(rads=31.210231816728815 * np.pi).on(q[19]),\n", + " cirq.rz(rads=-31.213639326033913 * np.pi).on(q[25]),\n", + " cirq.rz(rads=19.946499004273523 * np.pi).on(q[20]),\n", + " cirq.rz(rads=-19.833707101903418 * np.pi).on(q[26]),\n", + " cirq.rz(rads=30.137045801919207 * np.pi).on(q[21]),\n", + " cirq.rz(rads=-30.211658619314296 * np.pi).on(q[27]),\n", + " cirq.rz(rads=21.231104618355 * np.pi).on(q[22]),\n", + " cirq.rz(rads=-21.186606163793456 * np.pi).on(q[28]),\n", + " [\n", + " cirq.ISWAP(q[0], q[4]) ** -0.9984812470539374,\n", + " cirq.CZ(q[0], q[4]) ** -0.17233320530255947,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[1], q[5]) ** -1.0282887997603027,\n", + " cirq.CZ(q[1], q[5]) ** -0.16427011854127802,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[2], q[6]) ** -0.9575293160506735,\n", + " cirq.CZ(q[2], q[6]) ** -0.21522732166595954,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[7], q[13]) ** -0.933831313649303,\n", + " cirq.CZ(q[7], q[13]) ** -0.1583933739924931,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[8], q[14]) ** -0.9390847780661252,\n", + " cirq.CZ(q[8], q[14]) ** -0.17144555428591543,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[9], q[15]) ** -1.0209160715892363,\n", + " cirq.CZ(q[9], q[15]) ** -0.14849009270439747,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[10], q[16]) ** -1.0287988330229174,\n", + " cirq.CZ(q[10], q[16]) ** -0.1385888562342036,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[11], q[17]) ** -1.0128317439690167,\n", + " cirq.CZ(q[11], q[17]) ** -0.1669440143200578,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[18], q[24]) ** -0.8044060664115181,\n", + " cirq.CZ(q[18], q[24]) ** -0.10552370353526683,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[19], q[25]) ** -0.9705721508169989,\n", + " cirq.CZ(q[19], q[25]) ** -0.15402718033611607,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[20], q[26]) ** -0.989459174023089,\n", + " cirq.CZ(q[20], q[26]) ** -0.16509252502035418,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[21], q[27]) ** -0.9618960066063004,\n", + " cirq.CZ(q[21], q[27]) ** -0.15722561327755682,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[22], q[28]) ** -1.0052002427791902,\n", + " cirq.CZ(q[22], q[28]) ** -0.16175415193774326,\n", + " ],\n", + " cirq.rz(rads=6.997874433792849 * np.pi).on(q[0]),\n", + " cirq.rz(rads=-6.995377614271008 * np.pi).on(q[4]),\n", + " cirq.rz(rads=6.418995232832726 * np.pi).on(q[1]),\n", + " cirq.rz(rads=-6.423675321670527 * np.pi).on(q[5]),\n", + " cirq.rz(rads=-7.8378074360795305 * np.pi).on(q[2]),\n", + " cirq.rz(rads=7.831476950986221 * np.pi).on(q[6]),\n", + " cirq.rz(rads=-39.11725021952874 * np.pi).on(q[7]),\n", + " cirq.rz(rads=39.03388523545169 * np.pi).on(q[13]),\n", + " cirq.rz(rads=-37.65488974563269 * np.pi).on(q[8]),\n", + " cirq.rz(rads=37.730557978813074 * np.pi).on(q[14]),\n", + " cirq.rz(rads=-14.665863640797525 * np.pi).on(q[9]),\n", + " cirq.rz(rads=14.574829530817984 * np.pi).on(q[15]),\n", + " cirq.rz(rads=-16.519871460773594 * np.pi).on(q[10]),\n", + " cirq.rz(rads=16.52119662884443 * np.pi).on(q[16]),\n", + " cirq.rz(rads=-28.386693052252454 * np.pi).on(q[11]),\n", + " cirq.rz(rads=28.402721418688852 * np.pi).on(q[17]),\n", + " cirq.rz(rads=-7.731815524796781 * np.pi).on(q[18]),\n", + " cirq.rz(rads=7.439388878936463 * np.pi).on(q[24]),\n", + " cirq.rz(rads=-31.64256101076613 * np.pi).on(q[19]),\n", + " cirq.rz(rads=31.63915350146103 * np.pi).on(q[25]),\n", + " cirq.rz(rads=-19.050421382024783 * np.pi).on(q[20]),\n", + " cirq.rz(rads=19.16321328439489 * np.pi).on(q[26]),\n", + " cirq.rz(rads=-29.465079763839764 * np.pi).on(q[21]),\n", + " cirq.rz(rads=29.390466946444676 * np.pi).on(q[27]),\n", + " cirq.rz(rads=-21.367003503847553 * np.pi).on(q[22]),\n", + " cirq.rz(rads=21.411501958409097 * np.pi).on(q[28]),\n", + " cirq.Y(q[0]) ** 0.5,\n", + " cirq.Y(q[1]) ** 0.5,\n", + " [cirq.X(q[2]) ** 0.5, cirq.H(q[2]) ** 0.5, cirq.X(q[2]) ** -0.5],\n", + " cirq.Y(q[3]) ** 0.5,\n", + " cirq.Y(q[4]) ** 0.5,\n", + " cirq.X(q[5]) ** 0.5,\n", + " [cirq.X(q[6]) ** 0.5, cirq.H(q[6]) ** 0.5, cirq.X(q[6]) ** -0.5],\n", + " cirq.Y(q[7]) ** 0.5,\n", + " cirq.Y(q[8]) ** 0.5,\n", + " cirq.Y(q[9]) ** 0.5,\n", + " cirq.Y(q[10]) ** 0.5,\n", + " cirq.Y(q[11]) ** 0.5,\n", + " cirq.Y(q[12]) ** 0.5,\n", + " [cirq.X(q[13]) ** 0.5, cirq.H(q[13]) ** 0.5, cirq.X(q[13]) ** -0.5],\n", + " cirq.Y(q[14]) ** 0.5,\n", + " cirq.X(q[15]) ** 0.5,\n", + " cirq.Y(q[16]) ** 0.5,\n", + " cirq.Y(q[17]) ** 0.5,\n", + " cirq.Y(q[18]) ** 0.5,\n", + " cirq.Y(q[19]) ** 0.5,\n", + " cirq.X(q[20]) ** 0.5,\n", + " [cirq.X(q[21]) ** 0.5, cirq.H(q[21]) ** 0.5, cirq.X(q[21]) ** -0.5],\n", + " cirq.Y(q[22]) ** 0.5,\n", + " [cirq.X(q[23]) ** 0.5, cirq.H(q[23]) ** 0.5, cirq.X(q[23]) ** -0.5],\n", + " cirq.Y(q[24]) ** 0.5,\n", + " cirq.X(q[25]) ** 0.5,\n", + " [cirq.X(q[26]) ** 0.5, cirq.H(q[26]) ** 0.5, cirq.X(q[26]) ** -0.5],\n", + " cirq.Y(q[27]) ** 0.5,\n", + " [cirq.X(q[28]) ** 0.5, cirq.H(q[28]) ** 0.5, cirq.X(q[28]) ** -0.5],\n", + " cirq.X(q[29]) ** 0.5,\n", + " cirq.Y(q[30]) ** 0.5,\n", + " cirq.Y(q[31]) ** 0.5,\n", + " cirq.rz(rads=-34.93587030317863 * np.pi).on(q[1]),\n", + " cirq.rz(rads=34.899691840749924 * np.pi).on(q[2]),\n", + " cirq.rz(rads=13.66913916974463 * np.pi).on(q[3]),\n", + " cirq.rz(rads=-13.714527436529053 * np.pi).on(q[4]),\n", + " cirq.rz(rads=-19.300997501357458 * np.pi).on(q[5]),\n", + " cirq.rz(rads=18.86048377848551 * np.pi).on(q[6]),\n", + " cirq.rz(rads=14.928737337703097 * np.pi).on(q[8]),\n", + " cirq.rz(rads=-14.836929415695444 * np.pi).on(q[9]),\n", + " cirq.rz(rads=-2.1976740888018944 * np.pi).on(q[10]),\n", + " cirq.rz(rads=2.1899714261238103 * np.pi).on(q[11]),\n", + " cirq.rz(rads=-12.39075098081413 * np.pi).on(q[12]),\n", + " cirq.rz(rads=12.360493259768578 * np.pi).on(q[13]),\n", + " cirq.rz(rads=-12.10125113388289 * np.pi).on(q[14]),\n", + " cirq.rz(rads=12.22245467467503 * np.pi).on(q[15]),\n", + " cirq.rz(rads=10.936894386213037 * np.pi).on(q[16]),\n", + " cirq.rz(rads=-10.923381665113125 * np.pi).on(q[17]),\n", + " cirq.rz(rads=-2.8894238777188748 * np.pi).on(q[19]),\n", + " cirq.rz(rads=2.945465958360982 * np.pi).on(q[20]),\n", + " cirq.rz(rads=-10.099134633961603 * np.pi).on(q[21]),\n", + " cirq.rz(rads=10.172407045184396 * np.pi).on(q[22]),\n", + " cirq.rz(rads=-15.060126243969762 * np.pi).on(q[25]),\n", + " cirq.rz(rads=15.018682918719897 * np.pi).on(q[26]),\n", + " cirq.rz(rads=-18.34652096929912 * np.pi).on(q[27]),\n", + " cirq.rz(rads=18.371336625384476 * np.pi).on(q[28]),\n", + " cirq.rz(rads=-19.622795435376638 * np.pi).on(q[29]),\n", + " cirq.rz(rads=19.714281937389686 * np.pi).on(q[30]),\n", + " [\n", + " cirq.ISWAP(q[1], q[2]) ** -0.9570391651387101,\n", + " cirq.CZ(q[1], q[2]) ** -0.17511624695473224,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[3], q[4]) ** -1.0141403689884423,\n", + " cirq.CZ(q[3], q[4]) ** -0.17046670168281958,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[5], q[6]) ** -1.013386784909492,\n", + " cirq.CZ(q[5], q[6]) ** 1.8378144783929071,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[8], q[9]) ** -1.009868884178167,\n", + " cirq.CZ(q[8], q[9]) ** -0.16552586798219657,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[10], q[11]) ** -0.973165668451805,\n", + " cirq.CZ(q[10], q[11]) ** -0.1627822085708043,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[12], q[13]) ** -0.9967062367293744,\n", + " cirq.CZ(q[12], q[13]) ** -0.16320564272090876,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[14], q[15]) ** -0.9733750299685556,\n", + " cirq.CZ(q[14], q[15]) ** -0.16091330726740966,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[16], q[17]) ** -0.9794265878513263,\n", + " cirq.CZ(q[16], q[17]) ** -0.16849356010919606,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[19], q[20]) ** -0.9375857698276336,\n", + " cirq.CZ(q[19], q[20]) ** -0.144908770657389,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[21], q[22]) ** -0.9769678680475263,\n", + " cirq.CZ(q[21], q[22]) ** -0.16332605888196952,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[25], q[26]) ** -0.9656924944561719,\n", + " cirq.CZ(q[25], q[26]) ** -0.1474408404408433,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[27], q[28]) ** -0.9998377482375511,\n", + " cirq.CZ(q[27], q[28]) ** -0.15252451837046574,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[29], q[30]) ** -0.9878279109459591,\n", + " cirq.CZ(q[29], q[30]) ** -0.1609201967232209,\n", + " ],\n", + " cirq.rz(rads=34.236310550447435 * np.pi).on(q[1]),\n", + " cirq.rz(rads=-34.27248901287614 * np.pi).on(q[2]),\n", + " cirq.rz(rads=-13.19807055510896 * np.pi).on(q[3]),\n", + " cirq.rz(rads=13.152682288324536 * np.pi).on(q[4]),\n", + " cirq.rz(rads=19.96635603838931 * np.pi).on(q[5]),\n", + " cirq.rz(rads=-20.40686976126126 * np.pi).on(q[6]),\n", + " cirq.rz(rads=-15.32421457749417 * np.pi).on(q[8]),\n", + " cirq.rz(rads=15.416022499501823 * np.pi).on(q[9]),\n", + " cirq.rz(rads=2.7999079899133363 * np.pi).on(q[10]),\n", + " cirq.rz(rads=-2.80761065259142 * np.pi).on(q[11]),\n", + " cirq.rz(rads=12.628337110122207 * np.pi).on(q[12]),\n", + " cirq.rz(rads=-12.658594831167758 * np.pi).on(q[13]),\n", + " cirq.rz(rads=11.899075778124569 * np.pi).on(q[14]),\n", + " cirq.rz(rads=-11.777872237332431 * np.pi).on(q[15]),\n", + " cirq.rz(rads=-12.725823706766091 * np.pi).on(q[16]),\n", + " cirq.rz(rads=12.739336427866004 * np.pi).on(q[17]),\n", + " cirq.rz(rads=3.458829500938646 * np.pi).on(q[19]),\n", + " cirq.rz(rads=-3.4027874202965385 * np.pi).on(q[20]),\n", + " cirq.rz(rads=9.817341949396608 * np.pi).on(q[21]),\n", + " cirq.rz(rads=-9.744069538173814 * np.pi).on(q[22]),\n", + " cirq.rz(rads=15.12306271184396 * np.pi).on(q[25]),\n", + " cirq.rz(rads=-15.164506037093826 * np.pi).on(q[26]),\n", + " cirq.rz(rads=20.160375777985994 * np.pi).on(q[27]),\n", + " cirq.rz(rads=-20.13556012190064 * np.pi).on(q[28]),\n", + " cirq.rz(rads=19.481311792027203 * np.pi).on(q[29]),\n", + " cirq.rz(rads=-19.389825290014155 * np.pi).on(q[30]),\n", + " [cirq.X(q[0]) ** 0.5, cirq.H(q[0]) ** 0.5, cirq.X(q[0]) ** -0.5],\n", + " [cirq.X(q[1]) ** 0.5, cirq.H(q[1]) ** 0.5, cirq.X(q[1]) ** -0.5],\n", + " cirq.Y(q[2]) ** 0.5,\n", + " cirq.X(q[3]) ** 0.5,\n", + " [cirq.X(q[4]) ** 0.5, cirq.H(q[4]) ** 0.5, cirq.X(q[4]) ** -0.5],\n", + " cirq.Y(q[5]) ** 0.5,\n", + " cirq.Y(q[6]) ** 0.5,\n", + " [cirq.X(q[7]) ** 0.5, cirq.H(q[7]) ** 0.5, cirq.X(q[7]) ** -0.5],\n", + " cirq.X(q[8]) ** 0.5,\n", + " cirq.X(q[9]) ** 0.5,\n", + " cirq.X(q[10]) ** 0.5,\n", + " [cirq.X(q[11]) ** 0.5, cirq.H(q[11]) ** 0.5, cirq.X(q[11]) ** -0.5],\n", + " [cirq.X(q[12]) ** 0.5, cirq.H(q[12]) ** 0.5, cirq.X(q[12]) ** -0.5],\n", + " cirq.Y(q[13]) ** 0.5,\n", + " cirq.X(q[14]) ** 0.5,\n", + " cirq.Y(q[15]) ** 0.5,\n", + " cirq.X(q[16]) ** 0.5,\n", + " cirq.X(q[17]) ** 0.5,\n", + " [cirq.X(q[18]) ** 0.5, cirq.H(q[18]) ** 0.5, cirq.X(q[18]) ** -0.5],\n", + " [cirq.X(q[19]) ** 0.5, cirq.H(q[19]) ** 0.5, cirq.X(q[19]) ** -0.5],\n", + " [cirq.X(q[20]) ** 0.5, cirq.H(q[20]) ** 0.5, cirq.X(q[20]) ** -0.5],\n", + " cirq.Y(q[21]) ** 0.5,\n", + " [cirq.X(q[22]) ** 0.5, cirq.H(q[22]) ** 0.5, cirq.X(q[22]) ** -0.5],\n", + " cirq.X(q[23]) ** 0.5,\n", + " cirq.X(q[24]) ** 0.5,\n", + " cirq.Y(q[25]) ** 0.5,\n", + " cirq.Y(q[26]) ** 0.5,\n", + " cirq.X(q[27]) ** 0.5,\n", + " cirq.Y(q[28]) ** 0.5,\n", + " [cirq.X(q[29]) ** 0.5, cirq.H(q[29]) ** 0.5, cirq.X(q[29]) ** -0.5],\n", + " [cirq.X(q[30]) ** 0.5, cirq.H(q[30]) ** 0.5, cirq.X(q[30]) ** -0.5],\n", + " cirq.X(q[31]) ** 0.5,\n", + " cirq.rz(rads=-42.731868884042235 * np.pi).on(q[0]),\n", + " cirq.rz(rads=42.73449728934477 * np.pi).on(q[1]),\n", + " cirq.rz(rads=-42.48648555249982 * np.pi).on(q[4]),\n", + " cirq.rz(rads=42.46698886209646 * np.pi).on(q[5]),\n", + " cirq.rz(rads=17.629359127188117 * np.pi).on(q[7]),\n", + " cirq.rz(rads=-17.570809626368614 * np.pi).on(q[8]),\n", + " cirq.rz(rads=-36.89270806725978 * np.pi).on(q[9]),\n", + " cirq.rz(rads=36.93788826789848 * np.pi).on(q[10]),\n", + " cirq.rz(rads=16.787954522971983 * np.pi).on(q[13]),\n", + " cirq.rz(rads=-16.834266520580062 * np.pi).on(q[14]),\n", + " cirq.rz(rads=-33.970047663366486 * np.pi).on(q[15]),\n", + " cirq.rz(rads=34.00933588051398 * np.pi).on(q[16]),\n", + " cirq.rz(rads=-17.533941989655233 * np.pi).on(q[18]),\n", + " cirq.rz(rads=17.554825603456727 * np.pi).on(q[19]),\n", + " cirq.rz(rads=7.441137480344476 * np.pi).on(q[20]),\n", + " cirq.rz(rads=-7.338027941327417 * np.pi).on(q[21]),\n", + " cirq.rz(rads=12.963573798570843 * np.pi).on(q[22]),\n", + " cirq.rz(rads=-13.250412392135269 * np.pi).on(q[23]),\n", + " cirq.rz(rads=12.021227495500458 * np.pi).on(q[24]),\n", + " cirq.rz(rads=-12.30408433330133 * np.pi).on(q[25]),\n", + " cirq.rz(rads=18.97727945312479 * np.pi).on(q[26]),\n", + " cirq.rz(rads=-18.902283551151342 * np.pi).on(q[27]),\n", + " cirq.rz(rads=10.306307418341955 * np.pi).on(q[30]),\n", + " cirq.rz(rads=-10.407034178043412 * np.pi).on(q[31]),\n", + " [\n", + " cirq.ISWAP(q[0], q[1]) ** -0.969777854908417,\n", + " cirq.CZ(q[0], q[1]) ** -0.21266743136622576,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[4], q[5]) ** -0.9959624181216683,\n", + " cirq.CZ(q[4], q[5]) ** -0.17314460131772672,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[7], q[8]) ** -0.8242343706275942,\n", + " cirq.CZ(q[7], q[8]) ** -0.15468164635790926,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[9], q[10]) ** -0.981653050634976,\n", + " cirq.CZ(q[9], q[10]) ** -0.1933349989832593,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[13], q[14]) ** -0.9637565510028211,\n", + " cirq.CZ(q[13], q[14]) ** -0.15186761578643612,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[15], q[16]) ** -1.0089894642925605,\n", + " cirq.CZ(q[15], q[16]) ** -0.17298943435986638,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[18], q[19]) ** -0.9446726997534635,\n", + " cirq.CZ(q[18], q[19]) ** -0.16140479146278733,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[20], q[21]) ** -0.980271915828302,\n", + " cirq.CZ(q[20], q[21]) ** -0.16470994863165317,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[22], q[23]) ** -0.9290392306402181,\n", + " cirq.CZ(q[22], q[23]) ** -0.1664963204791881,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[24], q[25]) ** -0.9486971380890047,\n", + " cirq.CZ(q[24], q[25]) ** -0.1448964931003518,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[26], q[27]) ** -0.9789198374818319,\n", + " cirq.CZ(q[26], q[27]) ** -0.14726825222820017,\n", + " ],\n", + " [\n", + " cirq.ISWAP(q[30], q[31]) ** -0.9389507566733047,\n", + " cirq.CZ(q[30], q[31]) ** -0.1385796856074536,\n", + " ],\n", + " cirq.rz(rads=43.08985605258596 * np.pi).on(q[0]),\n", + " cirq.rz(rads=-43.08722764728342 * np.pi).on(q[1]),\n", + " cirq.rz(rads=42.51913905702814 * np.pi).on(q[4]),\n", + " cirq.rz(rads=-42.53863574743151 * np.pi).on(q[5]),\n", + " cirq.rz(rads=-17.442072351850854 * np.pi).on(q[7]),\n", + " cirq.rz(rads=17.500621852670356 * np.pi).on(q[8]),\n", + " cirq.rz(rads=37.46019981788182 * np.pi).on(q[9]),\n", + " cirq.rz(rads=-37.415019617243125 * np.pi).on(q[10]),\n", + " cirq.rz(rads=-17.306336273583675 * np.pi).on(q[13]),\n", + " cirq.rz(rads=17.260024275975592 * np.pi).on(q[14]),\n", + " cirq.rz(rads=34.09650884952739 * np.pi).on(q[15]),\n", + " cirq.rz(rads=-34.057220632379895 * np.pi).on(q[16]),\n", + " cirq.rz(rads=16.629064422304193 * np.pi).on(q[18]),\n", + " cirq.rz(rads=-16.6081808085027 * np.pi).on(q[19]),\n", + " cirq.rz(rads=-8.211658529535743 * np.pi).on(q[20]),\n", + " cirq.rz(rads=8.3147680685528 * np.pi).on(q[21]),\n", + " cirq.rz(rads=-12.993307215153958 * np.pi).on(q[22]),\n", + " cirq.rz(rads=12.706468621589535 * np.pi).on(q[23]),\n", + " cirq.rz(rads=-10.31291350227552 * np.pi).on(q[24]),\n", + " cirq.rz(rads=10.030056664474653 * np.pi).on(q[25]),\n", + " cirq.rz(rads=-19.012829891376892 * np.pi).on(q[26]),\n", + " cirq.rz(rads=19.08782579335034 * np.pi).on(q[27]),\n", + " cirq.rz(rads=-10.745583222538006 * np.pi).on(q[30]),\n", + " cirq.rz(rads=10.644856462836547 * np.pi).on(q[31]),\n", + " cirq.X(q[0]) ** 0.5,\n", + " cirq.Y(q[1]) ** 0.5,\n", + " [cirq.X(q[2]) ** 0.5, cirq.H(q[2]) ** 0.5, cirq.X(q[2]) ** -0.5],\n", + " cirq.Y(q[3]) ** 0.5,\n", + " cirq.X(q[4]) ** 0.5,\n", + " cirq.X(q[5]) ** 0.5,\n", + " [cirq.X(q[6]) ** 0.5, cirq.H(q[6]) ** 0.5, cirq.X(q[6]) ** -0.5],\n", + " cirq.Y(q[7]) ** 0.5,\n", + " [cirq.X(q[8]) ** 0.5, cirq.H(q[8]) ** 0.5, cirq.X(q[8]) ** -0.5],\n", + " [cirq.X(q[9]) ** 0.5, cirq.H(q[9]) ** 0.5, cirq.X(q[9]) ** -0.5],\n", + " cirq.Y(q[10]) ** 0.5,\n", + " cirq.X(q[11]) ** 0.5,\n", + " cirq.X(q[12]) ** 0.5,\n", + " [cirq.X(q[13]) ** 0.5, cirq.H(q[13]) ** 0.5, cirq.X(q[13]) ** -0.5],\n", + " cirq.Y(q[14]) ** 0.5,\n", + " cirq.X(q[15]) ** 0.5,\n", + " cirq.Y(q[16]) ** 0.5,\n", + " cirq.Y(q[17]) ** 0.5,\n", + " cirq.Y(q[18]) ** 0.5,\n", + " cirq.X(q[19]) ** 0.5,\n", + " cirq.X(q[20]) ** 0.5,\n", + " [cirq.X(q[21]) ** 0.5, cirq.H(q[21]) ** 0.5, cirq.X(q[21]) ** -0.5],\n", + " cirq.Y(q[22]) ** 0.5,\n", + " [cirq.X(q[23]) ** 0.5, cirq.H(q[23]) ** 0.5, cirq.X(q[23]) ** -0.5],\n", + " [cirq.X(q[24]) ** 0.5, cirq.H(q[24]) ** 0.5, cirq.X(q[24]) ** -0.5],\n", + " cirq.X(q[25]) ** 0.5,\n", + " [cirq.X(q[26]) ** 0.5, cirq.H(q[26]) ** 0.5, cirq.X(q[26]) ** -0.5],\n", + " [cirq.X(q[27]) ** 0.5, cirq.H(q[27]) ** 0.5, cirq.X(q[27]) ** -0.5],\n", + " [cirq.X(q[28]) ** 0.5, cirq.H(q[28]) ** 0.5, cirq.X(q[28]) ** -0.5],\n", + " cirq.Y(q[29]) ** 0.5,\n", + " cirq.Y(q[30]) ** 0.5,\n", + " [cirq.X(q[31]) ** 0.5, cirq.H(q[31]) ** 0.5, cirq.X(q[31]) ** -0.5],\n", " ],\n", - " strategy=cirq.InsertStrategy.EARLIEST)\n", + " strategy=cirq.InsertStrategy.EARLIEST,\n", + ")\n", "\n", "# print a representation of the circuit\n", "\n", @@ -1700,15 +2218,16 @@ } ], "source": [ - "options = {'t': 16, 'v': 3}\n", + "options = {\"t\": 16, \"v\": 3}\n", "simulator = qsimcirq.QSimSimulator(options)\n", "\n", "wall_start = time.monotonic()\n", "process_start = time.process_time()\n", "\n", - "results = simulator.compute_amplitudes(circuit,\n", - " bitstrings=[0b11011001001100111101110001000001,\n", - " 0b11011011000111010001001010001011])\n", + "results = simulator.compute_amplitudes(\n", + " circuit,\n", + " bitstrings=[0b11011001001100111101110001000001, 0b11011011000111010001001010001011],\n", + ")\n", "\n", "wall_end = time.monotonic()\n", "process_end = time.process_time()\n", diff --git a/docs/tutorials/qsimcirq.ipynb b/docs/tutorials/qsimcirq.ipynb index cd1f6b385..0171c9fc5 100644 --- a/docs/tutorials/qsimcirq.ipynb +++ b/docs/tutorials/qsimcirq.ipynb @@ -18,7 +18,7 @@ }, "outputs": [], "source": [ - "#@title Licensed under the Apache License, Version 2.0 (the \"License\");\n", + "# @title Licensed under the Apache License, Version 2.0 (the \"License\");\n", "# you may not use this file except in compliance with the License.\n", "# You may obtain a copy of the License at\n", "#\n", @@ -51,10 +51,10 @@ " View on QuantumAI\n", " \n", " \n", -" Run in Google Colab\n", + " Run in Google Colab\n", " \n", " \n", -" View source on GitHub\n", + " View source on GitHub\n", " \n", " \n", " Download notebook\n", @@ -90,6 +90,8 @@ }, "outputs": [], "source": [ + "import time\n", + "\n", "try:\n", " import cirq\n", "except ImportError:\n", @@ -109,7 +111,7 @@ "id": "7lYC4qxpDKMN" }, "source": [ -"Simulating Cirq circuits with qsim is easy: just define the circuit as you normally would, then create a `QSimSimulator` to perform the simulation. This object implements Cirq's [simulator.py](https://github.com/quantumlib/Cirq/blob/main/cirq-core/cirq/sim/simulator.py) interfaces, so you can drop it in anywhere the basic Cirq simulator is used." + "Simulating Cirq circuits with qsim is easy: just define the circuit as you normally would, then create a `QSimSimulator` to perform the simulation. This object implements Cirq's [simulator.py](https://github.com/quantumlib/Cirq/blob/main/cirq-core/cirq/sim/simulator.py) interfaces, so you can drop it in anywhere the basic Cirq simulator is used." ] }, { @@ -139,14 +141,14 @@ "print()\n", "\n", "# Simulate the circuit with Cirq and return the full state vector.\n", - "print('Cirq results:')\n", + "print(\"Cirq results:\")\n", "cirq_simulator = cirq.Simulator()\n", "cirq_results = cirq_simulator.simulate(circuit)\n", "print(cirq_results)\n", "print()\n", "\n", "# Simulate the circuit with qsim and return the full state vector.\n", - "print('qsim results:')\n", + "print(\"qsim results:\")\n", "qsim_simulator = qsimcirq.QSimSimulator()\n", "qsim_results = qsim_simulator.simulate(circuit)\n", "print(qsim_results)" @@ -170,7 +172,8 @@ "outputs": [], "source": [ "samples = cirq.sample_state_vector(\n", - " qsim_results.state_vector(), indices=[0, 1], repetitions=10)\n", + " qsim_results.state_vector(), indices=[0, 1], repetitions=10\n", + ")\n", "print(samples)" ] }, @@ -198,23 +201,25 @@ "# Define a circuit with measurements.\n", "q0, q1 = cirq.LineQubit.range(2)\n", "circuit = cirq.Circuit(\n", - " cirq.H(q0), cirq.X(q1), cirq.CX(q0, q1),\n", - " cirq.measure(q0, key='qubit_0'),\n", - " cirq.measure(q1, key='qubit_1'),\n", + " cirq.H(q0),\n", + " cirq.X(q1),\n", + " cirq.CX(q0, q1),\n", + " cirq.measure(q0, key=\"qubit_0\"),\n", + " cirq.measure(q1, key=\"qubit_1\"),\n", ")\n", "print(\"Circuit:\")\n", "print(circuit)\n", "print()\n", "\n", "# Simulate the circuit with Cirq and return just the measurement values.\n", - "print('Cirq results:')\n", + "print(\"Cirq results:\")\n", "cirq_simulator = cirq.Simulator()\n", "cirq_results = cirq_simulator.run(circuit, repetitions=5)\n", "print(cirq_results)\n", "print()\n", "\n", "# Simulate the circuit with qsim and return just the measurement values.\n", - "print('qsim results:')\n", + "print(\"qsim results:\")\n", "qsim_simulator = qsimcirq.QSimSimulator()\n", "qsim_results = qsim_simulator.run(circuit, repetitions=5)\n", "print(qsim_results)" @@ -247,16 +252,19 @@ "# Define a circuit with intermediate measurements.\n", "q0 = cirq.LineQubit(0)\n", "circuit = cirq.Circuit(\n", - " cirq.X(q0)**0.5, cirq.measure(q0, key='m0'),\n", - " cirq.X(q0)**0.5, cirq.measure(q0, key='m1'),\n", - " cirq.X(q0)**0.5, cirq.measure(q0, key='m2'),\n", + " cirq.X(q0) ** 0.5,\n", + " cirq.measure(q0, key=\"m0\"),\n", + " cirq.X(q0) ** 0.5,\n", + " cirq.measure(q0, key=\"m1\"),\n", + " cirq.X(q0) ** 0.5,\n", + " cirq.measure(q0, key=\"m2\"),\n", ")\n", "print(\"Circuit:\")\n", "print(circuit)\n", "print()\n", "\n", "# Simulate the circuit with qsim and return just the measurement values.\n", - "print('qsim results:')\n", + "print(\"qsim results:\")\n", "qsim_simulator = qsimcirq.QSimSimulator()\n", "qsim_results = qsim_simulator.run(circuit, repetitions=5)\n", "print(qsim_results)" @@ -289,18 +297,16 @@ "print()\n", "\n", "# Simulate the circuit with qsim and return the amplitudes for |00) and |01).\n", - "print('Cirq results:')\n", + "print(\"Cirq results:\")\n", "cirq_simulator = cirq.Simulator()\n", - "cirq_results = cirq_simulator.compute_amplitudes(\n", - " circuit, bitstrings=[0b00, 0b01])\n", + "cirq_results = cirq_simulator.compute_amplitudes(circuit, bitstrings=[0b00, 0b01])\n", "print(cirq_results)\n", "print()\n", "\n", "# Simulate the circuit with qsim and return the amplitudes for |00) and |01).\n", - "print('qsim results:')\n", + "print(\"qsim results:\")\n", "qsim_simulator = qsimcirq.QSimSimulator()\n", - "qsim_results = qsim_simulator.compute_amplitudes(\n", - " circuit, bitstrings=[0b00, 0b01])\n", + "qsim_results = qsim_simulator.compute_amplitudes(circuit, bitstrings=[0b00, 0b01])\n", "print(qsim_results)" ] }, @@ -323,21 +329,20 @@ }, "outputs": [], "source": [ - "import time\n", - "\n", "# Get a rectangular grid of qubits.\n", "qubits = cirq.GridQubit.rect(4, 5)\n", "\n", "# Generates a random circuit on the provided qubits.\n", "circuit = cirq.experiments.random_rotations_between_grid_interaction_layers_circuit(\n", - " qubits=qubits, depth=16)\n", + " qubits=qubits, depth=16\n", + ")\n", "\n", "# Simulate the circuit with Cirq and print the runtime.\n", "cirq_simulator = cirq.Simulator()\n", "cirq_start = time.time()\n", "cirq_results = cirq_simulator.simulate(circuit)\n", "cirq_elapsed = time.time() - cirq_start\n", - "print(f'Cirq runtime: {cirq_elapsed} seconds.')\n", + "print(f\"Cirq runtime: {cirq_elapsed} seconds.\")\n", "print()\n", "\n", "# Simulate the circuit with qsim and print the runtime.\n", @@ -345,7 +350,7 @@ "qsim_start = time.time()\n", "qsim_results = qsim_simulator.simulate(circuit)\n", "qsim_elapsed = time.time() - qsim_start\n", - "print(f'qsim runtime: {qsim_elapsed} seconds.')" + "print(f\"qsim runtime: {qsim_elapsed} seconds.\")" ] }, { @@ -354,7 +359,7 @@ "id": "OUjhKoRVZGKZ" }, "source": [ -"qsim performance can be tuned further by passing options to the simulator constructor. These options use the same format as the qsim_base binary - a full description can be found in the qsim [usage doc](https://github.com/quantumlib/qsim/blob/main/docs/usage.md). The example below demonstrates enabling multithreading in qsim; for best performance, use the same number of threads as the number of cores (or virtual cores) on your machine." + "qsim performance can be tuned further by passing options to the simulator constructor. These options use the same format as the qsim_base binary - a full description can be found in the qsim [usage doc](https://github.com/quantumlib/qsim/blob/main/docs/usage.md). The example below demonstrates enabling multithreading in qsim; for best performance, use the same number of threads as the number of cores (or virtual cores) on your machine." ] }, { @@ -366,41 +371,41 @@ "outputs": [], "source": [ "# Use eight threads to parallelize simulation.\n", - "options = {'t': 8}\n", + "options = {\"t\": 8}\n", "\n", "qsim_simulator = qsimcirq.QSimSimulator(options)\n", "qsim_start = time.time()\n", "qsim_results = qsim_simulator.simulate(circuit)\n", "qsim_elapsed = time.time() - qsim_start\n", - "print(f'qsim runtime: {qsim_elapsed} seconds.')" + "print(f\"qsim runtime: {qsim_elapsed} seconds.\")" ] }, { - "cell_type": "markdown", - "metadata": { - "id": "HVkTbqfH4zls" - }, - "source": [ - "Another option is to adjust the maximum number of qubits over which to fuse gates. Increasing this value (as demonstrated below) increases arithmetic intensity, which may improve performance with the right environment settings." - ] + "cell_type": "markdown", + "metadata": { + "id": "HVkTbqfH4zls" + }, + "source": [ + "Another option is to adjust the maximum number of qubits over which to fuse gates. Increasing this value (as demonstrated below) increases arithmetic intensity, which may improve performance with the right environment settings." + ] }, { - "cell_type": "code", - "metadata": { - "id": "kkQ5ARpI5phJ" - }, - "source": [ - "# Increase maximum fused gate size to three qubits.\n", - "options = {'f': 3}\n", - "\n", - "qsim_simulator = qsimcirq.QSimSimulator(options)\n", - "qsim_start = time.time()\n", - "qsim_results = qsim_simulator.simulate(circuit)\n", - "qsim_elapsed = time.time() - qsim_start\n", - "print(f'qsim runtime: {qsim_elapsed} seconds.')" - ], - "execution_count": null, - "outputs": [] + "cell_type": "code", + "metadata": { + "id": "kkQ5ARpI5phJ" + }, + "source": [ + "# Increase maximum fused gate size to three qubits.\n", + "options = {\"f\": 3}\n", + "\n", + "qsim_simulator = qsimcirq.QSimSimulator(options)\n", + "qsim_start = time.time()\n", + "qsim_results = qsim_simulator.simulate(circuit)\n", + "qsim_elapsed = time.time() - qsim_start\n", + "print(f\"qsim runtime: {qsim_elapsed} seconds.\")" + ], + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", @@ -428,9 +433,7 @@ "q1 = cirq.GridQubit(0, 1)\n", "\n", "# Create a circuit that entangles the pair.\n", - "circuit = cirq.Circuit(\n", - " cirq.H(q0), cirq.CX(q0, q1), cirq.X(q1)\n", - ")\n", + "circuit = cirq.Circuit(cirq.H(q0), cirq.CX(q0, q1), cirq.X(q1))\n", "print(\"Circuit:\")\n", "print(circuit)" ] @@ -441,7 +444,7 @@ "id": "KUAwCOGeu0wA" }, "source": [ -"In order to let qsimh know how we want to split up the circuit, we need to pass it some additional options. More detail on these can be found in the qsim [usage doc](https://github.com/quantumlib/qsim/blob/main/docs/usage.md), but the fundamentals are explained below." + "In order to let qsimh know how we want to split up the circuit, we need to pass it some additional options. More detail on these can be found in the qsim [usage doc](https://github.com/quantumlib/qsim/blob/main/docs/usage.md), but the fundamentals are explained below." ] }, { @@ -456,24 +459,25 @@ "\n", "# 'k' indicates the qubits on one side of the cut.\n", "# We'll use qubit 0 for this.\n", - "options['k'] = [0]\n", + "options[\"k\"] = [0]\n", "\n", "# 'p' and 'r' control when values are assigned to cut indices.\n", "# There are some intricacies in choosing values for these options,\n", "# but for now we'll set p=1 and r=0.\n", "# This allows us to pre-assign the value of the CX indices\n", "# and distribute its execution to multiple jobs.\n", - "options['p'] = 1\n", - "options['r'] = 0\n", + "options[\"p\"] = 1\n", + "options[\"r\"] = 0\n", "\n", "# 'w' indicates the value pre-assigned to the cut.\n", "# This should change for each execution.\n", - "options['w'] = 0\n", + "options[\"w\"] = 0\n", "\n", "# Create the qsimh simulator with those options.\n", "qsimh_simulator = qsimcirq.QSimhSimulator(options)\n", "results_0 = qsimh_simulator.compute_amplitudes(\n", - " circuit, bitstrings=[0b00, 0b01, 0b10, 0b11])\n", + " circuit, bitstrings=[0b00, 0b01, 0b10, 0b11]\n", + ")\n", "print(results_0)" ] }, @@ -494,11 +498,12 @@ }, "outputs": [], "source": [ - "options['w'] = 1\n", + "options[\"w\"] = 1\n", "\n", "qsimh_simulator = qsimcirq.QSimhSimulator(options)\n", "results_1 = qsimh_simulator.compute_amplitudes(\n", - " circuit, bitstrings=[0b00, 0b01, 0b10, 0b11])\n", + " circuit, bitstrings=[0b00, 0b01, 0b10, 0b11]\n", + ")\n", "print(results_1)" ] },