Switch to unified view

a b/Code/Cirq/02 Large Circuit Simplify Gates kkawchak.ipynb
1
{
2
  "cells": [
3
    {
4
      "cell_type": "markdown",
5
      "metadata": {
6
        "id": "4fa0ce4484f8"
7
      },
8
      "source": [
9
        "##### Copyright 2020 Google"
10
      ]
11
    },
12
    {
13
      "cell_type": "code",
14
      "execution_count": 1,
15
      "metadata": {
16
        "cellView": "form",
17
        "id": "906e07f6e562"
18
      },
19
      "outputs": [],
20
      "source": [
21
        "#@title Licensed under the Apache License, Version 2.0 (the \"License\");\n",
22
        "# you may not use this file except in compliance with the License.\n",
23
        "# You may obtain a copy of the License at\n",
24
        "#\n",
25
        "# https://www.apache.org/licenses/LICENSE-2.0\n",
26
        "#\n",
27
        "# Unless required by applicable law or agreed to in writing, software\n",
28
        "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
29
        "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
30
        "# See the License for the specific language governing permissions and\n",
31
        "# limitations under the License."
32
      ]
33
    },
34
    {
35
      "cell_type": "markdown",
36
      "metadata": {
37
        "id": "HdHn4gQ5ZV0P"
38
      },
39
      "source": [
40
        "# Simulate a large quantum circuit"
41
      ]
42
    },
43
    {
44
      "cell_type": "markdown",
45
      "metadata": {
46
        "id": "9210d1e6db40"
47
      },
48
      "source": [
49
        "<table class=\"tfo-notebook-buttons\" align=\"left\">\n",
50
        "  <td>\n",
51
        "    <a target=\"_blank\" href=\"https://quantumai.google/qsim/tutorials/q32d14\"><img src=\"https://quantumai.google/site-assets/images/buttons/quantumai_logo_1x.png\" />View on QuantumAI</a>\n",
52
        "  </td>\n",
53
        "  <td>\n",
54
        "    <a target=\"_blank\" href=\"https://colab.research.google.com/github/quantumlib/qsim/blob/master/docs/tutorials/q32d14.ipynb\"><img src=\"https://quantumai.google/site-assets/images/buttons/colab_logo_1x.png\" />Run in Google Colab</a>\n",
55
        "  </td>\n",
56
        "  <td>\n",
57
        "    <a target=\"_blank\" href=\"https://github.com/quantumlib/qsim/blob/master/docs/tutorials/q32d14.ipynb\"><img src=\"https://quantumai.google/site-assets/images/buttons/github_logo_1x.png\" />View source on GitHub</a>\n",
58
        "  </td>\n",
59
        "  <td>\n",
60
        "    <a href=\"https://storage.googleapis.com/tensorflow_docs/qsim/docs/tutorials/q32d14.ipynb\"><img src=\"https://quantumai.google/site-assets/images/buttons/download_icon_1x.png\" />Download notebook</a>\n",
61
        "  </td>\n",
62
        "</table>"
63
      ]
64
    },
65
    {
66
      "cell_type": "markdown",
67
      "metadata": {
68
        "id": "H-JOOrTJkYSC"
69
      },
70
      "source": [
71
        "Caution: Because of its size, this large circuit will not run on a default Google Colab kernel and is unlikely to run on your personal computer. Follow the [Quantum simulation on GCP](./qsimcirq_gcp.md) tutorial to run on a larger Google Cloud VM."
72
      ]
73
    },
74
    {
75
      "cell_type": "markdown",
76
      "metadata": {
77
        "id": "RWNGOoXe3xdI"
78
      },
79
      "source": [
80
        "This tutorial builds a large circuit—with 32 qubits and a gate depth of 14—in the following steps:\n",
81
        "\n",
82
        "1. Build: The circuit build has two steps:\n",
83
        "  * Layout the grid of qubits\n",
84
        "  * Define the gate operations on the grid of qubits\n",
85
        "2. Run options: In the final cell, the _qsim_ simulator is run.\n",
86
        "  * Set `options = {'t' = 16, 'v' = 3}` for 16 Cores,\n",
87
        "  * and `Verbosity = 3`.\n",
88
        "3. Run Calculate Amplitudes: The final step is running the circuit and calculating the amplitudes for two input bitstrings, as described by [qsim_amplitudes usage](./usage.md).\n"
89
      ]
90
    },
91
    {
92
      "cell_type": "markdown",
93
      "metadata": {
94
        "id": "sQlCEzcTZoT0"
95
      },
96
      "source": [
97
        "## Setup\n",
98
        "\n",
99
        "Install the Cirq and qsimcirq packages:"
100
      ]
101
    },
102
    {
103
      "cell_type": "code",
104
      "execution_count": 2,
105
      "metadata": {
106
        "id": "Y63PxS3nZp6R",
107
        "outputId": "1813ca1b-647e-43af-c89e-06639d9a709a",
108
        "colab": {
109
          "base_uri": "https://localhost:8080/",
110
          "height": 0
111
        }
112
      },
113
      "outputs": [
114
        {
115
          "output_type": "stream",
116
          "name": "stdout",
117
          "text": [
118
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m25.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
119
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m142.7/142.7 kB\u001b[0m \u001b[31m15.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
120
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m579.1/579.1 kB\u001b[0m \u001b[31m29.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
121
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.2/58.2 kB\u001b[0m \u001b[31m2.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
122
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m66.5/66.5 kB\u001b[0m \u001b[31m3.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
123
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m596.4/596.4 kB\u001b[0m \u001b[31m44.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
124
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m221.0/221.0 kB\u001b[0m \u001b[31m26.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
125
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m229.9/229.9 kB\u001b[0m \u001b[31m27.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
126
            "\u001b[?25h  Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
127
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m78.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
128
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m151.7/151.7 kB\u001b[0m \u001b[31m19.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
129
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m45.6/45.6 kB\u001b[0m \u001b[31m5.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
130
            "\u001b[?25h  Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
131
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m44.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
132
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m60.6/60.6 kB\u001b[0m \u001b[31m8.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
133
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m71.5/71.5 kB\u001b[0m \u001b[31m8.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
134
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m98.7/98.7 kB\u001b[0m \u001b[31m12.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
135
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.7/1.7 MB\u001b[0m \u001b[31m84.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
136
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m112.2/112.2 kB\u001b[0m \u001b[31m15.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
137
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m69.6/69.6 kB\u001b[0m \u001b[31m9.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
138
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m485.6/485.6 kB\u001b[0m \u001b[31m51.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
139
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m7.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
140
            "\u001b[?25h  Building wheel for lark (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
141
            "  Building wheel for rpcq (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
142
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m8.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
143
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m227.7/227.7 kB\u001b[0m \u001b[31m26.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
144
            "\u001b[?25h"
145
          ]
146
        }
147
      ],
148
      "source": [
149
        "try:\n",
150
        "    import cirq\n",
151
        "except ImportError:\n",
152
        "    !pip install cirq --quiet\n",
153
        "    import cirq\n",
154
        "\n",
155
        "try:\n",
156
        "    import qsimcirq\n",
157
        "except ImportError:\n",
158
        "    !pip install qsimcirq --quiet\n",
159
        "    import qsimcirq"
160
      ]
161
    },
162
    {
163
      "cell_type": "markdown",
164
      "metadata": {
165
        "id": "lyyU3z-QnPES"
166
      },
167
      "source": [
168
        "And import module dependencies for this tutorial:"
169
      ]
170
    },
171
    {
172
      "cell_type": "code",
173
      "execution_count": 3,
174
      "metadata": {
175
        "id": "4YEjk8wQnNjC"
176
      },
177
      "outputs": [],
178
      "source": [
179
        "import numpy as np\n",
180
        "import time"
181
      ]
182
    },
183
    {
184
      "cell_type": "markdown",
185
      "metadata": {
186
        "id": "79ccf4273410"
187
      },
188
      "source": [
189
        "## Build the circuit\n",
190
        "\n",
191
        "This is a large circuit with 32 qubits, and a depth of 14 quantum gate operations. Each `cirq.GridQubit()` call creates a simulated qubit with a grid location defined by the argument. This results in the grid of qubits `q`. The circuit is made up of a sequence of gate operations on the qubit grid. This explains the size of the circuit definition: each of the 32 qubits has a sequence of 14 gate operations applied.\n",
192
        "\n",
193
        "The output of `print(circuit)` results in what renders as a complete circuit diagram, with each qubit represented as a line and the gate operations represented as notations on these lines."
194
      ]
195
    },
196
    {
197
      "cell_type": "markdown",
198
      "metadata": {
199
        "id": "TX8L4odDnlub"
200
      },
201
      "source": [
202
        "### Layout the grid of qubits"
203
      ]
204
    },
205
    {
206
      "cell_type": "code",
207
      "execution_count": 4,
208
      "metadata": {
209
        "id": "cMeicc_Bnj-F"
210
      },
211
      "outputs": [],
212
      "source": [
213
        "q = [\n",
214
        "        cirq.GridQubit(1,5),\n",
215
        "        cirq.GridQubit(1,6),\n",
216
        "        cirq.GridQubit(1,7),\n",
217
        "        cirq.GridQubit(2,4),\n",
218
        "        cirq.GridQubit(2,5),\n",
219
        "        cirq.GridQubit(2,6),\n",
220
        "        cirq.GridQubit(2,7),\n",
221
        "        cirq.GridQubit(3,3),\n",
222
        "        cirq.GridQubit(3,4),\n",
223
        "        cirq.GridQubit(3,5),\n",
224
        "        cirq.GridQubit(3,6),\n",
225
        "        cirq.GridQubit(3,7),\n",
226
        "        cirq.GridQubit(4,2),\n",
227
        "        cirq.GridQubit(4,3),\n",
228
        "        cirq.GridQubit(4,4),\n",
229
        "        cirq.GridQubit(4,5),\n",
230
        "        cirq.GridQubit(4,6),\n",
231
        "        cirq.GridQubit(4,7),\n",
232
        "        cirq.GridQubit(5,1),\n",
233
        "        cirq.GridQubit(5,2),\n",
234
        "        cirq.GridQubit(5,3),\n",
235
        "        cirq.GridQubit(5,4),\n",
236
        "        cirq.GridQubit(5,5),\n",
237
        "        cirq.GridQubit(5,6),\n",
238
        "        cirq.GridQubit(6,1),\n",
239
        "        cirq.GridQubit(6,2),\n",
240
        "        cirq.GridQubit(6,3),\n",
241
        "        cirq.GridQubit(6,4),\n",
242
        "        cirq.GridQubit(6,5),\n",
243
        "        cirq.GridQubit(7,2),\n",
244
        "        cirq.GridQubit(7,3),\n",
245
        "        cirq.GridQubit(7,4)\n",
246
        "    ]"
247
      ]
248
    },
249
    {
250
      "cell_type": "markdown",
251
      "metadata": {
252
        "id": "15rBqWDsnucL"
253
      },
254
      "source": [
255
        "### Define the gate operations on the qubits"
256
      ]
257
    },
258
    {
259
      "cell_type": "code",
260
      "execution_count": 5,
261
      "metadata": {
262
        "id": "t4Lj66-m3xdK",
263
        "outputId": "194ef4a8-dec3-46fa-971f-912c300075c5",
264
        "colab": {
265
          "base_uri": "https://localhost:8080/",
266
          "height": 0
267
        }
268
      },
269
      "outputs": [
270
        {
271
          "output_type": "stream",
272
          "name": "stdout",
273
          "text": [
274
            "(1, 5): ───Rz(-1.44π)────Rz(1.79π)─────Rz(1.51π)─────Rz(-1.44π)────Rz(-1.87π)────Rz(-1.77π)────Rz(-0.707π)───Rz(0.778π)────Rz(1.7π)──────Rz(-1.34π)────Rz(1.07π)─────Rz(-1.0π)─────Rz(1.27π)─────Rz(-0.91π)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
275
            "\n",
276
            "(1, 6): ───Rz(1.92π)─────Rz(1.38π)─────Rz(1.44π)─────Rz(-1.79π)────Rz(1.58π)─────Rz(1.98π)─────Rz(-1.03π)────Rz(0.332π)────Rz(1.87π)─────Rz(1.78π)─────Rz(-0.644π)───Rz(0.199π)────Rz(0.016π)────Rz(-0.716π)───Rz(-1.7π)─────Rz(1.34π)─────Rz(1.14π)─────Rz(-1.58π)────Rz(1.06π)─────Rz(-1.76π)────Rz(-1.27π)────Rz(0.913π)────────────────────────────────────────────────────────────────────────────────────────\n",
277
            "\n",
278
            "(1, 7): ───Rz(-1.96π)────Rz(-1.42π)────Rz(-1.61π)────Rz(1.19π)─────Rz(0.996π)────Rz(-0.368π)───Rz(0.902π)────Rz(-1.32π)────Rz(-0.052π)───Rz(0.68π)─────Rz(-0.582π)───Rz(0.162π)────Rz(-1.1π)─────Rz(1.73π)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
279
            "\n",
280
            "(2, 4): ───Rz(1.24π)─────Rz(-0.766π)───Rz(1.79π)─────Rz(-1.1π)─────Rz(1.38π)─────Rz(-0.91π)────Rz(-0.574π)───Rz(1.53π)─────Rz(-1.05π)────Rz(1.07π)─────Rz(-0.381π)───Rz(1.67π)─────Rz(-1.2π)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
281
            "\n",
282
            "(2, 5): ───Rz(-1.28π)────Rz(0.721π)────Rz(-1.19π)────Rz(1.22π)─────Rz(1.8π)──────Rz(-1.49π)────Rz(-1.51π)────Rz(1.45π)─────Rz(-1.43π)────Rz(0.865π)────Rz(-1.62π)────Rz(1.66π)─────Rz(0.184π)────Rz(0.127π)────Rz(0.709π)────Rz(-0.775π)───Rz(-1.57π)────Rz(1.01π)─────Rz(1.95π)─────Rz(-1.91π)────Rz(-1.44π)────Rz(1.75π)─────Rz(-1.07π)────Rz(1.0π)──────Rz(-1.71π)────Rz(1.15π)─────Rz(1.51π)─────Rz(-1.48π)────\n",
283
            "\n",
284
            "(2, 6): ───Rz(-0.653π)───Rz(1.32π)─────Rz(1.17π)─────Rz(-1.24π)────Rz(-1.37π)────Rz(-1.85π)────Rz(-1.58π)────Rz(-1.98π)────Rz(1.13π)─────Rz(-0.466π)───Rz(1.6π)──────Rz(-1.68π)────Rz(-1.36π)────Rz(-1.86π)────Rz(0.639π)────Rz(-0.204π)───Rz(-1.09π)────Rz(1.75π)─────Rz(-1.96π)────Rz(1.89π)─────Rz(-1.35π)────Rz(-1.86π)────Rz(-1.14π)────Rz(1.58π)─────Rz(0.699π)────Rz(-0.034π)───Rz(-1.53π)────Rz(1.46π)─────\n",
285
            "\n",
286
            "(2, 7): ───Rz(0.212π)────Rz(-1.76π)────Rz(-1.61π)────Rz(-1.59π)────Rz(1.61π)─────Rz(-1.2π)─────Rz(-1.57π)────Rz(0.025π)────Rz(-0.128π)───Rz(0.925π)────Rz(-0.908π)───Rz(1.32π)─────Rz(0.644π)────Rz(1.81π)─────Rz(1.36π)─────Rz(-0.559π)───Rz(0.576π)────Rz(-0.169π)───Rz(-1.14π)────Rz(-0.407π)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
287
            "\n",
288
            "(3, 3): ───Rz(-1.47π)────Rz(1.65π)─────Rz(0.704π)────Rz(-0.477π)───Rz(-0.435π)───Rz(0.622π)────Rz(-1.98π)────Rz(-1.8π)─────Rz(0.597π)────Rz(-0.41π)────Rz(-0.656π)───Rz(0.883π)────Rz(1.63π)─────Rz(-1.44π)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
289
            "\n",
290
            "(3, 4): ───Rz(0.277π)────Rz(-0.672π)───Rz(1.53π)─────Rz(-1.6π)─────Rz(-1.76π)────Rz(1.13π)─────Rz(0.184π)────Rz(0.689π)────Rz(1.16π)─────Rz(-1.56π)────Rz(0.493π)────Rz(-0.563π)───Rz(0.604π)────Rz(-1.23π)────Rz(1.36π)─────Rz(-0.483π)───Rz(-1.96π)────Rz(1.56π)─────Rz(-0.539π)───Rz(0.469π)────Rz(-1.04π)────Rz(0.411π)────Rz(-1.47π)────Rz(-1.66π)────Rz(-1.07π)────Rz(0.676π)────Rz(-1.57π)────Rz(1.5π)──────\n",
291
            "\n",
292
            "(3, 5): ───Rz(-0.185π)───Rz(0.764π)────Rz(-0.481π)───Rz(1.05π)─────Rz(-1.81π)────Rz(1.49π)─────Rz(-0.217π)───Rz(-1.49π)────Rz(-1.07π)────Rz(1.65π)─────Rz(0.715π)────Rz(-0.148π)───Rz(-0.188π)───Rz(-0.131π)───Rz(0.371π)────Rz(1.92π)─────Rz(-1.95π)────Rz(-1.47π)────Rz(1.91π)─────Rz(-1.34π)────Rz(1.43π)─────Rz(-1.75π)────Rz(0.959π)────Rz(1.33π)─────Rz(1.16π)─────Rz(-0.584π)───Rz(-0.893π)───Rz(1.46π)─────\n",
293
            "\n",
294
            "(3, 6): ───Rz(0.022π)────Rz(0.58π)─────Rz(0.526π)────Rz(-1.0π)─────Rz(1.26π)─────Rz(1.74π)─────Rz(0.773π)────Rz(-1.86π)────Rz(-0.718π)───Rz(1.32π)─────Rz(-0.67π)────Rz(0.193π)────Rz(1.25π)─────Rz(1.75π)─────Rz(-1.9π)─────Rz(0.808π)────Rz(-1.46π)────Rz(-1.94π)────Rz(-1.87π)────Rz(1.39π)─────Rz(1.24π)─────Rz(1.75π)─────Rz(-0.571π)───Rz(-0.52π)────Rz(1.8π)──────Rz(-1.2π)─────Rz(0.938π)────Rz(-1.41π)────\n",
295
            "\n",
296
            "(3, 7): ───Rz(-0.03π)────Rz(-0.588π)───Rz(1.57π)─────Rz(1.55π)─────Rz(0.496π)────Rz(-0.851π)───Rz(0.71π)─────Rz(-1.33π)────Rz(0.083π)────Rz(-0.97π)────Rz(-1.74π)────Rz(1.38π)─────Rz(1.45π)─────Rz(1.93π)─────Rz(-1.4π)─────Rz(0.514π)────Rz(0.032π)────Rz(-0.387π)───Rz(-1.81π)────Rz(1.19π)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
297
            "\n",
298
            "(4, 2): ───Rz(-0.847π)───Rz(1.08π)─────Rz(-1.41π)────Rz(0.738π)────Rz(-0.695π)───Rz(0.932π)────Rz(-1.25π)────Rz(0.582π)────Rz(-0.543π)───Rz(0.78π)─────Rz(-1.1π)─────Rz(0.426π)────Rz(-0.391π)───Rz(0.628π)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
299
            "\n",
300
            "(4, 3): ───Rz(0.816π)────Rz(-1.11π)────Rz(-1.86π)────Rz(1.35π)─────Rz(0.721π)────Rz(-1.06π)────Rz(-0.787π)───Rz(0.394π)────Rz(0.664π)────Rz(-0.963π)───Rz(-0.98π)────Rz(0.462π)────Rz(-0.163π)───Rz(-0.173π)───Rz(1.89π)─────Rz(1.71π)─────Rz(0.512π)────Rz(-0.811π)───Rz(-0.096π)───Rz(-0.422π)───Rz(-1.05π)────Rz(0.711π)────Rz(0.573π)────Rz(-0.966π)───Rz(0.36π)─────Rz(-0.659π)───Rz(0.788π)────Rz(-1.31π)────\n",
301
            "\n",
302
            "(4, 4): ───Rz(-1.0π)─────Rz(0.799π)────Rz(1.82π)─────Rz(-1.39π)────Rz(-1.39π)────Rz(0.467π)────Rz(-0.109π)───Rz(-0.613π)───Rz(-0.701π)───Rz(0.499π)────Rz(0.934π)────Rz(-0.508π)───Rz(-0.939π)───Rz(0.015π)────Rz(-1.28π)────Rz(0.559π)────Rz(-0.401π)───Rz(0.199π)────Rz(0.05π)─────Rz(0.376π)────Rz(-0.487π)───Rz(-0.437π)───Rz(1.55π)─────Rz(1.73π)─────Rz(-0.101π)───Rz(-0.101π)───Rz(-0.834π)───Rz(1.26π)─────\n",
303
            "\n",
304
            "(4, 5): ───Rz(1.12π)─────Rz(-0.678π)───Rz(0.222π)────Rz(-0.095π)───Rz(-1.62π)────Rz(0.486π)────Rz(0.126π)────Rz(1.4π)──────Rz(0.822π)────Rz(-0.378π)───Rz(-1.84π)────Rz(1.97π)─────Rz(-0.724π)───Rz(-0.41π)────Rz(-0.462π)───Rz(1.99π)─────Rz(0.522π)────Rz(-0.078π)───Rz(0.094π)────Rz(0.033π)────Rz(0.172π)────Rz(-1.31π)────Rz(-1.05π)────Rz(-1.43π)────Rz(0.222π)────Rz(0.222π)────Rz(-1.97π)────Rz(-1.9π)─────\n",
305
            "\n",
306
            "(4, 6): ───Rz(-0.163π)───Rz(-1.63π)────Rz(-0.183π)───Rz(0.135π)────Rz(0.368π)────Rz(-0.897π)───Rz(-0.771π)───Rz(1.87π)─────Rz(-0.463π)───Rz(-1.33π)────Rz(1.88π)─────Rz(-1.93π)────Rz(-0.972π)───Rz(0.443π)────Rz(1.9π)──────Rz(-0.807π)───Rz(-0.763π)───Rz(-1.03π)────Rz(-0.055π)───Rz(0.007π)────Rz(1.69π)─────Rz(1.78π)─────Rz(0.573π)────Rz(0.521π)────Rz(-1.06π)────Rz(-0.726π)───Rz(-1.99π)────Rz(1.94π)─────\n",
307
            "\n",
308
            "(4, 7): ───Rz(0.177π)────Rz(1.64π)─────Rz(-0.48π)────Rz(0.867π)────Rz(0.477π)────Rz(1.34π)─────Rz(1.75π)─────Rz(-1.36π)────Rz(0.777π)────Rz(1.04π)─────Rz(-0.016π)───Rz(0.403π)────Rz(1.08π)─────Rz(0.739π)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
309
            "\n",
310
            "(5, 1): ───Rz(1.12π)─────Rz(1.98π)─────Rz(1.64π)─────Rz(1.6π)──────Rz(0.234π)────Rz(-1.14π)────Rz(0.303π)────Rz(-1.07π)────Rz(-0.65π)────Rz(-0.255π)───Rz(-1.03π)────Rz(0.268π)────Rz(-1.53π)────Rz(0.629π)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
311
            "\n",
312
            "(5, 2): ───Rz(-0.225π)───Rz(0.795π)────Rz(-1.1π)─────Rz(-1.96π)────Rz(1.4π)──────Rz(-0.75π)────Rz(1.6π)──────Rz(1.96π)─────Rz(-1.11π)────Rz(1.68π)─────Rz(-0.213π)───Rz(1.16π)─────Rz(1.24π)─────Rz(-0.594π)───Rz(0.406π)────Rz(-0.839π)───Rz(2.0π)──────Rz(-1.43π)────Rz(0.671π)────Rz(0.276π)────Rz(1.08π)─────Rz(-0.438π)───Rz(-0.79π)────Rz(0.357π)────Rz(1.11π)─────Rz(-0.541π)───Rz(1.55π)─────Rz(-0.608π)───\n",
313
            "\n",
314
            "(5, 3): ───Rz(0.281π)────Rz(-0.739π)───Rz(0.781π)────Rz(-1.55π)────Rz(-0.661π)───Rz(1.12π)─────Rz(-1.67π)────Rz(-1.43π)────Rz(1.17π)─────Rz(-1.63π)────Rz(-0.999π)───Rz(0.228π)────Rz(0.223π)────Rz(0.234π)────Rz(1.14π)─────Rz(-0.242π)───Rz(-1.94π)────Rz(1.48π)─────Rz(1.22π)─────Rz(-1.99π)────Rz(1.11π)─────Rz(-0.65π)────Rz(-0.054π)───Rz(0.95π)─────Rz(-1.06π)────Rz(0.597π)────Rz(-0.559π)───Rz(-0.212π)───\n",
315
            "\n",
316
            "(5, 4): ───Rz(-0.331π)───Rz(0.049π)────Rz(-0.678π)───Rz(1.66π)─────Rz(1.42π)─────Rz(-0.44π)────Rz(1.85π)─────Rz(-1.18π)────Rz(0.413π)────Rz(-0.695π)───Rz(1.1π)──────Rz(-0.125π)───Rz(0.965π)────Rz(0.012π)────Rz(-0.006π)───Rz(0.678π)────Rz(1.16π)─────Rz(-1.44π)────Rz(-1.12π)────Rz(-1.91π)────Rz(0.513π)────Rz(0.464π)────Rz(-1.86π)────Rz(-1.46π)────Rz(1.9π)──────Rz(1.82π)─────Rz(0.662π)────Rz(0.315π)────\n",
317
            "\n",
318
            "(5, 5): ───Rz(0.404π)────Rz(0.024π)────Rz(1.86π)─────Rz(-1.89π)────Rz(1.63π)─────Rz(-0.476π)───Rz(-1.57π)────Rz(1.43π)─────Rz(-0.34π)────Rz(0.768π)────Rz(1.56π)─────Rz(-1.59π)────Rz(0.734π)────Rz(0.42π)─────Rz(1.83π)─────Rz(-1.97π)────Rz(-1.08π)────Rz(1.51π)─────Rz(1.26π)─────Rz(-1.29π)────Rz(-0.162π)───Rz(1.32π)─────Rz(1.23π)─────Rz(-1.37π)────Rz(-1.83π)────Rz(-1.74π)────Rz(0.964π)────Rz(-0.993π)───\n",
319
            "\n",
320
            "(5, 6): ───Rz(1.85π)─────Rz(1.61π)─────Rz(0.089π)────Rz(1.35π)─────Rz(-1.85π)────Rz(1.31π)─────Rz(1.43π)─────Rz(0.014π)────Rz(-1.55π)────Rz(1.01π)─────Rz(-1.23π)────Rz(-1.33π)────Rz(-1.25π)────Rz(0.706π)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
321
            "\n",
322
            "(6, 1): ───Rz(-1.75π)────Rz(-0.545π)───Rz(-1.93π)────Rz(-1.89π)────Rz(1.51π)─────Rz(0.199π)────Rz(-0.596π)───Rz(0.775π)────Rz(0.765π)────Rz(0.943π)────Rz(0.74π)─────Rz(-0.561π)───Rz(0.021π)────Rz(1.69π)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
323
            "\n",
324
            "(6, 2): ───Rz(-0.408π)───Rz(0.471π)────Rz(1.46π)─────Rz(0.262π)────Rz(-0.982π)───Rz(-1.63π)────Rz(-1.61π)────Rz(-1.97π)────Rz(-1.29π)────Rz(1.36π)─────Rz(-1.79π)────Rz(-0.482π)───Rz(1.08π)─────Rz(0.307π)────Rz(-0.41π)────Rz(0.835π)────Rz(1.82π)─────Rz(-1.76π)────Rz(-1.05π)────Rz(-1.23π)────Rz(-0.854π)───Rz(-1.76π)────Rz(0.786π)────Rz(-0.361π)───Rz(0.94π)─────Rz(-0.877π)───Rz(-0.304π)───Rz(-1.97π)────\n",
325
            "\n",
326
            "(6, 3): ───Rz(0.367π)────Rz(-0.513π)───Rz(-1.69π)────Rz(1.65π)─────Rz(1.7π)──────Rz(-1.76π)────Rz(1.78π)─────Rz(1.55π)─────Rz(1.25π)─────Rz(-1.4π)─────Rz(-0.132π)───Rz(0.096π)────Rz(-1.42π)────Rz(1.36π)─────Rz(-1.03π)────Rz(0.355π)────Rz(-1.87π)────Rz(1.72π)─────Rz(1.42π)─────Rz(-1.46π)────Rz(-0.539π)───Rz(0.479π)────Rz(0.166π)────Rz(-0.837π)───Rz(-0.981π)───Rz(0.835π)────Rz(-1.02π)────Rz(0.987π)────\n",
327
            "\n",
328
            "(6, 4): ───Rz(-0.351π)───Rz(-1.84π)────Rz(1.76π)─────Rz(-1.58π)────Rz(0.586π)────Rz(0.014π)────Rz(-1.93π)────Rz(1.11π)─────Rz(1.65π)─────Rz(0.163π)────Rz(0.207π)────Rz(-0.021π)───Rz(-1.13π)────Rz(1.73π)─────Rz(-0.069π)───Rz(-0.752π)───Rz(-0.348π)───Rz(-1.84π)────Rz(-1.35π)────Rz(1.53π)─────Rz(1.16π)─────Rz(-0.557π)───Rz(1.79π)─────Rz(1.39π)─────Rz(1.65π)─────Rz(0.16π)─────Rz(1.1π)──────Rz(-0.912π)───\n",
329
            "\n",
330
            "(6, 5): ───Rz(0.376π)────Rz(1.86π)─────Rz(1.61π)─────Rz(-1.39π)────Rz(-1.63π)────Rz(-0.138π)───Rz(-1.79π)────Rz(-1.99π)────Rz(0.373π)────Rz(1.86π)─────Rz(-1.19π)────Rz(1.41π)─────Rz(-1.63π)────Rz(-0.136π)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
331
            "\n",
332
            "(7, 2): ───Rz(-1.42π)────Rz(1.28π)─────Rz(0.999π)────Rz(1.65π)─────Rz(0.513π)────Rz(-0.655π)───Rz(-1.07π)────Rz(-0.289π)───Rz(-1.55π)────Rz(1.41π)─────Rz(0.871π)────Rz(1.77π)─────Rz(0.377π)────Rz(-0.519π)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
333
            "\n",
334
            "(7, 3): ───Rz(1.51π)─────Rz(-1.19π)────Rz(1.43π)─────Rz(-1.87π)────Rz(-1.68π)────Rz(1.78π)─────Rz(-0.422π)───Rz(0.746π)────Rz(0.386π)────Rz(-0.826π)───Rz(1.44π)─────Rz(-1.34π)────Rz(1.65π)─────Rz(-1.32π)────Rz(-0.654π)───Rz(0.214π)────Rz(0.557π)────Rz(-0.462π)───Rz(-0.286π)───Rz(0.61π)─────Rz(-1.69π)────Rz(1.25π)─────────────────────────────────────────────────────────────────────────────────────────\n",
335
            "\n",
336
            "(7, 4): ───Rz(-1.53π)────Rz(1.76π)─────Rz(-0.765π)───Rz(-0.193π)───Rz(-0.487π)───Rz(0.725π)────Rz(0.949π)────Rz(-1.91π)────Rz(0.553π)────Rz(-0.315π)───Rz(-1.34π)────Rz(0.378π)────Rz(1.59π)─────Rz(-1.36π)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n"
337
          ]
338
        }
339
      ],
340
      "source": [
341
        "circuit = cirq.Circuit(\n",
342
        "    [\n",
343
        "    cirq.rz(rads=-2.079870303178702*np.pi).on(q[1]),\n",
344
        "    cirq.rz(rads=2.0436918407499873*np.pi).on(q[2]),\n",
345
        "    cirq.rz(rads=1.2371391697444234*np.pi).on(q[3]),\n",
346
        "    cirq.rz(rads=-1.2825274365288457*np.pi).on(q[4]),\n",
347
        "    cirq.rz(rads=-0.6529975013575373*np.pi).on(q[5]),\n",
348
        "    cirq.rz(rads=0.21248377848559125*np.pi).on(q[6]),\n",
349
        "    cirq.rz(rads=0.2767373377033284*np.pi).on(q[8]),\n",
350
        "    cirq.rz(rads=-0.18492941569567625*np.pi).on(q[9]),\n",
351
        "    cirq.rz(rads=0.02232591119805812*np.pi).on(q[10]),\n",
352
        "    cirq.rz(rads=-0.030028573876142287*np.pi).on(q[11]),\n",
353
        "    cirq.rz(rads=-0.8467509808142173*np.pi).on(q[12]),\n",
354
        "    cirq.rz(rads=0.8164932597686655*np.pi).on(q[13]),\n",
355
        "    cirq.rz(rads=-1.00125113388313*np.pi).on(q[14]),\n",
356
        "    cirq.rz(rads=1.1224546746752684*np.pi).on(q[15]),\n",
357
        "    cirq.rz(rads=-0.16310561378711827*np.pi).on(q[16]),\n",
358
        "    cirq.rz(rads=0.1766183348870303*np.pi).on(q[17]),\n",
359
        "    cirq.rz(rads=-0.22542387771877406*np.pi).on(q[19]),\n",
360
        "    cirq.rz(rads=0.2814659583608806*np.pi).on(q[20]),\n",
361
        "    cirq.rz(rads=-0.33113463396189063*np.pi).on(q[21]),\n",
362
        "    cirq.rz(rads=0.40440704518468423*np.pi).on(q[22]),\n",
363
        "    cirq.rz(rads=-0.4081262439699967*np.pi).on(q[25]),\n",
364
        "    cirq.rz(rads=0.3666829187201306*np.pi).on(q[26]),\n",
365
        "    cirq.rz(rads=-0.3507308388473503*np.pi).on(q[27]),\n",
366
        "    cirq.rz(rads=0.37554649493270875*np.pi).on(q[28]),\n",
367
        "    cirq.rz(rads=-1.4187954353764791*np.pi).on(q[29]),\n",
368
        "    cirq.rz(rads=1.5102819373895253*np.pi).on(q[30]),\n",
369
        "    cirq.rz(rads=1.3803105504474993*np.pi).on(q[1]),\n",
370
        "    cirq.rz(rads=-1.4164890128762133*np.pi).on(q[2]),\n",
371
        "    cirq.rz(rads=-0.7660705551087533*np.pi).on(q[3]),\n",
372
        "    cirq.rz(rads=0.7206822883243308*np.pi).on(q[4]),\n",
373
        "    cirq.rz(rads=1.3183560383893944*np.pi).on(q[5]),\n",
374
        "    cirq.rz(rads=-1.7588697612613406*np.pi).on(q[6]),\n",
375
        "    cirq.rz(rads=-0.6722145774944012*np.pi).on(q[8]),\n",
376
        "    cirq.rz(rads=0.7640224995020534*np.pi).on(q[9]),\n",
377
        "    cirq.rz(rads=0.5799079899133832*np.pi).on(q[10]),\n",
378
        "    cirq.rz(rads=-0.5876106525914674*np.pi).on(q[11]),\n",
379
        "    cirq.rz(rads=1.0843371101222938*np.pi).on(q[12]),\n",
380
        "    cirq.rz(rads=-1.1145948311678457*np.pi).on(q[13]),\n",
381
        "    cirq.rz(rads=0.7990757781248072*np.pi).on(q[14]),\n",
382
        "    cirq.rz(rads=-0.6778722373326689*np.pi).on(q[15]),\n",
383
        "    cirq.rz(rads=-1.6258237067659351*np.pi).on(q[16]),\n",
384
        "    cirq.rz(rads=1.6393364278658469*np.pi).on(q[17]),\n",
385
        "    cirq.rz(rads=0.7948295009385445*np.pi).on(q[19]),\n",
386
        "    cirq.rz(rads=-0.7387874202964381*np.pi).on(q[20]),\n",
387
        "    cirq.rz(rads=0.049341949396894985*np.pi).on(q[21]),\n",
388
        "    cirq.rz(rads=0.02393046182589869*np.pi).on(q[22]),\n",
389
        "    cirq.rz(rads=0.4710627118441926*np.pi).on(q[25]),\n",
390
        "    cirq.rz(rads=-0.5125060370940587*np.pi).on(q[26]),\n",
391
        "    cirq.rz(rads=2.1645856475342256*np.pi).on(q[27]),\n",
392
        "    cirq.rz(rads=-2.1397699914488673*np.pi).on(q[28]),\n",
393
        "    cirq.rz(rads=1.2773117920270392*np.pi).on(q[29]),\n",
394
        "    cirq.rz(rads=-1.1858252900139932*np.pi).on(q[30]),\n",
395
        "    cirq.rz(rads=-5.435868884042397*np.pi).on(q[0]),\n",
396
        "    cirq.rz(rads=5.438497289344933*np.pi).on(q[1]),\n",
397
        "    cirq.rz(rads=-5.19048555249959*np.pi).on(q[4]),\n",
398
        "    cirq.rz(rads=5.170988862096221*np.pi).on(q[5]),\n",
399
        "    cirq.rz(rads=2.5333591271878086*np.pi).on(q[7]),\n",
400
        "    cirq.rz(rads=-2.4748096263683066*np.pi).on(q[8]),\n",
401
        "    cirq.rz(rads=-4.480708067260001*np.pi).on(q[9]),\n",
402
        "    cirq.rz(rads=4.525888267898699*np.pi).on(q[10]),\n",
403
        "    cirq.rz(rads=2.135954522972214*np.pi).on(q[13]),\n",
404
        "    cirq.rz(rads=-2.1822665205802965*np.pi).on(q[14]),\n",
405
        "    cirq.rz(rads=-3.7780476633662574*np.pi).on(q[15]),\n",
406
        "    cirq.rz(rads=3.817335880513747*np.pi).on(q[16]),\n",
407
        "    cirq.rz(rads=-2.8819419896554686*np.pi).on(q[18]),\n",
408
        "    cirq.rz(rads=2.9028256034569604*np.pi).on(q[19]),\n",
409
        "    cirq.rz(rads=0.7811374803446167*np.pi).on(q[20]),\n",
410
        "    cirq.rz(rads=-0.6780279413275597*np.pi).on(q[21]),\n",
411
        "    cirq.rz(rads=1.863573798571082*np.pi).on(q[22]),\n",
412
        "    cirq.rz(rads=-2.150412392135508*np.pi).on(q[23]),\n",
413
        "    cirq.rz(rads=2.2532274955007456*np.pi).on(q[24]),\n",
414
        "    cirq.rz(rads=-2.5360843333016145*np.pi).on(q[25]),\n",
415
        "    cirq.rz(rads=2.3134893226730737*np.pi).on(q[26]),\n",
416
        "    cirq.rz(rads=-2.238493420699622*np.pi).on(q[27]),\n",
417
        "    cirq.rz(rads=1.42630741834175*np.pi).on(q[30]),\n",
418
        "    cirq.rz(rads=-1.5270341780432073*np.pi).on(q[31]),\n",
419
        "    cirq.rz(rads=5.79385605258612*np.pi).on(q[0]),\n",
420
        "    cirq.rz(rads=-5.791227647283584*np.pi).on(q[1]),\n",
421
        "    cirq.rz(rads=5.223139057027918*np.pi).on(q[4]),\n",
422
        "    cirq.rz(rads=-5.242635747431287*np.pi).on(q[5]),\n",
423
        "    cirq.rz(rads=-2.346072351850546*np.pi).on(q[7]),\n",
424
        "    cirq.rz(rads=2.404621852670048*np.pi).on(q[8]),\n",
425
        "    cirq.rz(rads=5.048199817882042*np.pi).on(q[9]),\n",
426
        "    cirq.rz(rads=-5.0030196172433445*np.pi).on(q[10]),\n",
427
        "    cirq.rz(rads=-2.6543362735839113*np.pi).on(q[13]),\n",
428
        "    cirq.rz(rads=2.6080242759758283*np.pi).on(q[14]),\n",
429
        "    cirq.rz(rads=3.9045088495271663*np.pi).on(q[15]),\n",
430
        "    cirq.rz(rads=-3.8652206323796765*np.pi).on(q[16]),\n",
431
        "    cirq.rz(rads=1.9770644223044243*np.pi).on(q[18]),\n",
432
        "    cirq.rz(rads=-1.9561808085029322*np.pi).on(q[19]),\n",
433
        "    cirq.rz(rads=-1.5516585295358842*np.pi).on(q[20]),\n",
434
        "    cirq.rz(rads=1.6547680685529413*np.pi).on(q[21]),\n",
435
        "    cirq.rz(rads=-1.8933072151541963*np.pi).on(q[22]),\n",
436
        "    cirq.rz(rads=1.6064686215897703*np.pi).on(q[23]),\n",
437
        "    cirq.rz(rads=-0.5449135022758093*np.pi).on(q[24]),\n",
438
        "    cirq.rz(rads=0.2620566644749405*np.pi).on(q[25]),\n",
439
        "    cirq.rz(rads=-2.3490397609251703*np.pi).on(q[26]),\n",
440
        "    cirq.rz(rads=2.424035662898622*np.pi).on(q[27]),\n",
441
        "    cirq.rz(rads=-1.8655832225378013*np.pi).on(q[30]),\n",
442
        "    cirq.rz(rads=1.7648564628363437*np.pi).on(q[31]),\n",
443
        "    cirq.rz(rads=-6.214223110662173*np.pi).on(q[3]),\n",
444
        "    cirq.rz(rads=6.24431588336413*np.pi).on(q[8]),\n",
445
        "    cirq.rz(rads=-6.196295096608877*np.pi).on(q[4]),\n",
446
        "    cirq.rz(rads=6.191833422443152*np.pi).on(q[9]),\n",
447
        "    cirq.rz(rads=-5.367868774756692*np.pi).on(q[5]),\n",
448
        "    cirq.rz(rads=5.257156584109544*np.pi).on(q[10]),\n",
449
        "    cirq.rz(rads=-1.6118072404137829*np.pi).on(q[6]),\n",
450
        "    cirq.rz(rads=1.5665192386902935*np.pi).on(q[11]),\n",
451
        "    cirq.rz(rads=-5.408932498710608*np.pi).on(q[12]),\n",
452
        "    cirq.rz(rads=5.396221422935972*np.pi).on(q[19]),\n",
453
        "    cirq.rz(rads=-3.2786928385561493*np.pi).on(q[13]),\n",
454
        "    cirq.rz(rads=3.339006443218924*np.pi).on(q[20]),\n",
455
        "    cirq.rz(rads=-5.390755870544794*np.pi).on(q[14]),\n",
456
        "    cirq.rz(rads=5.4172568990486605*np.pi).on(q[21]),\n",
457
        "    cirq.rz(rads=-5.620144773112766*np.pi).on(q[15]),\n",
458
        "    cirq.rz(rads=5.630469153514815*np.pi).on(q[22]),\n",
459
        "    cirq.rz(rads=4.367652291347506*np.pi).on(q[16]),\n",
460
        "    cirq.rz(rads=-3.9105776028384707*np.pi).on(q[23]),\n",
461
        "    cirq.rz(rads=7.0181466269225865*np.pi).on(q[25]),\n",
462
        "    cirq.rz(rads=-7.000766026200176*np.pi).on(q[29]),\n",
463
        "    cirq.rz(rads=5.700873278515409*np.pi).on(q[26]),\n",
464
        "    cirq.rz(rads=-5.683378195921049*np.pi).on(q[30]),\n",
465
        "    cirq.rz(rads=4.586335789661189*np.pi).on(q[27]),\n",
466
        "    cirq.rz(rads=-4.76537552715921*np.pi).on(q[31]),\n",
467
        "    cirq.rz(rads=6.89944406229822*np.pi).on(q[3]),\n",
468
        "    cirq.rz(rads=-6.869351289596263*np.pi).on(q[8]),\n",
469
        "    cirq.rz(rads=6.506615138479995*np.pi).on(q[4]),\n",
470
        "    cirq.rz(rads=-6.511076812645719*np.pi).on(q[9]),\n",
471
        "    cirq.rz(rads=6.150506057270183*np.pi).on(q[5]),\n",
472
        "    cirq.rz(rads=-6.2612182479173315*np.pi).on(q[10]),\n",
473
        "    cirq.rz(rads=2.4087294851133443*np.pi).on(q[6]),\n",
474
        "    cirq.rz(rads=-2.4540174868368334*np.pi).on(q[11]),\n",
475
        "    cirq.rz(rads=4.737705877923889*np.pi).on(q[12]),\n",
476
        "    cirq.rz(rads=-4.750416953698525*np.pi).on(q[19]),\n",
477
        "    cirq.rz(rads=2.9425087256630427*np.pi).on(q[13]),\n",
478
        "    cirq.rz(rads=-2.882195121000268*np.pi).on(q[20]),\n",
479
        "    cirq.rz(rads=4.466531408750767*np.pi).on(q[14]),\n",
480
        "    cirq.rz(rads=-4.440030380246901*np.pi).on(q[21]),\n",
481
        "    cirq.rz(rads=4.486471496440378*np.pi).on(q[15]),\n",
482
        "    cirq.rz(rads=-4.476147116038329*np.pi).on(q[22]),\n",
483
        "    cirq.rz(rads=-4.89701654221443*np.pi).on(q[16]),\n",
484
        "    cirq.rz(rads=5.354091230723465*np.pi).on(q[23]),\n",
485
        "    cirq.rz(rads=-5.629287261948809*np.pi).on(q[25]),\n",
486
        "    cirq.rz(rads=5.646667862671219*np.pi).on(q[29]),\n",
487
        "    cirq.rz(rads=-5.760627714067928*np.pi).on(q[26]),\n",
488
        "    cirq.rz(rads=5.778122796662288*np.pi).on(q[30]),\n",
489
        "    cirq.rz(rads=-3.985782702743221*np.pi).on(q[27]),\n",
490
        "    cirq.rz(rads=3.806742965245199*np.pi).on(q[31]),\n",
491
        "    cirq.rz(rads=-2.4865845873665364*np.pi).on(q[0]),\n",
492
        "    cirq.rz(rads=2.4890814068883764*np.pi).on(q[4]),\n",
493
        "    cirq.rz(rads=-2.4240781150731663*np.pi).on(q[1]),\n",
494
        "    cirq.rz(rads=2.419398026235366*np.pi).on(q[5]),\n",
495
        "    cirq.rz(rads=2.3861256785493166*np.pi).on(q[2]),\n",
496
        "    cirq.rz(rads=-2.392456163642626*np.pi).on(q[6]),\n",
497
        "    cirq.rz(rads=12.703597923836748*np.pi).on(q[7]),\n",
498
        "    cirq.rz(rads=-12.7869629079138*np.pi).on(q[13]),\n",
499
        "    cirq.rz(rads=12.184253063938954*np.pi).on(q[8]),\n",
500
        "    cirq.rz(rads=-12.108584830758572*np.pi).on(q[14]),\n",
501
        "    cirq.rz(rads=3.782562501914174*np.pi).on(q[9]),\n",
502
        "    cirq.rz(rads=-3.873596611893716*np.pi).on(q[15]),\n",
503
        "    cirq.rz(rads=4.772639843256901*np.pi).on(q[10]),\n",
504
        "    cirq.rz(rads=-4.771314675186062*np.pi).on(q[16]),\n",
505
        "    cirq.rz(rads=8.49593730829863*np.pi).on(q[11]),\n",
506
        "    cirq.rz(rads=-8.479908941862229*np.pi).on(q[17]),\n",
507
        "    cirq.rz(rads=1.639481743922408*np.pi).on(q[18]),\n",
508
        "    cirq.rz(rads=-1.9319083897827265*np.pi).on(q[24]),\n",
509
        "    cirq.rz(rads=9.60223181672896*np.pi).on(q[19]),\n",
510
        "    cirq.rz(rads=-9.605639326034064*np.pi).on(q[25]),\n",
511
        "    cirq.rz(rads=6.330499004273446*np.pi).on(q[20]),\n",
512
        "    cirq.rz(rads=-6.2177071019033425*np.pi).on(q[26]),\n",
513
        "    cirq.rz(rads=9.851852381617888*np.pi).on(q[21]),\n",
514
        "    cirq.rz(rads=-9.926465199012979*np.pi).on(q[27]),\n",
515
        "    cirq.rz(rads=6.431104618355057*np.pi).on(q[22]),\n",
516
        "    cirq.rz(rads=-6.38660616379351*np.pi).on(q[28]),\n",
517
        "    cirq.rz(rads=2.557874433792943*np.pi).on(q[0]),\n",
518
        "    cirq.rz(rads=-2.555377614271102*np.pi).on(q[4]),\n",
519
        "    cirq.rz(rads=1.9789952328325573*np.pi).on(q[1]),\n",
520
        "    cirq.rz(rads=-1.9836753216703575*np.pi).on(q[5]),\n",
521
        "    cirq.rz(rads=-2.805807436079691*np.pi).on(q[2]),\n",
522
        "    cirq.rz(rads=2.7994769509863815*np.pi).on(q[6]),\n",
523
        "    cirq.rz(rads=-12.477250219528523*np.pi).on(q[7]),\n",
524
        "    cirq.rz(rads=12.39388523545147*np.pi).on(q[13]),\n",
525
        "    cirq.rz(rads=-11.31088974563283*np.pi).on(q[8]),\n",
526
        "    cirq.rz(rads=11.386557978813212*np.pi).on(q[14]),\n",
527
        "    cirq.rz(rads=-5.4898636407973544*np.pi).on(q[9]),\n",
528
        "    cirq.rz(rads=5.398829530817813*np.pi).on(q[15]),\n",
529
        "    cirq.rz(rads=-5.863871460773714*np.pi).on(q[10]),\n",
530
        "    cirq.rz(rads=5.8651966288445525*np.pi).on(q[16]),\n",
531
        "    cirq.rz(rads=-8.850693052252502*np.pi).on(q[11]),\n",
532
        "    cirq.rz(rads=8.866721418688904*np.pi).on(q[17]),\n",
533
        "    cirq.rz(rads=-2.40381552479658*np.pi).on(q[18]),\n",
534
        "    cirq.rz(rads=2.1113888789362614*np.pi).on(q[24]),\n",
535
        "    cirq.rz(rads=-10.03456101076628*np.pi).on(q[19]),\n",
536
        "    cirq.rz(rads=10.031153501461176*np.pi).on(q[25]),\n",
537
        "    cirq.rz(rads=-5.434421382024706*np.pi).on(q[20]),\n",
538
        "    cirq.rz(rads=5.54721328439481*np.pi).on(q[26]),\n",
539
        "    cirq.rz(rads=-9.17988634353845*np.pi).on(q[21]),\n",
540
        "    cirq.rz(rads=9.10527352614336*np.pi).on(q[27]),\n",
541
        "    cirq.rz(rads=-6.5670035038476025*np.pi).on(q[22]),\n",
542
        "    cirq.rz(rads=6.61150195840915*np.pi).on(q[28]),\n",
543
        "    cirq.rz(rads=-13.031870303178678*np.pi).on(q[1]),\n",
544
        "    cirq.rz(rads=12.995691840749963*np.pi).on(q[2]),\n",
545
        "    cirq.rz(rads=5.381139169744492*np.pi).on(q[3]),\n",
546
        "    cirq.rz(rads=-5.426527436528915*np.pi).on(q[4]),\n",
547
        "    cirq.rz(rads=-6.86899750135751*np.pi).on(q[5]),\n",
548
        "    cirq.rz(rads=6.428483778485565*np.pi).on(q[6]),\n",
549
        "    cirq.rz(rads=5.16073733770325*np.pi).on(q[8]),\n",
550
        "    cirq.rz(rads=-5.068929415695599*np.pi).on(q[9]),\n",
551
        "    cirq.rz(rads=-0.7176740888019262*np.pi).on(q[10]),\n",
552
        "    cirq.rz(rads=0.7099714261238419*np.pi).on(q[11]),\n",
553
        "    cirq.rz(rads=-4.694750980814187*np.pi).on(q[12]),\n",
554
        "    cirq.rz(rads=4.664493259768636*np.pi).on(q[13]),\n",
555
        "    cirq.rz(rads=-4.701251133883051*np.pi).on(q[14]),\n",
556
        "    cirq.rz(rads=4.82245467467519*np.pi).on(q[15]),\n",
557
        "    cirq.rz(rads=3.5368943862129347*np.pi).on(q[16]),\n",
558
        "    cirq.rz(rads=-3.523381665113022*np.pi).on(q[17]),\n",
559
        "    cirq.rz(rads=-1.113423877718808*np.pi).on(q[19]),\n",
560
        "    cirq.rz(rads=1.1694659583609144*np.pi).on(q[20]),\n",
561
        "    cirq.rz(rads=-3.587134633961795*np.pi).on(q[21]),\n",
562
        "    cirq.rz(rads=3.6604070451845887*np.pi).on(q[22]),\n",
563
        "    cirq.rz(rads=-5.2921262439699195*np.pi).on(q[25]),\n",
564
        "    cirq.rz(rads=5.250682918720053*np.pi).on(q[26]),\n",
565
        "    cirq.rz(rads=-6.349327548997941*np.pi).on(q[27]),\n",
566
        "    cirq.rz(rads=6.3741432050833*np.pi).on(q[28]),\n",
567
        "    cirq.rz(rads=-7.486795435376533*np.pi).on(q[29]),\n",
568
        "    cirq.rz(rads=7.578281937389579*np.pi).on(q[30]),\n",
569
        "    cirq.rz(rads=12.332310550447476*np.pi).on(q[1]),\n",
570
        "    cirq.rz(rads=-12.36848901287619*np.pi).on(q[2]),\n",
571
        "    cirq.rz(rads=-4.910070555108823*np.pi).on(q[3]),\n",
572
        "    cirq.rz(rads=4.864682288324399*np.pi).on(q[4]),\n",
573
        "    cirq.rz(rads=7.534356038389369*np.pi).on(q[5]),\n",
574
        "    cirq.rz(rads=-7.974869761261314*np.pi).on(q[6]),\n",
575
        "    cirq.rz(rads=-5.556214577494324*np.pi).on(q[8]),\n",
576
        "    cirq.rz(rads=5.648022499501975*np.pi).on(q[9]),\n",
577
        "    cirq.rz(rads=1.3199079899133674*np.pi).on(q[10]),\n",
578
        "    cirq.rz(rads=-1.3276106525914517*np.pi).on(q[11]),\n",
579
        "    cirq.rz(rads=4.932337110122265*np.pi).on(q[12]),\n",
580
        "    cirq.rz(rads=-4.9625948311678165*np.pi).on(q[13]),\n",
581
        "    cirq.rz(rads=4.499075778124728*np.pi).on(q[14]),\n",
582
        "    cirq.rz(rads=-4.37787223733259*np.pi).on(q[15]),\n",
583
        "    cirq.rz(rads=-5.325823706765988*np.pi).on(q[16]),\n",
584
        "    cirq.rz(rads=5.3393364278658995*np.pi).on(q[17]),\n",
585
        "    cirq.rz(rads=1.682829500938578*np.pi).on(q[19]),\n",
586
        "    cirq.rz(rads=-1.6267874202964716*np.pi).on(q[20]),\n",
587
        "    cirq.rz(rads=3.305341949396799*np.pi).on(q[21]),\n",
588
        "    cirq.rz(rads=-3.232069538174005*np.pi).on(q[22]),\n",
589
        "    cirq.rz(rads=5.3550627118441145*np.pi).on(q[25]),\n",
590
        "    cirq.rz(rads=-5.39650603709398*np.pi).on(q[26]),\n",
591
        "    cirq.rz(rads=8.163182357684818*np.pi).on(q[27]),\n",
592
        "    cirq.rz(rads=-8.138366701599459*np.pi).on(q[28]),\n",
593
        "    cirq.rz(rads=7.345311792027093*np.pi).on(q[29]),\n",
594
        "    cirq.rz(rads=-7.253825290014047*np.pi).on(q[30]),\n",
595
        "    cirq.rz(rads=-17.867868884042345*np.pi).on(q[0]),\n",
596
        "    cirq.rz(rads=17.87049728934488*np.pi).on(q[1]),\n",
597
        "    cirq.rz(rads=-17.622485552499665*np.pi).on(q[4]),\n",
598
        "    cirq.rz(rads=17.602988862096296*np.pi).on(q[5]),\n",
599
        "    cirq.rz(rads=7.565359127187911*np.pi).on(q[7]),\n",
600
        "    cirq.rz(rads=-7.506809626368408*np.pi).on(q[8]),\n",
601
        "    cirq.rz(rads=-15.28470806725993*np.pi).on(q[9]),\n",
602
        "    cirq.rz(rads=15.329888267898626*np.pi).on(q[10]),\n",
603
        "    cirq.rz(rads=7.019954522972137*np.pi).on(q[13]),\n",
604
        "    cirq.rz(rads=-7.066266520580219*np.pi).on(q[14]),\n",
605
        "    cirq.rz(rads=-13.842047663366333*np.pi).on(q[15]),\n",
606
        "    cirq.rz(rads=13.881335880513822*np.pi).on(q[16]),\n",
607
        "    cirq.rz(rads=-7.765941989655391*np.pi).on(q[18]),\n",
608
        "    cirq.rz(rads=7.786825603456883*np.pi).on(q[19]),\n",
609
        "    cirq.rz(rads=3.001137480344569*np.pi).on(q[20]),\n",
610
        "    cirq.rz(rads=-2.8980279413275123*np.pi).on(q[21]),\n",
611
        "    cirq.rz(rads=5.563573798571002*np.pi).on(q[22]),\n",
612
        "    cirq.rz(rads=-5.8504123921354285*np.pi).on(q[23]),\n",
613
        "    cirq.rz(rads=5.509227495500649*np.pi).on(q[24]),\n",
614
        "    cirq.rz(rads=-5.792084333301517*np.pi).on(q[25]),\n",
615
        "    cirq.rz(rads=7.868086032823645*np.pi).on(q[26]),\n",
616
        "    cirq.rz(rads=-7.793090130850194*np.pi).on(q[27]),\n",
617
        "    cirq.rz(rads=4.3863074183418185*np.pi).on(q[30]),\n",
618
        "    cirq.rz(rads=-4.487034178043276*np.pi).on(q[31]),\n",
619
        "    cirq.rz(rads=18.225856052586064*np.pi).on(q[0]),\n",
620
        "    cirq.rz(rads=-18.223227647283533*np.pi).on(q[1]),\n",
621
        "    cirq.rz(rads=17.655139057028*np.pi).on(q[4]),\n",
622
        "    cirq.rz(rads=-17.674635747431363*np.pi).on(q[5]),\n",
623
        "    cirq.rz(rads=-7.378072351850649*np.pi).on(q[7]),\n",
624
        "    cirq.rz(rads=7.436621852670151*np.pi).on(q[8]),\n",
625
        "    cirq.rz(rads=15.852199817881967*np.pi).on(q[9]),\n",
626
        "    cirq.rz(rads=-15.80701961724327*np.pi).on(q[10]),\n",
627
        "    cirq.rz(rads=-7.538336273583833*np.pi).on(q[13]),\n",
628
        "    cirq.rz(rads=7.492024275975751*np.pi).on(q[14]),\n",
629
        "    cirq.rz(rads=13.968508849527241*np.pi).on(q[15]),\n",
630
        "    cirq.rz(rads=-13.929220632379753*np.pi).on(q[16]),\n",
631
        "    cirq.rz(rads=6.861064422304347*np.pi).on(q[18]),\n",
632
        "    cirq.rz(rads=-6.840180808502855*np.pi).on(q[19]),\n",
633
        "    cirq.rz(rads=-3.771658529535837*np.pi).on(q[20]),\n",
634
        "    cirq.rz(rads=3.874768068552894*np.pi).on(q[21]),\n",
635
        "    cirq.rz(rads=-5.593307215154117*np.pi).on(q[22]),\n",
636
        "    cirq.rz(rads=5.30646862158969*np.pi).on(q[23]),\n",
637
        "    cirq.rz(rads=-3.800913502275713*np.pi).on(q[24]),\n",
638
        "    cirq.rz(rads=3.5180566644748446*np.pi).on(q[25]),\n",
639
        "    cirq.rz(rads=-7.9036364710757425*np.pi).on(q[26]),\n",
640
        "    cirq.rz(rads=7.978632373049194*np.pi).on(q[27]),\n",
641
        "    cirq.rz(rads=-4.825583222537869*np.pi).on(q[30]),\n",
642
        "    cirq.rz(rads=4.724856462836412*np.pi).on(q[31]),\n",
643
        "    cirq.rz(rads=-16.574223110662086*np.pi).on(q[3]),\n",
644
        "    cirq.rz(rads=16.60431588336404*np.pi).on(q[8]),\n",
645
        "    cirq.rz(rads=-15.816295096608934*np.pi).on(q[4]),\n",
646
        "    cirq.rz(rads=15.811833422443211*np.pi).on(q[9]),\n",
647
        "    cirq.rz(rads=-13.3598687747566*np.pi).on(q[5]),\n",
648
        "    cirq.rz(rads=13.249156584109453*np.pi).on(q[10]),\n",
649
        "    cirq.rz(rads=-4.127807240413703*np.pi).on(q[6]),\n",
650
        "    cirq.rz(rads=4.082519238690215*np.pi).on(q[11]),\n",
651
        "    cirq.rz(rads=-13.252932498710596*np.pi).on(q[12]),\n",
652
        "    cirq.rz(rads=13.24022142293596*np.pi).on(q[19]),\n",
653
        "    cirq.rz(rads=-8.162692838556204*np.pi).on(q[13]),\n",
654
        "    cirq.rz(rads=8.223006443218978*np.pi).on(q[20]),\n",
655
        "    cirq.rz(rads=-12.938755870544817*np.pi).on(q[14]),\n",
656
        "    cirq.rz(rads=12.965256899048683*np.pi).on(q[21]),\n",
657
        "    cirq.rz(rads=-12.724144773112773*np.pi).on(q[15]),\n",
658
        "    cirq.rz(rads=12.73446915351482*np.pi).on(q[22]),\n",
659
        "    cirq.rz(rads=11.027652291347495*np.pi).on(q[16]),\n",
660
        "    cirq.rz(rads=-10.570577602838458*np.pi).on(q[23]),\n",
661
        "    cirq.rz(rads=17.082146626922658*np.pi).on(q[25]),\n",
662
        "    cirq.rz(rads=-17.06476602620025*np.pi).on(q[29]),\n",
663
        "    cirq.rz(rads=14.58087327851535*np.pi).on(q[26]),\n",
664
        "    cirq.rz(rads=-14.563378195920992*np.pi).on(q[30]),\n",
665
        "    cirq.rz(rads=10.871739079510629*np.pi).on(q[27]),\n",
666
        "    cirq.rz(rads=-11.050778817008649*np.pi).on(q[31]),\n",
667
        "    cirq.rz(rads=-17.229351289596174*np.pi).on(q[8]),\n",
668
        "    cirq.rz(rads=16.126615138480055*np.pi).on(q[4]),\n",
669
        "    cirq.rz(rads=-16.131076812645777*np.pi).on(q[9]),\n",
670
        "    cirq.rz(rads=14.142506057270092*np.pi).on(q[5]),\n",
671
        "    cirq.rz(rads=-14.253218247917241*np.pi).on(q[10]),\n",
672
        "    cirq.rz(rads=4.924729485113265*np.pi).on(q[6]),\n",
673
        "    cirq.rz(rads=-4.9700174868367535*np.pi).on(q[11]),\n",
674
        "    cirq.rz(rads=12.581705877923879*np.pi).on(q[12]),\n",
675
        "    cirq.rz(rads=-12.594416953698515*np.pi).on(q[19]),\n",
676
        "    cirq.rz(rads=7.826508725663096*np.pi).on(q[13]),\n",
677
        "    cirq.rz(rads=-7.7661951210003215*np.pi).on(q[20]),\n",
678
        "    cirq.rz(rads=12.014531408750791*np.pi).on(q[14]),\n",
679
        "    cirq.rz(rads=-11.988030380246926*np.pi).on(q[21]),\n",
680
        "    cirq.rz(rads=11.590471496440383*np.pi).on(q[15]),\n",
681
        "    cirq.rz(rads=-11.580147116038336*np.pi).on(q[22]),\n",
682
        "    cirq.rz(rads=-11.55701654221442*np.pi).on(q[16]),\n",
683
        "    cirq.rz(rads=12.014091230723457*np.pi).on(q[23]),\n",
684
        "    cirq.rz(rads=-15.693287261948884*np.pi).on(q[25]),\n",
685
        "    cirq.rz(rads=15.710667862671292*np.pi).on(q[29]),\n",
686
        "    cirq.rz(rads=-14.640627714067872*np.pi).on(q[26]),\n",
687
        "    cirq.rz(rads=14.658122796662232*np.pi).on(q[30]),\n",
688
        "    cirq.rz(rads=-10.271185992592658*np.pi).on(q[27]),\n",
689
        "    cirq.rz(rads=10.092146255094638*np.pi).on(q[31]),\n",
690
        "    cirq.rz(rads=-4.706584587366488*np.pi).on(q[0]),\n",
691
        "    cirq.rz(rads=4.709081406888329*np.pi).on(q[4]),\n",
692
        "    cirq.rz(rads=-4.644078115073251*np.pi).on(q[1]),\n",
693
        "    cirq.rz(rads=4.639398026235451*np.pi).on(q[5]),\n",
694
        "    cirq.rz(rads=4.902125678549236*np.pi).on(q[2]),\n",
695
        "    cirq.rz(rads=-4.908456163642546*np.pi).on(q[6]),\n",
696
        "    cirq.rz(rads=26.023597923836856*np.pi).on(q[7]),\n",
697
        "    cirq.rz(rads=-26.106962907913907*np.pi).on(q[13]),\n",
698
        "    cirq.rz(rads=25.356253063938887*np.pi).on(q[8]),\n",
699
        "    cirq.rz(rads=-25.2805848307585*np.pi).on(q[14]),\n",
700
        "    cirq.rz(rads=8.370562501914259*np.pi).on(q[9]),\n",
701
        "    cirq.rz(rads=-8.461596611893802*np.pi).on(q[15]),\n",
702
        "    cirq.rz(rads=10.100639843256841*np.pi).on(q[10]),\n",
703
        "    cirq.rz(rads=-10.099314675186001*np.pi).on(q[16]),\n",
704
        "    cirq.rz(rads=18.263937308298605*np.pi).on(q[11]),\n",
705
        "    cirq.rz(rads=-18.247908941862203*np.pi).on(q[17]),\n",
706
        "    cirq.rz(rads=4.303481743922509*np.pi).on(q[18]),\n",
707
        "    cirq.rz(rads=-4.595908389782827*np.pi).on(q[24]),\n",
708
        "    cirq.rz(rads=20.40623181672889*np.pi).on(q[19]),\n",
709
        "    cirq.rz(rads=-20.409639326033993*np.pi).on(q[25]),\n",
710
        "    cirq.rz(rads=13.138499004273484*np.pi).on(q[20]),\n",
711
        "    cirq.rz(rads=-13.02570710190338*np.pi).on(q[26]),\n",
712
        "    cirq.rz(rads=19.994449091768548*np.pi).on(q[21]),\n",
713
        "    cirq.rz(rads=-20.069061909163636*np.pi).on(q[27]),\n",
714
        "    cirq.rz(rads=13.831104618355031*np.pi).on(q[22]),\n",
715
        "    cirq.rz(rads=-13.786606163793484*np.pi).on(q[28]),\n",
716
        "    cirq.rz(rads=4.777874433792896*np.pi).on(q[0]),\n",
717
        "    cirq.rz(rads=-4.775377614271054*np.pi).on(q[4]),\n",
718
        "    cirq.rz(rads=4.198995232832642*np.pi).on(q[1]),\n",
719
        "    cirq.rz(rads=-4.203675321670441*np.pi).on(q[5]),\n",
720
        "    cirq.rz(rads=-5.321807436079611*np.pi).on(q[2]),\n",
721
        "    cirq.rz(rads=5.315476950986302*np.pi).on(q[6]),\n",
722
        "    cirq.rz(rads=-25.79725021952863*np.pi).on(q[7]),\n",
723
        "    cirq.rz(rads=25.713885235451578*np.pi).on(q[13]),\n",
724
        "    cirq.rz(rads=-24.48288974563276*np.pi).on(q[8]),\n",
725
        "    cirq.rz(rads=24.55855797881315*np.pi).on(q[14]),\n",
726
        "    cirq.rz(rads=-10.07786364079744*np.pi).on(q[9]),\n",
727
        "    cirq.rz(rads=9.986829530817898*np.pi).on(q[15]),\n",
728
        "    cirq.rz(rads=-11.191871460773655*np.pi).on(q[10]),\n",
729
        "    cirq.rz(rads=11.193196628844492*np.pi).on(q[16]),\n",
730
        "    cirq.rz(rads=-18.61869305225248*np.pi).on(q[11]),\n",
731
        "    cirq.rz(rads=18.63472141868888*np.pi).on(q[17]),\n",
732
        "    cirq.rz(rads=-5.067815524796681*np.pi).on(q[18]),\n",
733
        "    cirq.rz(rads=4.775388878936363*np.pi).on(q[24]),\n",
734
        "    cirq.rz(rads=-20.83856101076621*np.pi).on(q[19]),\n",
735
        "    cirq.rz(rads=20.835153501461107*np.pi).on(q[25]),\n",
736
        "    cirq.rz(rads=-12.242421382024746*np.pi).on(q[20]),\n",
737
        "    cirq.rz(rads=12.35521328439485*np.pi).on(q[26]),\n",
738
        "    cirq.rz(rads=-19.32248305368911*np.pi).on(q[21]),\n",
739
        "    cirq.rz(rads=19.24787023629402*np.pi).on(q[27]),\n",
740
        "    cirq.rz(rads=-13.967003503847575*np.pi).on(q[22]),\n",
741
        "    cirq.rz(rads=14.01150195840912*np.pi).on(q[28]),\n",
742
        "    cirq.rz(rads=-23.983870303178655*np.pi).on(q[1]),\n",
743
        "    cirq.rz(rads=23.947691840749943*np.pi).on(q[2]),\n",
744
        "    cirq.rz(rads=9.52513916974456*np.pi).on(q[3]),\n",
745
        "    cirq.rz(rads=-9.570527436528984*np.pi).on(q[4]),\n",
746
        "    cirq.rz(rads=-13.084997501357485*np.pi).on(q[5]),\n",
747
        "    cirq.rz(rads=12.644483778485537*np.pi).on(q[6]),\n",
748
        "    cirq.rz(rads=10.044737337703173*np.pi).on(q[8]),\n",
749
        "    cirq.rz(rads=-9.952929415695523*np.pi).on(q[9]),\n",
750
        "    cirq.rz(rads=-1.4576740888019104*np.pi).on(q[10]),\n",
751
        "    cirq.rz(rads=1.4499714261238263*np.pi).on(q[11]),\n",
752
        "    cirq.rz(rads=-8.542750980814159*np.pi).on(q[12]),\n",
753
        "    cirq.rz(rads=8.512493259768608*np.pi).on(q[13]),\n",
754
        "    cirq.rz(rads=-8.401251133882973*np.pi).on(q[14]),\n",
755
        "    cirq.rz(rads=8.52245467467511*np.pi).on(q[15]),\n",
756
        "    cirq.rz(rads=7.236894386212986*np.pi).on(q[16]),\n",
757
        "    cirq.rz(rads=-7.223381665113074*np.pi).on(q[17]),\n",
758
        "    cirq.rz(rads=-2.0014238777188416*np.pi).on(q[19]),\n",
759
        "    cirq.rz(rads=2.057465958360948*np.pi).on(q[20]),\n",
760
        "    cirq.rz(rads=-6.843134633961698*np.pi).on(q[21]),\n",
761
        "    cirq.rz(rads=6.916407045184491*np.pi).on(q[22]),\n",
762
        "    cirq.rz(rads=-10.176126243969842*np.pi).on(q[25]),\n",
763
        "    cirq.rz(rads=10.134682918719976*np.pi).on(q[26]),\n",
764
        "    cirq.rz(rads=-12.347924259148533*np.pi).on(q[27]),\n",
765
        "    cirq.rz(rads=12.372739915233888*np.pi).on(q[28]),\n",
766
        "    cirq.rz(rads=-13.554795435376587*np.pi).on(q[29]),\n",
767
        "    cirq.rz(rads=13.646281937389634*np.pi).on(q[30]),\n",
768
        "    cirq.rz(rads=23.28431055044745*np.pi).on(q[1]),\n",
769
        "    cirq.rz(rads=-23.320489012876163*np.pi).on(q[2]),\n",
770
        "    cirq.rz(rads=-9.054070555108892*np.pi).on(q[3]),\n",
771
        "    cirq.rz(rads=9.008682288324469*np.pi).on(q[4]),\n",
772
        "    cirq.rz(rads=13.750356038389338*np.pi).on(q[5]),\n",
773
        "    cirq.rz(rads=-14.190869761261286*np.pi).on(q[6]),\n",
774
        "    cirq.rz(rads=-10.440214577494247*np.pi).on(q[8]),\n",
775
        "    cirq.rz(rads=10.5320224995019*np.pi).on(q[9]),\n",
776
        "    cirq.rz(rads=2.0599079899133517*np.pi).on(q[10]),\n",
777
        "    cirq.rz(rads=-2.067610652591436*np.pi).on(q[11]),\n",
778
        "    cirq.rz(rads=8.780337110122234*np.pi).on(q[12]),\n",
779
        "    cirq.rz(rads=-8.810594831167785*np.pi).on(q[13]),\n",
780
        "    cirq.rz(rads=8.199075778124648*np.pi).on(q[14]),\n",
781
        "    cirq.rz(rads=-8.07787223733251*np.pi).on(q[15]),\n",
782
        "    cirq.rz(rads=-9.025823706766039*np.pi).on(q[16]),\n",
783
        "    cirq.rz(rads=9.039336427865951*np.pi).on(q[17]),\n",
784
        "    cirq.rz(rads=2.570829500938612*np.pi).on(q[19]),\n",
785
        "    cirq.rz(rads=-2.5147874202965053*np.pi).on(q[20]),\n",
786
        "    cirq.rz(rads=6.561341949396702*np.pi).on(q[21]),\n",
787
        "    cirq.rz(rads=-6.48806953817391*np.pi).on(q[22]),\n",
788
        "    cirq.rz(rads=10.239062711844038*np.pi).on(q[25]),\n",
789
        "    cirq.rz(rads=-10.280506037093904*np.pi).on(q[26]),\n",
790
        "    cirq.rz(rads=14.161779067835406*np.pi).on(q[27]),\n",
791
        "    cirq.rz(rads=-14.136963411750049*np.pi).on(q[28]),\n",
792
        "    cirq.rz(rads=13.413311792027148*np.pi).on(q[29]),\n",
793
        "    cirq.rz(rads=-13.3218252900141*np.pi).on(q[30]),\n",
794
        "    cirq.rz(rads=-30.29986888404229*np.pi).on(q[0]),\n",
795
        "    cirq.rz(rads=30.302497289344824*np.pi).on(q[1]),\n",
796
        "    cirq.rz(rads=-30.054485552499738*np.pi).on(q[4]),\n",
797
        "    cirq.rz(rads=30.034988862096366*np.pi).on(q[5]),\n",
798
        "    cirq.rz(rads=12.597359127188014*np.pi).on(q[7]),\n",
799
        "    cirq.rz(rads=-12.538809626368511*np.pi).on(q[8]),\n",
800
        "    cirq.rz(rads=-26.08870806725985*np.pi).on(q[9]),\n",
801
        "    cirq.rz(rads=26.13388826789855*np.pi).on(q[10]),\n",
802
        "    cirq.rz(rads=11.90395452297206*np.pi).on(q[13]),\n",
803
        "    cirq.rz(rads=-11.950266520580142*np.pi).on(q[14]),\n",
804
        "    cirq.rz(rads=-23.906047663366408*np.pi).on(q[15]),\n",
805
        "    cirq.rz(rads=23.945335880513902*np.pi).on(q[16]),\n",
806
        "    cirq.rz(rads=-12.64994198965531*np.pi).on(q[18]),\n",
807
        "    cirq.rz(rads=12.670825603456805*np.pi).on(q[19]),\n",
808
        "    cirq.rz(rads=5.221137480344522*np.pi).on(q[20]),\n",
809
        "    cirq.rz(rads=-5.118027941327464*np.pi).on(q[21]),\n",
810
        "    cirq.rz(rads=9.263573798570924*np.pi).on(q[22]),\n",
811
        "    cirq.rz(rads=-9.55041239213535*np.pi).on(q[23]),\n",
812
        "    cirq.rz(rads=8.765227495500554*np.pi).on(q[24]),\n",
813
        "    cirq.rz(rads=-9.048084333301423*np.pi).on(q[25]),\n",
814
        "    cirq.rz(rads=13.422682742974219*np.pi).on(q[26]),\n",
815
        "    cirq.rz(rads=-13.34768684100077*np.pi).on(q[27]),\n",
816
        "    cirq.rz(rads=7.346307418341885*np.pi).on(q[30]),\n",
817
        "    cirq.rz(rads=-7.447034178043343*np.pi).on(q[31]),\n",
818
        "    cirq.rz(rads=30.657856052586013*np.pi).on(q[0]),\n",
819
        "    cirq.rz(rads=-30.65522764728348*np.pi).on(q[1]),\n",
820
        "    cirq.rz(rads=30.087139057028068*np.pi).on(q[4]),\n",
821
        "    cirq.rz(rads=-30.106635747431437*np.pi).on(q[5]),\n",
822
        "    cirq.rz(rads=-12.410072351850753*np.pi).on(q[7]),\n",
823
        "    cirq.rz(rads=12.468621852670255*np.pi).on(q[8]),\n",
824
        "    cirq.rz(rads=26.656199817881895*np.pi).on(q[9]),\n",
825
        "    cirq.rz(rads=-26.611019617243198*np.pi).on(q[10]),\n",
826
        "    cirq.rz(rads=-12.422336273583753*np.pi).on(q[13]),\n",
827
        "    cirq.rz(rads=12.376024275975672*np.pi).on(q[14]),\n",
828
        "    cirq.rz(rads=24.032508849527318*np.pi).on(q[15]),\n",
829
        "    cirq.rz(rads=-23.993220632379824*np.pi).on(q[16]),\n",
830
        "    cirq.rz(rads=11.745064422304269*np.pi).on(q[18]),\n",
831
        "    cirq.rz(rads=-11.724180808502775*np.pi).on(q[19]),\n",
832
        "    cirq.rz(rads=-5.991658529535789*np.pi).on(q[20]),\n",
833
        "    cirq.rz(rads=6.094768068552847*np.pi).on(q[21]),\n",
834
        "    cirq.rz(rads=-9.293307215154037*np.pi).on(q[22]),\n",
835
        "    cirq.rz(rads=9.006468621589612*np.pi).on(q[23]),\n",
836
        "    cirq.rz(rads=-7.056913502275617*np.pi).on(q[24]),\n",
837
        "    cirq.rz(rads=6.774056664474749*np.pi).on(q[25]),\n",
838
        "    cirq.rz(rads=-13.45823318122632*np.pi).on(q[26]),\n",
839
        "    cirq.rz(rads=13.53322908319977*np.pi).on(q[27]),\n",
840
        "    cirq.rz(rads=-7.785583222537938*np.pi).on(q[30]),\n",
841
        "    cirq.rz(rads=7.68485646283648*np.pi).on(q[31]),\n",
842
        "    cirq.rz(rads=-26.934223110661993*np.pi).on(q[3]),\n",
843
        "    cirq.rz(rads=26.964315883363945*np.pi).on(q[8]),\n",
844
        "    cirq.rz(rads=-25.436295096608994*np.pi).on(q[4]),\n",
845
        "    cirq.rz(rads=25.43183342244327*np.pi).on(q[9]),\n",
846
        "    cirq.rz(rads=-21.351868774756507*np.pi).on(q[5]),\n",
847
        "    cirq.rz(rads=21.24115658410936*np.pi).on(q[10]),\n",
848
        "    cirq.rz(rads=-6.643807240413623*np.pi).on(q[6]),\n",
849
        "    cirq.rz(rads=6.598519238690134*np.pi).on(q[11]),\n",
850
        "    cirq.rz(rads=-21.096932498710586*np.pi).on(q[12]),\n",
851
        "    cirq.rz(rads=21.084221422935954*np.pi).on(q[19]),\n",
852
        "    cirq.rz(rads=-13.046692838556257*np.pi).on(q[13]),\n",
853
        "    cirq.rz(rads=13.107006443219033*np.pi).on(q[20]),\n",
854
        "    cirq.rz(rads=-20.486755870544844*np.pi).on(q[14]),\n",
855
        "    cirq.rz(rads=20.51325689904871*np.pi).on(q[21]),\n",
856
        "    cirq.rz(rads=-19.82814477311278*np.pi).on(q[15]),\n",
857
        "    cirq.rz(rads=19.838469153514826*np.pi).on(q[22]),\n",
858
        "    cirq.rz(rads=17.687652291347487*np.pi).on(q[16]),\n",
859
        "    cirq.rz(rads=-17.230577602838448*np.pi).on(q[23]),\n",
860
        "    cirq.rz(rads=27.146146626922736*np.pi).on(q[25]),\n",
861
        "    cirq.rz(rads=-27.128766026200324*np.pi).on(q[29]),\n",
862
        "    cirq.rz(rads=23.46087327851529*np.pi).on(q[26]),\n",
863
        "    cirq.rz(rads=-23.443378195920936*np.pi).on(q[30]),\n",
864
        "    cirq.rz(rads=17.157142369360066*np.pi).on(q[27]),\n",
865
        "    cirq.rz(rads=-17.33618210685809*np.pi).on(q[31]),\n",
866
        "    cirq.rz(rads=27.61944406229804*np.pi).on(q[3]),\n",
867
        "    cirq.rz(rads=-27.589351289596088*np.pi).on(q[8]),\n",
868
        "    cirq.rz(rads=25.746615138480117*np.pi).on(q[4]),\n",
869
        "    cirq.rz(rads=-25.75107681264584*np.pi).on(q[9]),\n",
870
        "    cirq.rz(rads=22.13450605727*np.pi).on(q[5]),\n",
871
        "    cirq.rz(rads=-22.245218247917148*np.pi).on(q[10]),\n",
872
        "    cirq.rz(rads=7.440729485113184*np.pi).on(q[6]),\n",
873
        "    cirq.rz(rads=-7.486017486836674*np.pi).on(q[11]),\n",
874
        "    cirq.rz(rads=20.425705877923868*np.pi).on(q[12]),\n",
875
        "    cirq.rz(rads=-20.4384169536985*np.pi).on(q[19]),\n",
876
        "    cirq.rz(rads=12.71050872566315*np.pi).on(q[13]),\n",
877
        "    cirq.rz(rads=-12.650195121000372*np.pi).on(q[20]),\n",
878
        "    cirq.rz(rads=19.562531408750814*np.pi).on(q[14]),\n",
879
        "    cirq.rz(rads=-19.53603038024695*np.pi).on(q[21]),\n",
880
        "    cirq.rz(rads=18.69447149644039*np.pi).on(q[15]),\n",
881
        "    cirq.rz(rads=-18.684147116038343*np.pi).on(q[22]),\n",
882
        "    cirq.rz(rads=-18.21701654221441*np.pi).on(q[16]),\n",
883
        "    cirq.rz(rads=18.674091230723448*np.pi).on(q[23]),\n",
884
        "    cirq.rz(rads=-25.757287261948953*np.pi).on(q[25]),\n",
885
        "    cirq.rz(rads=25.774667862671368*np.pi).on(q[29]),\n",
886
        "    cirq.rz(rads=-23.52062771406781*np.pi).on(q[26]),\n",
887
        "    cirq.rz(rads=23.538122796662165*np.pi).on(q[30]),\n",
888
        "    cirq.rz(rads=-16.556589282442097*np.pi).on(q[27]),\n",
889
        "    cirq.rz(rads=16.377549544944078*np.pi).on(q[31]),\n",
890
        "    cirq.rz(rads=-6.926584587366442*np.pi).on(q[0]),\n",
891
        "    cirq.rz(rads=6.929081406888282*np.pi).on(q[4]),\n",
892
        "    cirq.rz(rads=-6.864078115073335*np.pi).on(q[1]),\n",
893
        "    cirq.rz(rads=6.859398026235534*np.pi).on(q[5]),\n",
894
        "    cirq.rz(rads=7.418125678549155*np.pi).on(q[2]),\n",
895
        "    cirq.rz(rads=-7.424456163642465*np.pi).on(q[6]),\n",
896
        "    cirq.rz(rads=39.34359792383697*np.pi).on(q[7]),\n",
897
        "    cirq.rz(rads=-39.42696290791402*np.pi).on(q[13]),\n",
898
        "    cirq.rz(rads=38.52825306393881*np.pi).on(q[8]),\n",
899
        "    cirq.rz(rads=-38.452584830758425*np.pi).on(q[14]),\n",
900
        "    cirq.rz(rads=12.958562501914345*np.pi).on(q[9]),\n",
901
        "    cirq.rz(rads=-13.049596611893888*np.pi).on(q[15]),\n",
902
        "    cirq.rz(rads=15.428639843256777*np.pi).on(q[10]),\n",
903
        "    cirq.rz(rads=-15.42731467518594*np.pi).on(q[16]),\n",
904
        "    cirq.rz(rads=28.031937308298577*np.pi).on(q[11]),\n",
905
        "    cirq.rz(rads=-28.01590894186218*np.pi).on(q[17]),\n",
906
        "    cirq.rz(rads=6.967481743922609*np.pi).on(q[18]),\n",
907
        "    cirq.rz(rads=-7.259908389782927*np.pi).on(q[24]),\n",
908
        "    cirq.rz(rads=31.210231816728815*np.pi).on(q[19]),\n",
909
        "    cirq.rz(rads=-31.213639326033913*np.pi).on(q[25]),\n",
910
        "    cirq.rz(rads=19.946499004273523*np.pi).on(q[20]),\n",
911
        "    cirq.rz(rads=-19.833707101903418*np.pi).on(q[26]),\n",
912
        "    cirq.rz(rads=30.137045801919207*np.pi).on(q[21]),\n",
913
        "    cirq.rz(rads=-30.211658619314296*np.pi).on(q[27]),\n",
914
        "    cirq.rz(rads=21.231104618355*np.pi).on(q[22]),\n",
915
        "    cirq.rz(rads=-21.186606163793456*np.pi).on(q[28]),\n",
916
        "    cirq.rz(rads=6.997874433792849*np.pi).on(q[0]),\n",
917
        "    cirq.rz(rads=-6.995377614271008*np.pi).on(q[4]),\n",
918
        "    cirq.rz(rads=6.418995232832726*np.pi).on(q[1]),\n",
919
        "    cirq.rz(rads=-6.423675321670527*np.pi).on(q[5]),\n",
920
        "    cirq.rz(rads=-7.8378074360795305*np.pi).on(q[2]),\n",
921
        "    cirq.rz(rads=7.831476950986221*np.pi).on(q[6]),\n",
922
        "    cirq.rz(rads=-39.11725021952874*np.pi).on(q[7]),\n",
923
        "    cirq.rz(rads=39.03388523545169*np.pi).on(q[13]),\n",
924
        "    cirq.rz(rads=-37.65488974563269*np.pi).on(q[8]),\n",
925
        "    cirq.rz(rads=37.730557978813074*np.pi).on(q[14]),\n",
926
        "    cirq.rz(rads=-14.665863640797525*np.pi).on(q[9]),\n",
927
        "    cirq.rz(rads=14.574829530817984*np.pi).on(q[15]),\n",
928
        "    cirq.rz(rads=-16.519871460773594*np.pi).on(q[10]),\n",
929
        "    cirq.rz(rads=16.52119662884443*np.pi).on(q[16]),\n",
930
        "    cirq.rz(rads=-28.386693052252454*np.pi).on(q[11]),\n",
931
        "    cirq.rz(rads=28.402721418688852*np.pi).on(q[17]),\n",
932
        "    cirq.rz(rads=-7.731815524796781*np.pi).on(q[18]),\n",
933
        "    cirq.rz(rads=7.439388878936463*np.pi).on(q[24]),\n",
934
        "    cirq.rz(rads=-31.64256101076613*np.pi).on(q[19]),\n",
935
        "    cirq.rz(rads=31.63915350146103*np.pi).on(q[25]),\n",
936
        "    cirq.rz(rads=-19.050421382024783*np.pi).on(q[20]),\n",
937
        "    cirq.rz(rads=19.16321328439489*np.pi).on(q[26]),\n",
938
        "    cirq.rz(rads=-29.465079763839764*np.pi).on(q[21]),\n",
939
        "    cirq.rz(rads=29.390466946444676*np.pi).on(q[27]),\n",
940
        "    cirq.rz(rads=-21.367003503847553*np.pi).on(q[22]),\n",
941
        "    cirq.rz(rads=21.411501958409097*np.pi).on(q[28]),\n",
942
        "    cirq.rz(rads=-34.93587030317863*np.pi).on(q[1]),\n",
943
        "    cirq.rz(rads=34.899691840749924*np.pi).on(q[2]),\n",
944
        "    cirq.rz(rads=13.66913916974463*np.pi).on(q[3]),\n",
945
        "    cirq.rz(rads=-13.714527436529053*np.pi).on(q[4]),\n",
946
        "    cirq.rz(rads=-19.300997501357458*np.pi).on(q[5]),\n",
947
        "    cirq.rz(rads=18.86048377848551*np.pi).on(q[6]),\n",
948
        "    cirq.rz(rads=14.928737337703097*np.pi).on(q[8]),\n",
949
        "    cirq.rz(rads=-14.836929415695444*np.pi).on(q[9]),\n",
950
        "    cirq.rz(rads=-2.1976740888018944*np.pi).on(q[10]),\n",
951
        "    cirq.rz(rads=2.1899714261238103*np.pi).on(q[11]),\n",
952
        "    cirq.rz(rads=-12.39075098081413*np.pi).on(q[12]),\n",
953
        "    cirq.rz(rads=12.360493259768578*np.pi).on(q[13]),\n",
954
        "    cirq.rz(rads=-12.10125113388289*np.pi).on(q[14]),\n",
955
        "    cirq.rz(rads=12.22245467467503*np.pi).on(q[15]),\n",
956
        "    cirq.rz(rads=10.936894386213037*np.pi).on(q[16]),\n",
957
        "    cirq.rz(rads=-10.923381665113125*np.pi).on(q[17]),\n",
958
        "    cirq.rz(rads=-2.8894238777188748*np.pi).on(q[19]),\n",
959
        "    cirq.rz(rads=2.945465958360982*np.pi).on(q[20]),\n",
960
        "    cirq.rz(rads=-10.099134633961603*np.pi).on(q[21]),\n",
961
        "    cirq.rz(rads=10.172407045184396*np.pi).on(q[22]),\n",
962
        "    cirq.rz(rads=-15.060126243969762*np.pi).on(q[25]),\n",
963
        "    cirq.rz(rads=15.018682918719897*np.pi).on(q[26]),\n",
964
        "    cirq.rz(rads=-18.34652096929912*np.pi).on(q[27]),\n",
965
        "    cirq.rz(rads=18.371336625384476*np.pi).on(q[28]),\n",
966
        "    cirq.rz(rads=-19.622795435376638*np.pi).on(q[29]),\n",
967
        "    cirq.rz(rads=19.714281937389686*np.pi).on(q[30]),\n",
968
        "    cirq.rz(rads=34.236310550447435*np.pi).on(q[1]),\n",
969
        "    cirq.rz(rads=-34.27248901287614*np.pi).on(q[2]),\n",
970
        "    cirq.rz(rads=-13.19807055510896*np.pi).on(q[3]),\n",
971
        "    cirq.rz(rads=13.152682288324536*np.pi).on(q[4]),\n",
972
        "    cirq.rz(rads=19.96635603838931*np.pi).on(q[5]),\n",
973
        "    cirq.rz(rads=-20.40686976126126*np.pi).on(q[6]),\n",
974
        "    cirq.rz(rads=-15.32421457749417*np.pi).on(q[8]),\n",
975
        "    cirq.rz(rads=15.416022499501823*np.pi).on(q[9]),\n",
976
        "    cirq.rz(rads=2.7999079899133363*np.pi).on(q[10]),\n",
977
        "    cirq.rz(rads=-2.80761065259142*np.pi).on(q[11]),\n",
978
        "    cirq.rz(rads=12.628337110122207*np.pi).on(q[12]),\n",
979
        "    cirq.rz(rads=-12.658594831167758*np.pi).on(q[13]),\n",
980
        "    cirq.rz(rads=11.899075778124569*np.pi).on(q[14]),\n",
981
        "    cirq.rz(rads=-11.777872237332431*np.pi).on(q[15]),\n",
982
        "    cirq.rz(rads=-12.725823706766091*np.pi).on(q[16]),\n",
983
        "    cirq.rz(rads=12.739336427866004*np.pi).on(q[17]),\n",
984
        "    cirq.rz(rads=3.458829500938646*np.pi).on(q[19]),\n",
985
        "    cirq.rz(rads=-3.4027874202965385*np.pi).on(q[20]),\n",
986
        "    cirq.rz(rads=9.817341949396608*np.pi).on(q[21]),\n",
987
        "    cirq.rz(rads=-9.744069538173814*np.pi).on(q[22]),\n",
988
        "    cirq.rz(rads=15.12306271184396*np.pi).on(q[25]),\n",
989
        "    cirq.rz(rads=-15.164506037093826*np.pi).on(q[26]),\n",
990
        "    cirq.rz(rads=20.160375777985994*np.pi).on(q[27]),\n",
991
        "    cirq.rz(rads=-20.13556012190064*np.pi).on(q[28]),\n",
992
        "    cirq.rz(rads=19.481311792027203*np.pi).on(q[29]),\n",
993
        "    cirq.rz(rads=-19.389825290014155*np.pi).on(q[30]),\n",
994
        "    cirq.rz(rads=-42.731868884042235*np.pi).on(q[0]),\n",
995
        "    cirq.rz(rads=42.73449728934477*np.pi).on(q[1]),\n",
996
        "    cirq.rz(rads=-42.48648555249982*np.pi).on(q[4]),\n",
997
        "    cirq.rz(rads=42.46698886209646*np.pi).on(q[5]),\n",
998
        "    cirq.rz(rads=17.629359127188117*np.pi).on(q[7]),\n",
999
        "    cirq.rz(rads=-17.570809626368614*np.pi).on(q[8]),\n",
1000
        "    cirq.rz(rads=-36.89270806725978*np.pi).on(q[9]),\n",
1001
        "    cirq.rz(rads=36.93788826789848*np.pi).on(q[10]),\n",
1002
        "    cirq.rz(rads=16.787954522971983*np.pi).on(q[13]),\n",
1003
        "    cirq.rz(rads=-16.834266520580062*np.pi).on(q[14]),\n",
1004
        "    cirq.rz(rads=-33.970047663366486*np.pi).on(q[15]),\n",
1005
        "    cirq.rz(rads=34.00933588051398*np.pi).on(q[16]),\n",
1006
        "    cirq.rz(rads=-17.533941989655233*np.pi).on(q[18]),\n",
1007
        "    cirq.rz(rads=17.554825603456727*np.pi).on(q[19]),\n",
1008
        "    cirq.rz(rads=7.441137480344476*np.pi).on(q[20]),\n",
1009
        "    cirq.rz(rads=-7.338027941327417*np.pi).on(q[21]),\n",
1010
        "    cirq.rz(rads=12.963573798570843*np.pi).on(q[22]),\n",
1011
        "    cirq.rz(rads=-13.250412392135269*np.pi).on(q[23]),\n",
1012
        "    cirq.rz(rads=12.021227495500458*np.pi).on(q[24]),\n",
1013
        "    cirq.rz(rads=-12.30408433330133*np.pi).on(q[25]),\n",
1014
        "    cirq.rz(rads=18.97727945312479*np.pi).on(q[26]),\n",
1015
        "    cirq.rz(rads=-18.902283551151342*np.pi).on(q[27]),\n",
1016
        "    cirq.rz(rads=10.306307418341955*np.pi).on(q[30]),\n",
1017
        "    cirq.rz(rads=-10.407034178043412*np.pi).on(q[31]),\n",
1018
        "    cirq.rz(rads=43.08985605258596*np.pi).on(q[0]),\n",
1019
        "    cirq.rz(rads=-43.08722764728342*np.pi).on(q[1]),\n",
1020
        "    cirq.rz(rads=42.51913905702814*np.pi).on(q[4]),\n",
1021
        "    cirq.rz(rads=-42.53863574743151*np.pi).on(q[5]),\n",
1022
        "    cirq.rz(rads=-17.442072351850854*np.pi).on(q[7]),\n",
1023
        "    cirq.rz(rads=17.500621852670356*np.pi).on(q[8]),\n",
1024
        "    cirq.rz(rads=37.46019981788182*np.pi).on(q[9]),\n",
1025
        "    cirq.rz(rads=-37.415019617243125*np.pi).on(q[10]),\n",
1026
        "    cirq.rz(rads=-17.306336273583675*np.pi).on(q[13]),\n",
1027
        "    cirq.rz(rads=17.260024275975592*np.pi).on(q[14]),\n",
1028
        "    cirq.rz(rads=34.09650884952739*np.pi).on(q[15]),\n",
1029
        "    cirq.rz(rads=-34.057220632379895*np.pi).on(q[16]),\n",
1030
        "    cirq.rz(rads=16.629064422304193*np.pi).on(q[18]),\n",
1031
        "    cirq.rz(rads=-16.6081808085027*np.pi).on(q[19]),\n",
1032
        "    cirq.rz(rads=-8.211658529535743*np.pi).on(q[20]),\n",
1033
        "    cirq.rz(rads=8.3147680685528*np.pi).on(q[21]),\n",
1034
        "    cirq.rz(rads=-12.993307215153958*np.pi).on(q[22]),\n",
1035
        "    cirq.rz(rads=12.706468621589535*np.pi).on(q[23]),\n",
1036
        "    cirq.rz(rads=-10.31291350227552*np.pi).on(q[24]),\n",
1037
        "    cirq.rz(rads=10.030056664474653*np.pi).on(q[25]),\n",
1038
        "    cirq.rz(rads=-19.012829891376892*np.pi).on(q[26]),\n",
1039
        "    cirq.rz(rads=19.08782579335034*np.pi).on(q[27]),\n",
1040
        "    cirq.rz(rads=-10.745583222538006*np.pi).on(q[30]),\n",
1041
        "    cirq.rz(rads=10.644856462836547*np.pi).on(q[31]),\n",
1042
        "    ],\n",
1043
        "    strategy=cirq.InsertStrategy.EARLIEST)\n",
1044
        "\n",
1045
        "# print a representation of the circuit\n",
1046
        "\n",
1047
        "print(circuit)"
1048
      ]
1049
    },
1050
    {
1051
      "cell_type": "markdown",
1052
      "metadata": {
1053
        "id": "VhAhFOUR3xdS"
1054
      },
1055
      "source": [
1056
        "## Run the circuit\n",
1057
        "\n",
1058
        "Run the amplitude calculation. It should be a few minutes:"
1059
      ]
1060
    },
1061
    {
1062
      "cell_type": "code",
1063
      "execution_count": 6,
1064
      "metadata": {
1065
        "id": "oSLb7b03ur8r",
1066
        "outputId": "a1fd94f0-9b73-4100-e714-bc385cdf7823",
1067
        "colab": {
1068
          "base_uri": "https://localhost:8080/",
1069
          "height": 0
1070
        }
1071
      },
1072
      "outputs": [
1073
        {
1074
          "output_type": "stream",
1075
          "name": "stdout",
1076
          "text": [
1077
            "Result: [0j, 0j]\n",
1078
            "Wall Time: 17.303243874999993   -- Process Time: 155.977301248 \n"
1079
          ]
1080
        }
1081
      ],
1082
      "source": [
1083
        "options = {'t': 16, 'v': 3}\n",
1084
        "simulator = qsimcirq.QSimSimulator(options)\n",
1085
        "\n",
1086
        "wall_start = time.monotonic()\n",
1087
        "process_start = time.process_time()\n",
1088
        "\n",
1089
        "results = simulator.compute_amplitudes(circuit,\n",
1090
        "                                       bitstrings=[0b11011001001100111101110001000001,\n",
1091
        "                                                   0b11011011000111010001001010001011])\n",
1092
        "\n",
1093
        "wall_end = time.monotonic()\n",
1094
        "process_end = time.process_time()\n",
1095
        "\n",
1096
        "print(f\"Result: {results}\")\n",
1097
        "\n",
1098
        "total_process_time = process_end - process_start\n",
1099
        "total_wall_time = wall_end - wall_start\n",
1100
        "\n",
1101
        "print(f\"Wall Time: {total_wall_time}   -- Process Time: {total_process_time} \")"
1102
      ]
1103
    }
1104
  ],
1105
  "metadata": {
1106
    "colab": {
1107
      "provenance": [],
1108
      "machine_shape": "hm",
1109
      "gpuType": "A100"
1110
    },
1111
    "kernelspec": {
1112
      "display_name": "Python 3",
1113
      "name": "python3"
1114
    },
1115
    "accelerator": "GPU"
1116
  },
1117
  "nbformat": 4,
1118
  "nbformat_minor": 0
1119
}