microsoft/qdk

Public

mirrored fromhttps://github.com/microsoft/qdkAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
brlackey/neutral-atom-models

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

samples/estimation/estimation-hardcoded-circuit.ipynb

1800lines · modecode

1{
2 "cells": [
3 {
4 "cell_type": "markdown",
5 "metadata": {},
6 "source": [
7 "# Resource Estimation of Fixed Circuit Used in Tensor Network Contraction Simulation\n",
8 "\n",
9 "This notebook gives the resource estimation of random quantum circuits used for the tensor network contraction simulation in\n",
10 "[Alibaba Cloud Quantum Development Platform: Large-Scale Classical Simulation of Quantum Circuits](https://arxiv.org/abs/1907.11217)."
11 ]
12 },
13 {
14 "cell_type": "code",
15 "execution_count": null,
16 "metadata": {},
17 "outputs": [],
18 "source": [
19 "from qdk import qsharp"
20 ]
21 },
22 {
23 "cell_type": "markdown",
24 "metadata": {},
25 "source": [
26 "## Encoding a circuit\n",
27 "\n",
28 "Let's now create a Q# program encoding one the 70-qubit circuits of depth 40 described in \n",
29 "https://github.com/sboixo/GRCS/tree/master/inst/bristlecone/cz_v2."
30 ]
31 },
32 {
33 "cell_type": "code",
34 "execution_count": null,
35 "metadata": {
36 "microsoft": {
37 "language": "qsharp"
38 },
39 "vscode": {
40 "languageId": "qsharp"
41 }
42 },
43 "outputs": [],
44 "source": [
45 "%%qsharp\n",
46 "\n",
47 "operation SqrtX(q : Qubit) : Unit {\n",
48 " H(q);\n",
49 " S(q);\n",
50 " H(q);\n",
51 "}\n",
52 "\n",
53 "operation SqrtY(q : Qubit) : Unit {\n",
54 " Adjoint S(q);\n",
55 " H(q);\n",
56 " S(q);\n",
57 " H(q);\n",
58 " S(q);\n",
59 "}\n",
60 "\n",
61 "operation RunHardcodedCircuit() : Unit {\n",
62 " use qs = Qubit[70];\n",
63 " for i in 0 .. 70 - 1 {\n",
64 " H(qs[i]);\n",
65 " }\n",
66 " T(qs[0]);\n",
67 " T(qs[1]);\n",
68 " T(qs[2]);\n",
69 " T(qs[3]);\n",
70 " CZ(qs[4], qs[5]);\n",
71 " T(qs[6]);\n",
72 " CZ(qs[7], qs[8]);\n",
73 " T(qs[9]);\n",
74 " T(qs[10]);\n",
75 " T(qs[11]);\n",
76 " CZ(qs[12], qs[13]);\n",
77 " T(qs[14]);\n",
78 " T(qs[15]);\n",
79 " CZ(qs[16], qs[17]);\n",
80 " T(qs[18]);\n",
81 " T(qs[19]);\n",
82 " T(qs[20]);\n",
83 " T(qs[21]);\n",
84 " T(qs[22]);\n",
85 " CZ(qs[23], qs[24]);\n",
86 " T(qs[25]);\n",
87 " T(qs[26]);\n",
88 " CZ(qs[27], qs[28]);\n",
89 " T(qs[29]);\n",
90 " T(qs[30]);\n",
91 " CZ(qs[31], qs[32]);\n",
92 " T(qs[33]);\n",
93 " T(qs[34]);\n",
94 " CZ(qs[35], qs[36]);\n",
95 " T(qs[37]);\n",
96 " T(qs[38]);\n",
97 " T(qs[39]);\n",
98 " T(qs[40]);\n",
99 " T(qs[41]);\n",
100 " T(qs[42]);\n",
101 " CZ(qs[43], qs[44]);\n",
102 " T(qs[45]);\n",
103 " T(qs[46]);\n",
104 " CZ(qs[47], qs[48]);\n",
105 " T(qs[49]);\n",
106 " CZ(qs[50], qs[51]);\n",
107 " T(qs[52]);\n",
108 " T(qs[53]);\n",
109 " CZ(qs[54], qs[55]);\n",
110 " T(qs[56]);\n",
111 " T(qs[57]);\n",
112 " T(qs[58]);\n",
113 " CZ(qs[59], qs[60]);\n",
114 " T(qs[61]);\n",
115 " T(qs[62]);\n",
116 " T(qs[63]);\n",
117 " T(qs[64]);\n",
118 " T(qs[65]);\n",
119 " CZ(qs[66], qs[67]);\n",
120 " T(qs[68]);\n",
121 " T(qs[69]);\n",
122 " CZ(qs[2], qs[7]);\n",
123 " CZ(qs[4], qs[9]);\n",
124 " SqrtY(qs[5]);\n",
125 " SqrtY(qs[8]);\n",
126 " SqrtX(qs[12]);\n",
127 " CZ(qs[13], qs[22]);\n",
128 " CZ(qs[15], qs[24]);\n",
129 " SqrtX(qs[16]);\n",
130 " CZ(qs[17], qs[26]);\n",
131 " CZ(qs[19], qs[28]);\n",
132 " SqrtY(qs[23]);\n",
133 " SqrtX(qs[27]);\n",
134 " CZ(qs[31], qs[41]);\n",
135 " SqrtY(qs[32]);\n",
136 " CZ(qs[33], qs[43]);\n",
137 " CZ(qs[35], qs[45]);\n",
138 " SqrtX(qs[36]);\n",
139 " CZ(qs[37], qs[47]);\n",
140 " CZ(qs[39], qs[49]);\n",
141 " SqrtX(qs[44]);\n",
142 " SqrtY(qs[48]);\n",
143 " SqrtY(qs[50]);\n",
144 " CZ(qs[51], qs[58]);\n",
145 " CZ(qs[53], qs[60]);\n",
146 " SqrtY(qs[54]);\n",
147 " CZ(qs[55], qs[62]);\n",
148 " SqrtX(qs[59]);\n",
149 " CZ(qs[66], qs[69]);\n",
150 " SqrtY(qs[67]);\n",
151 " CZ(qs[0], qs[1]);\n",
152 " SqrtY(qs[2]);\n",
153 " SqrtX(qs[4]);\n",
154 " T(qs[5]);\n",
155 " SqrtY(qs[7]);\n",
156 " CZ(qs[8], qs[9]);\n",
157 " T(qs[12]);\n",
158 " CZ(qs[13], qs[14]);\n",
159 " SqrtY(qs[15]);\n",
160 " T(qs[16]);\n",
161 " CZ(qs[17], qs[18]);\n",
162 " SqrtY(qs[19]);\n",
163 " CZ(qs[20], qs[21]);\n",
164 " SqrtY(qs[22]);\n",
165 " T(qs[23]);\n",
166 " CZ(qs[24], qs[25]);\n",
167 " SqrtX(qs[26]);\n",
168 " T(qs[27]);\n",
169 " CZ(qs[28], qs[29]);\n",
170 " SqrtY(qs[31]);\n",
171 " CZ(qs[32], qs[33]);\n",
172 " SqrtY(qs[35]);\n",
173 " CZ(qs[36], qs[37]);\n",
174 " SqrtY(qs[39]);\n",
175 " CZ(qs[40], qs[41]);\n",
176 " SqrtX(qs[43]);\n",
177 " CZ(qs[44], qs[45]);\n",
178 " SqrtX(qs[47]);\n",
179 " CZ(qs[48], qs[49]);\n",
180 " T(qs[50]);\n",
181 " CZ(qs[51], qs[52]);\n",
182 " SqrtX(qs[53]);\n",
183 " T(qs[54]);\n",
184 " CZ(qs[55], qs[56]);\n",
185 " SqrtY(qs[58]);\n",
186 " T(qs[59]);\n",
187 " CZ(qs[60], qs[61]);\n",
188 " SqrtY(qs[62]);\n",
189 " SqrtY(qs[66]);\n",
190 " T(qs[67]);\n",
191 " CZ(qs[68], qs[69]);\n",
192 " SqrtX(qs[0]);\n",
193 " CZ(qs[1], qs[4]);\n",
194 " T(qs[2]);\n",
195 " CZ(qs[6], qs[13]);\n",
196 " T(qs[7]);\n",
197 " CZ(qs[8], qs[15]);\n",
198 " SqrtY(qs[9]);\n",
199 " CZ(qs[10], qs[17]);\n",
200 " SqrtX(qs[14]);\n",
201 " SqrtY(qs[18]);\n",
202 " T(qs[19]);\n",
203 " SqrtY(qs[20]);\n",
204 " CZ(qs[21], qs[31]);\n",
205 " T(qs[22]);\n",
206 " CZ(qs[23], qs[33]);\n",
207 " SqrtX(qs[24]);\n",
208 " CZ(qs[25], qs[35]);\n",
209 " T(qs[26]);\n",
210 " CZ(qs[27], qs[37]);\n",
211 " SqrtY(qs[28]);\n",
212 " CZ(qs[29], qs[39]);\n",
213 " SqrtX(qs[32]);\n",
214 " SqrtY(qs[36]);\n",
215 " SqrtY(qs[40]);\n",
216 " SqrtX(qs[41]);\n",
217 " CZ(qs[42], qs[51]);\n",
218 " T(qs[43]);\n",
219 " CZ(qs[44], qs[53]);\n",
220 " SqrtX(qs[45]);\n",
221 " CZ(qs[46], qs[55]);\n",
222 " T(qs[47]);\n",
223 " CZ(qs[48], qs[57]);\n",
224 " SqrtY(qs[49]);\n",
225 " SqrtX(qs[52]);\n",
226 " SqrtX(qs[56]);\n",
227 " T(qs[58]);\n",
228 " CZ(qs[59], qs[64]);\n",
229 " SqrtY(qs[60]);\n",
230 " CZ(qs[61], qs[66]);\n",
231 " T(qs[62]);\n",
232 " SqrtX(qs[68]);\n",
233 " SqrtY(qs[69]);\n",
234 " T(qs[0]);\n",
235 " SqrtX(qs[1]);\n",
236 " CZ(qs[2], qs[3]);\n",
237 " SqrtY(qs[4]);\n",
238 " SqrtY(qs[6]);\n",
239 " SqrtX(qs[8]);\n",
240 " CZ(qs[9], qs[10]);\n",
241 " SqrtX(qs[13]);\n",
242 " CZ(qs[14], qs[15]);\n",
243 " SqrtX(qs[17]);\n",
244 " CZ(qs[18], qs[19]);\n",
245 " T(qs[20]);\n",
246 " CZ(qs[21], qs[22]);\n",
247 " SqrtY(qs[23]);\n",
248 " T(qs[24]);\n",
249 " CZ(qs[25], qs[26]);\n",
250 " SqrtY(qs[27]);\n",
251 " T(qs[28]);\n",
252 " SqrtX(qs[29]);\n",
253 " SqrtY(qs[31]);\n",
254 " T(qs[32]);\n",
255 " CZ(qs[33], qs[34]);\n",
256 " SqrtY(qs[35]);\n",
257 " T(qs[36]);\n",
258 " CZ(qs[37], qs[38]);\n",
259 " SqrtY(qs[39]);\n",
260 " T(qs[40]);\n",
261 " CZ(qs[41], qs[42]);\n",
262 " SqrtY(qs[44]);\n",
263 " CZ(qs[45], qs[46]);\n",
264 " SqrtY(qs[48]);\n",
265 " T(qs[49]);\n",
266 " SqrtY(qs[51]);\n",
267 " CZ(qs[52], qs[53]);\n",
268 " SqrtY(qs[55]);\n",
269 " CZ(qs[56], qs[57]);\n",
270 " SqrtY(qs[59]);\n",
271 " T(qs[60]);\n",
272 " CZ(qs[61], qs[62]);\n",
273 " CZ(qs[64], qs[65]);\n",
274 " SqrtX(qs[66]);\n",
275 " T(qs[68]);\n",
276 " T(qs[69]);\n",
277 " T(qs[1]);\n",
278 " SqrtY(qs[2]);\n",
279 " CZ(qs[3], qs[8]);\n",
280 " T(qs[4]);\n",
281 " CZ(qs[5], qs[10]);\n",
282 " T(qs[6]);\n",
283 " SqrtX(qs[9]);\n",
284 " CZ(qs[12], qs[21]);\n",
285 " T(qs[13]);\n",
286 " CZ(qs[14], qs[23]);\n",
287 " SqrtY(qs[15]);\n",
288 " CZ(qs[16], qs[25]);\n",
289 " T(qs[17]);\n",
290 " CZ(qs[18], qs[27]);\n",
291 " SqrtX(qs[19]);\n",
292 " SqrtX(qs[22]);\n",
293 " SqrtX(qs[26]);\n",
294 " T(qs[29]);\n",
295 " CZ(qs[30], qs[40]);\n",
296 " T(qs[31]);\n",
297 " CZ(qs[32], qs[42]);\n",
298 " SqrtY(qs[33]);\n",
299 " CZ(qs[34], qs[44]);\n",
300 " T(qs[35]);\n",
301 " CZ(qs[36], qs[46]);\n",
302 " SqrtY(qs[37]);\n",
303 " CZ(qs[38], qs[48]);\n",
304 " T(qs[39]);\n",
305 " SqrtX(qs[41]);\n",
306 " SqrtX(qs[45]);\n",
307 " T(qs[51]);\n",
308 " CZ(qs[52], qs[59]);\n",
309 " SqrtY(qs[53]);\n",
310 " CZ(qs[54], qs[61]);\n",
311 " T(qs[55]);\n",
312 " CZ(qs[56], qs[63]);\n",
313 " SqrtY(qs[57]);\n",
314 " SqrtY(qs[62]);\n",
315 " SqrtY(qs[64]);\n",
316 " CZ(qs[65], qs[68]);\n",
317 " T(qs[66]);\n",
318 " T(qs[2]);\n",
319 " CZ(qs[3], qs[4]);\n",
320 " SqrtY(qs[5]);\n",
321 " CZ(qs[6], qs[7]);\n",
322 " SqrtY(qs[8]);\n",
323 " T(qs[9]);\n",
324 " CZ(qs[10], qs[11]);\n",
325 " SqrtY(qs[12]);\n",
326 " SqrtX(qs[14]);\n",
327 " CZ(qs[15], qs[16]);\n",
328 " SqrtY(qs[18]);\n",
329 " T(qs[19]);\n",
330 " SqrtX(qs[21]);\n",
331 " CZ(qs[22], qs[23]);\n",
332 " SqrtY(qs[25]);\n",
333 " CZ(qs[26], qs[27]);\n",
334 " CZ(qs[30], qs[31]);\n",
335 " SqrtY(qs[32]);\n",
336 " T(qs[33]);\n",
337 " CZ(qs[34], qs[35]);\n",
338 " SqrtY(qs[36]);\n",
339 " T(qs[37]);\n",
340 " CZ(qs[38], qs[39]);\n",
341 " SqrtY(qs[40]);\n",
342 " T(qs[41]);\n",
343 " CZ(qs[42], qs[43]);\n",
344 " SqrtY(qs[44]);\n",
345 " T(qs[45]);\n",
346 " CZ(qs[46], qs[47]);\n",
347 " SqrtY(qs[48]);\n",
348 " SqrtX(qs[52]);\n",
349 " CZ(qs[53], qs[54]);\n",
350 " SqrtY(qs[56]);\n",
351 " T(qs[57]);\n",
352 " CZ(qs[58], qs[59]);\n",
353 " SqrtY(qs[61]);\n",
354 " CZ(qs[62], qs[63]);\n",
355 " T(qs[64]);\n",
356 " CZ(qs[65], qs[66]);\n",
357 " SqrtY(qs[68]);\n",
358 " CZ(qs[0], qs[3]);\n",
359 " SqrtY(qs[4]);\n",
360 " T(qs[5]);\n",
361 " SqrtX(qs[6]);\n",
362 " CZ(qs[7], qs[14]);\n",
363 " T(qs[8]);\n",
364 " CZ(qs[9], qs[16]);\n",
365 " SqrtY(qs[10]);\n",
366 " CZ(qs[11], qs[18]);\n",
367 " T(qs[12]);\n",
368 " SqrtX(qs[15]);\n",
369 " CZ(qs[20], qs[30]);\n",
370 " T(qs[21]);\n",
371 " CZ(qs[22], qs[32]);\n",
372 " SqrtY(qs[23]);\n",
373 " CZ(qs[24], qs[34]);\n",
374 " T(qs[25]);\n",
375 " CZ(qs[26], qs[36]);\n",
376 " SqrtY(qs[27]);\n",
377 " CZ(qs[28], qs[38]);\n",
378 " SqrtX(qs[31]);\n",
379 " SqrtY(qs[35]);\n",
380 " SqrtX(qs[39]);\n",
381 " T(qs[40]);\n",
382 " CZ(qs[41], qs[50]);\n",
383 " SqrtX(qs[42]);\n",
384 " CZ(qs[43], qs[52]);\n",
385 " T(qs[44]);\n",
386 " CZ(qs[45], qs[54]);\n",
387 " SqrtY(qs[46]);\n",
388 " CZ(qs[47], qs[56]);\n",
389 " T(qs[48]);\n",
390 " SqrtX(qs[53]);\n",
391 " SqrtY(qs[58]);\n",
392 " SqrtX(qs[59]);\n",
393 " CZ(qs[60], qs[65]);\n",
394 " T(qs[61]);\n",
395 " CZ(qs[62], qs[67]);\n",
396 " SqrtX(qs[63]);\n",
397 " SqrtY(qs[66]);\n",
398 " T(qs[68]);\n",
399 " SqrtX(qs[0]);\n",
400 " SqrtY(qs[3]);\n",
401 " CZ(qs[4], qs[5]);\n",
402 " T(qs[6]);\n",
403 " CZ(qs[7], qs[8]);\n",
404 " SqrtY(qs[9]);\n",
405 " T(qs[10]);\n",
406 " SqrtY(qs[11]);\n",
407 " CZ(qs[12], qs[13]);\n",
408 " SqrtY(qs[14]);\n",
409 " T(qs[15]);\n",
410 " CZ(qs[16], qs[17]);\n",
411 " SqrtX(qs[18]);\n",
412 " SqrtY(qs[20]);\n",
413 " SqrtY(qs[22]);\n",
414 " CZ(qs[23], qs[24]);\n",
415 " SqrtY(qs[26]);\n",
416 " CZ(qs[27], qs[28]);\n",
417 " SqrtX(qs[30]);\n",
418 " CZ(qs[31], qs[32]);\n",
419 " SqrtX(qs[34]);\n",
420 " CZ(qs[35], qs[36]);\n",
421 " SqrtY(qs[38]);\n",
422 " T(qs[39]);\n",
423 " SqrtX(qs[41]);\n",
424 " T(qs[42]);\n",
425 " CZ(qs[43], qs[44]);\n",
426 " SqrtX(qs[45]);\n",
427 " T(qs[46]);\n",
428 " CZ(qs[47], qs[48]);\n",
429 " CZ(qs[50], qs[51]);\n",
430 " SqrtY(qs[52]);\n",
431 " T(qs[53]);\n",
432 " CZ(qs[54], qs[55]);\n",
433 " SqrtX(qs[56]);\n",
434 " T(qs[58]);\n",
435 " CZ(qs[59], qs[60]);\n",
436 " SqrtX(qs[62]);\n",
437 " T(qs[63]);\n",
438 " SqrtX(qs[65]);\n",
439 " CZ(qs[66], qs[67]);\n",
440 " T(qs[0]);\n",
441 " CZ(qs[2], qs[7]);\n",
442 " T(qs[3]);\n",
443 " CZ(qs[4], qs[9]);\n",
444 " SqrtY(qs[5]);\n",
445 " SqrtY(qs[8]);\n",
446 " T(qs[11]);\n",
447 " SqrtX(qs[12]);\n",
448 " CZ(qs[13], qs[22]);\n",
449 " T(qs[14]);\n",
450 " CZ(qs[15], qs[24]);\n",
451 " SqrtX(qs[16]);\n",
452 " CZ(qs[17], qs[26]);\n",
453 " T(qs[18]);\n",
454 " CZ(qs[19], qs[28]);\n",
455 " T(qs[20]);\n",
456 " SqrtX(qs[23]);\n",
457 " SqrtX(qs[27]);\n",
458 " T(qs[30]);\n",
459 " CZ(qs[31], qs[41]);\n",
460 " SqrtX(qs[32]);\n",
461 " CZ(qs[33], qs[43]);\n",
462 " T(qs[34]);\n",
463 " CZ(qs[35], qs[45]);\n",
464 " SqrtY(qs[36]);\n",
465 " CZ(qs[37], qs[47]);\n",
466 " T(qs[38]);\n",
467 " CZ(qs[39], qs[49]);\n",
468 " SqrtX(qs[44]);\n",
469 " SqrtX(qs[48]);\n",
470 " SqrtY(qs[50]);\n",
471 " CZ(qs[51], qs[58]);\n",
472 " T(qs[52]);\n",
473 " CZ(qs[53], qs[60]);\n",
474 " SqrtX(qs[54]);\n",
475 " CZ(qs[55], qs[62]);\n",
476 " T(qs[56]);\n",
477 " SqrtX(qs[59]);\n",
478 " T(qs[65]);\n",
479 " CZ(qs[66], qs[69]);\n",
480 " SqrtY(qs[67]);\n",
481 " CZ(qs[0], qs[1]);\n",
482 " SqrtX(qs[2]);\n",
483 " SqrtX(qs[4]);\n",
484 " T(qs[5]);\n",
485 " SqrtY(qs[7]);\n",
486 " CZ(qs[8], qs[9]);\n",
487 " T(qs[12]);\n",
488 " CZ(qs[13], qs[14]);\n",
489 " SqrtY(qs[15]);\n",
490 " T(qs[16]);\n",
491 " CZ(qs[17], qs[18]);\n",
492 " SqrtY(qs[19]);\n",
493 " CZ(qs[20], qs[21]);\n",
494 " SqrtX(qs[22]);\n",
495 " T(qs[23]);\n",
496 " CZ(qs[24], qs[25]);\n",
497 " SqrtY(qs[26]);\n",
498 " T(qs[27]);\n",
499 " CZ(qs[28], qs[29]);\n",
500 " SqrtY(qs[31]);\n",
501 " CZ(qs[32], qs[33]);\n",
502 " SqrtX(qs[35]);\n",
503 " CZ(qs[36], qs[37]);\n",
504 " SqrtY(qs[39]);\n",
505 " CZ(qs[40], qs[41]);\n",
506 " SqrtY(qs[43]);\n",
507 " CZ(qs[44], qs[45]);\n",
508 " SqrtX(qs[47]);\n",
509 " CZ(qs[48], qs[49]);\n",
510 " T(qs[50]);\n",
511 " CZ(qs[51], qs[52]);\n",
512 " SqrtX(qs[53]);\n",
513 " T(qs[54]);\n",
514 " CZ(qs[55], qs[56]);\n",
515 " SqrtY(qs[58]);\n",
516 " T(qs[59]);\n",
517 " CZ(qs[60], qs[61]);\n",
518 " SqrtX(qs[62]);\n",
519 " SqrtX(qs[66]);\n",
520 " T(qs[67]);\n",
521 " CZ(qs[68], qs[69]);\n",
522 " SqrtX(qs[0]);\n",
523 " CZ(qs[1], qs[4]);\n",
524 " T(qs[2]);\n",
525 " CZ(qs[6], qs[13]);\n",
526 " T(qs[7]);\n",
527 " CZ(qs[8], qs[15]);\n",
528 " SqrtX(qs[9]);\n",
529 " CZ(qs[10], qs[17]);\n",
530 " SqrtY(qs[14]);\n",
531 " SqrtY(qs[18]);\n",
532 " T(qs[19]);\n",
533 " SqrtX(qs[20]);\n",
534 " CZ(qs[21], qs[31]);\n",
535 " T(qs[22]);\n",
536 " CZ(qs[23], qs[33]);\n",
537 " SqrtX(qs[24]);\n",
538 " CZ(qs[25], qs[35]);\n",
539 " T(qs[26]);\n",
540 " CZ(qs[27], qs[37]);\n",
541 " SqrtY(qs[28]);\n",
542 " CZ(qs[29], qs[39]);\n",
543 " SqrtX(qs[32]);\n",
544 " SqrtY(qs[36]);\n",
545 " SqrtX(qs[40]);\n",
546 " SqrtY(qs[41]);\n",
547 " CZ(qs[42], qs[51]);\n",
548 " T(qs[43]);\n",
549 " CZ(qs[44], qs[53]);\n",
550 " SqrtX(qs[45]);\n",
551 " CZ(qs[46], qs[55]);\n",
552 " T(qs[47]);\n",
553 " CZ(qs[48], qs[57]);\n",
554 " SqrtX(qs[49]);\n",
555 " SqrtX(qs[52]);\n",
556 " SqrtX(qs[56]);\n",
557 " T(qs[58]);\n",
558 " CZ(qs[59], qs[64]);\n",
559 " SqrtY(qs[60]);\n",
560 " CZ(qs[61], qs[66]);\n",
561 " T(qs[62]);\n",
562 " SqrtX(qs[68]);\n",
563 " SqrtX(qs[69]);\n",
564 " T(qs[0]);\n",
565 " SqrtX(qs[1]);\n",
566 " CZ(qs[2], qs[3]);\n",
567 " SqrtY(qs[4]);\n",
568 " SqrtY(qs[6]);\n",
569 " SqrtY(qs[8]);\n",
570 " CZ(qs[9], qs[10]);\n",
571 " SqrtY(qs[13]);\n",
572 " CZ(qs[14], qs[15]);\n",
573 " SqrtX(qs[17]);\n",
574 " CZ(qs[18], qs[19]);\n",
575 " T(qs[20]);\n",
576 " CZ(qs[21], qs[22]);\n",
577 " SqrtX(qs[23]);\n",
578 " T(qs[24]);\n",
579 " CZ(qs[25], qs[26]);\n",
580 " SqrtY(qs[27]);\n",
581 " T(qs[28]);\n",
582 " SqrtX(qs[29]);\n",
583 " SqrtX(qs[31]);\n",
584 " T(qs[32]);\n",
585 " CZ(qs[33], qs[34]);\n",
586 " SqrtX(qs[35]);\n",
587 " T(qs[36]);\n",
588 " CZ(qs[37], qs[38]);\n",
589 " SqrtX(qs[39]);\n",
590 " T(qs[40]);\n",
591 " CZ(qs[41], qs[42]);\n",
592 " SqrtY(qs[44]);\n",
593 " CZ(qs[45], qs[46]);\n",
594 " SqrtX(qs[48]);\n",
595 " T(qs[49]);\n",
596 " SqrtY(qs[51]);\n",
597 " CZ(qs[52], qs[53]);\n",
598 " SqrtY(qs[55]);\n",
599 " CZ(qs[56], qs[57]);\n",
600 " SqrtX(qs[59]);\n",
601 " T(qs[60]);\n",
602 " CZ(qs[61], qs[62]);\n",
603 " CZ(qs[64], qs[65]);\n",
604 " SqrtX(qs[66]);\n",
605 " T(qs[68]);\n",
606 " T(qs[69]);\n",
607 " T(qs[1]);\n",
608 " SqrtY(qs[2]);\n",
609 " CZ(qs[3], qs[8]);\n",
610 " T(qs[4]);\n",
611 " CZ(qs[5], qs[10]);\n",
612 " T(qs[6]);\n",
613 " SqrtX(qs[9]);\n",
614 " CZ(qs[12], qs[21]);\n",
615 " T(qs[13]);\n",
616 " CZ(qs[14], qs[23]);\n",
617 " SqrtY(qs[15]);\n",
618 " CZ(qs[16], qs[25]);\n",
619 " T(qs[17]);\n",
620 " CZ(qs[18], qs[27]);\n",
621 " SqrtX(qs[19]);\n",
622 " SqrtX(qs[22]);\n",
623 " SqrtX(qs[26]);\n",
624 " T(qs[29]);\n",
625 " CZ(qs[30], qs[40]);\n",
626 " T(qs[31]);\n",
627 " CZ(qs[32], qs[42]);\n",
628 " SqrtX(qs[33]);\n",
629 " CZ(qs[34], qs[44]);\n",
630 " T(qs[35]);\n",
631 " CZ(qs[36], qs[46]);\n",
632 " SqrtY(qs[37]);\n",
633 " CZ(qs[38], qs[48]);\n",
634 " T(qs[39]);\n",
635 " SqrtX(qs[41]);\n",
636 " SqrtY(qs[45]);\n",
637 " T(qs[51]);\n",
638 " CZ(qs[52], qs[59]);\n",
639 " SqrtY(qs[53]);\n",
640 " CZ(qs[54], qs[61]);\n",
641 " T(qs[55]);\n",
642 " CZ(qs[56], qs[63]);\n",
643 " SqrtY(qs[57]);\n",
644 " SqrtX(qs[62]);\n",
645 " SqrtX(qs[64]);\n",
646 " CZ(qs[65], qs[68]);\n",
647 " T(qs[66]);\n",
648 " T(qs[2]);\n",
649 " CZ(qs[3], qs[4]);\n",
650 " SqrtX(qs[5]);\n",
651 " CZ(qs[6], qs[7]);\n",
652 " SqrtY(qs[8]);\n",
653 " T(qs[9]);\n",
654 " CZ(qs[10], qs[11]);\n",
655 " SqrtY(qs[12]);\n",
656 " SqrtY(qs[14]);\n",
657 " CZ(qs[15], qs[16]);\n",
658 " SqrtX(qs[18]);\n",
659 " T(qs[19]);\n",
660 " SqrtY(qs[21]);\n",
661 " CZ(qs[22], qs[23]);\n",
662 " SqrtY(qs[25]);\n",
663 " CZ(qs[26], qs[27]);\n",
664 " CZ(qs[30], qs[31]);\n",
665 " SqrtX(qs[32]);\n",
666 " T(qs[33]);\n",
667 " CZ(qs[34], qs[35]);\n",
668 " SqrtY(qs[36]);\n",
669 " T(qs[37]);\n",
670 " CZ(qs[38], qs[39]);\n",
671 " SqrtY(qs[40]);\n",
672 " T(qs[41]);\n",
673 " CZ(qs[42], qs[43]);\n",
674 " SqrtX(qs[44]);\n",
675 " T(qs[45]);\n",
676 " CZ(qs[46], qs[47]);\n",
677 " SqrtY(qs[48]);\n",
678 " SqrtX(qs[52]);\n",
679 " CZ(qs[53], qs[54]);\n",
680 " SqrtX(qs[56]);\n",
681 " T(qs[57]);\n",
682 " CZ(qs[58], qs[59]);\n",
683 " SqrtY(qs[61]);\n",
684 " CZ(qs[62], qs[63]);\n",
685 " T(qs[64]);\n",
686 " CZ(qs[65], qs[66]);\n",
687 " SqrtX(qs[68]);\n",
688 " CZ(qs[0], qs[3]);\n",
689 " SqrtY(qs[4]);\n",
690 " T(qs[5]);\n",
691 " SqrtY(qs[6]);\n",
692 " CZ(qs[7], qs[14]);\n",
693 " T(qs[8]);\n",
694 " CZ(qs[9], qs[16]);\n",
695 " SqrtX(qs[10]);\n",
696 " CZ(qs[11], qs[18]);\n",
697 " T(qs[12]);\n",
698 " SqrtX(qs[15]);\n",
699 " CZ(qs[20], qs[30]);\n",
700 " T(qs[21]);\n",
701 " CZ(qs[22], qs[32]);\n",
702 " SqrtY(qs[23]);\n",
703 " CZ(qs[24], qs[34]);\n",
704 " T(qs[25]);\n",
705 " CZ(qs[26], qs[36]);\n",
706 " SqrtY(qs[27]);\n",
707 " CZ(qs[28], qs[38]);\n",
708 " SqrtX(qs[31]);\n",
709 " SqrtY(qs[35]);\n",
710 " SqrtX(qs[39]);\n",
711 " T(qs[40]);\n",
712 " CZ(qs[41], qs[50]);\n",
713 " SqrtY(qs[42]);\n",
714 " CZ(qs[43], qs[52]);\n",
715 " T(qs[44]);\n",
716 " CZ(qs[45], qs[54]);\n",
717 " SqrtX(qs[46]);\n",
718 " CZ(qs[47], qs[56]);\n",
719 " T(qs[48]);\n",
720 " SqrtX(qs[53]);\n",
721 " SqrtX(qs[58]);\n",
722 " SqrtX(qs[59]);\n",
723 " CZ(qs[60], qs[65]);\n",
724 " T(qs[61]);\n",
725 " CZ(qs[62], qs[67]);\n",
726 " SqrtY(qs[63]);\n",
727 " SqrtY(qs[66]);\n",
728 " T(qs[68]);\n",
729 " SqrtX(qs[0]);\n",
730 " SqrtY(qs[3]);\n",
731 " CZ(qs[4], qs[5]);\n",
732 " T(qs[6]);\n",
733 " CZ(qs[7], qs[8]);\n",
734 " SqrtY(qs[9]);\n",
735 " T(qs[10]);\n",
736 " SqrtX(qs[11]);\n",
737 " CZ(qs[12], qs[13]);\n",
738 " SqrtY(qs[14]);\n",
739 " T(qs[15]);\n",
740 " CZ(qs[16], qs[17]);\n",
741 " SqrtX(qs[18]);\n",
742 " SqrtX(qs[20]);\n",
743 " SqrtX(qs[22]);\n",
744 " CZ(qs[23], qs[24]);\n",
745 " SqrtY(qs[26]);\n",
746 " CZ(qs[27], qs[28]);\n",
747 " SqrtY(qs[30]);\n",
748 " CZ(qs[31], qs[32]);\n",
749 " SqrtY(qs[34]);\n",
750 " CZ(qs[35], qs[36]);\n",
751 " SqrtY(qs[38]);\n",
752 " T(qs[39]);\n",
753 " SqrtY(qs[41]);\n",
754 " T(qs[42]);\n",
755 " CZ(qs[43], qs[44]);\n",
756 " SqrtX(qs[45]);\n",
757 " T(qs[46]);\n",
758 " CZ(qs[47], qs[48]);\n",
759 " CZ(qs[50], qs[51]);\n",
760 " SqrtY(qs[52]);\n",
761 " T(qs[53]);\n",
762 " CZ(qs[54], qs[55]);\n",
763 " SqrtY(qs[56]);\n",
764 " T(qs[58]);\n",
765 " CZ(qs[59], qs[60]);\n",
766 " SqrtY(qs[62]);\n",
767 " T(qs[63]);\n",
768 " SqrtY(qs[65]);\n",
769 " CZ(qs[66], qs[67]);\n",
770 " T(qs[0]);\n",
771 " CZ(qs[2], qs[7]);\n",
772 " T(qs[3]);\n",
773 " CZ(qs[4], qs[9]);\n",
774 " SqrtY(qs[5]);\n",
775 " SqrtY(qs[8]);\n",
776 " T(qs[11]);\n",
777 " SqrtX(qs[12]);\n",
778 " CZ(qs[13], qs[22]);\n",
779 " T(qs[14]);\n",
780 " CZ(qs[15], qs[24]);\n",
781 " SqrtY(qs[16]);\n",
782 " CZ(qs[17], qs[26]);\n",
783 " T(qs[18]);\n",
784 " CZ(qs[19], qs[28]);\n",
785 " T(qs[20]);\n",
786 " SqrtX(qs[23]);\n",
787 " SqrtY(qs[27]);\n",
788 " T(qs[30]);\n",
789 " CZ(qs[31], qs[41]);\n",
790 " SqrtX(qs[32]);\n",
791 " CZ(qs[33], qs[43]);\n",
792 " T(qs[34]);\n",
793 " CZ(qs[35], qs[45]);\n",
794 " SqrtX(qs[36]);\n",
795 " CZ(qs[37], qs[47]);\n",
796 " T(qs[38]);\n",
797 " CZ(qs[39], qs[49]);\n",
798 " SqrtX(qs[44]);\n",
799 " SqrtY(qs[48]);\n",
800 " SqrtY(qs[50]);\n",
801 " CZ(qs[51], qs[58]);\n",
802 " T(qs[52]);\n",
803 " CZ(qs[53], qs[60]);\n",
804 " SqrtX(qs[54]);\n",
805 " CZ(qs[55], qs[62]);\n",
806 " T(qs[56]);\n",
807 " SqrtY(qs[59]);\n",
808 " T(qs[65]);\n",
809 " CZ(qs[66], qs[69]);\n",
810 " SqrtX(qs[67]);\n",
811 " CZ(qs[0], qs[1]);\n",
812 " SqrtX(qs[2]);\n",
813 " SqrtY(qs[4]);\n",
814 " T(qs[5]);\n",
815 " SqrtX(qs[7]);\n",
816 " CZ(qs[8], qs[9]);\n",
817 " T(qs[12]);\n",
818 " CZ(qs[13], qs[14]);\n",
819 " SqrtX(qs[15]);\n",
820 " T(qs[16]);\n",
821 " CZ(qs[17], qs[18]);\n",
822 " SqrtY(qs[19]);\n",
823 " CZ(qs[20], qs[21]);\n",
824 " SqrtX(qs[22]);\n",
825 " T(qs[23]);\n",
826 " CZ(qs[24], qs[25]);\n",
827 " SqrtX(qs[26]);\n",
828 " T(qs[27]);\n",
829 " CZ(qs[28], qs[29]);\n",
830 " SqrtX(qs[31]);\n",
831 " CZ(qs[32], qs[33]);\n",
832 " SqrtX(qs[35]);\n",
833 " CZ(qs[36], qs[37]);\n",
834 " SqrtX(qs[39]);\n",
835 " CZ(qs[40], qs[41]);\n",
836 " SqrtY(qs[43]);\n",
837 " CZ(qs[44], qs[45]);\n",
838 " SqrtX(qs[47]);\n",
839 " CZ(qs[48], qs[49]);\n",
840 " T(qs[50]);\n",
841 " CZ(qs[51], qs[52]);\n",
842 " SqrtX(qs[53]);\n",
843 " T(qs[54]);\n",
844 " CZ(qs[55], qs[56]);\n",
845 " SqrtX(qs[58]);\n",
846 " T(qs[59]);\n",
847 " CZ(qs[60], qs[61]);\n",
848 " SqrtX(qs[62]);\n",
849 " SqrtX(qs[66]);\n",
850 " T(qs[67]);\n",
851 " CZ(qs[68], qs[69]);\n",
852 " SqrtY(qs[0]);\n",
853 " CZ(qs[1], qs[4]);\n",
854 " T(qs[2]);\n",
855 " CZ(qs[6], qs[13]);\n",
856 " T(qs[7]);\n",
857 " CZ(qs[8], qs[15]);\n",
858 " SqrtX(qs[9]);\n",
859 " CZ(qs[10], qs[17]);\n",
860 " SqrtY(qs[14]);\n",
861 " SqrtY(qs[18]);\n",
862 " T(qs[19]);\n",
863 " SqrtX(qs[20]);\n",
864 " CZ(qs[21], qs[31]);\n",
865 " T(qs[22]);\n",
866 " CZ(qs[23], qs[33]);\n",
867 " SqrtX(qs[24]);\n",
868 " CZ(qs[25], qs[35]);\n",
869 " T(qs[26]);\n",
870 " CZ(qs[27], qs[37]);\n",
871 " SqrtY(qs[28]);\n",
872 " CZ(qs[29], qs[39]);\n",
873 " SqrtX(qs[32]);\n",
874 " SqrtX(qs[36]);\n",
875 " SqrtY(qs[40]);\n",
876 " SqrtY(qs[41]);\n",
877 " CZ(qs[42], qs[51]);\n",
878 " T(qs[43]);\n",
879 " CZ(qs[44], qs[53]);\n",
880 " SqrtY(qs[45]);\n",
881 " CZ(qs[46], qs[55]);\n",
882 " T(qs[47]);\n",
883 " CZ(qs[48], qs[57]);\n",
884 " SqrtY(qs[49]);\n",
885 " SqrtX(qs[52]);\n",
886 " SqrtY(qs[56]);\n",
887 " T(qs[58]);\n",
888 " CZ(qs[59], qs[64]);\n",
889 " SqrtY(qs[60]);\n",
890 " CZ(qs[61], qs[66]);\n",
891 " T(qs[62]);\n",
892 " SqrtX(qs[68]);\n",
893 " SqrtX(qs[69]);\n",
894 " T(qs[0]);\n",
895 " SqrtY(qs[1]);\n",
896 " CZ(qs[2], qs[3]);\n",
897 " SqrtX(qs[4]);\n",
898 " SqrtX(qs[6]);\n",
899 " SqrtX(qs[8]);\n",
900 " CZ(qs[9], qs[10]);\n",
901 " SqrtY(qs[13]);\n",
902 " CZ(qs[14], qs[15]);\n",
903 " SqrtX(qs[17]);\n",
904 " CZ(qs[18], qs[19]);\n",
905 " T(qs[20]);\n",
906 " CZ(qs[21], qs[22]);\n",
907 " SqrtX(qs[23]);\n",
908 " T(qs[24]);\n",
909 " CZ(qs[25], qs[26]);\n",
910 " SqrtY(qs[27]);\n",
911 " T(qs[28]);\n",
912 " SqrtY(qs[29]);\n",
913 " SqrtX(qs[31]);\n",
914 " T(qs[32]);\n",
915 " CZ(qs[33], qs[34]);\n",
916 " SqrtX(qs[35]);\n",
917 " T(qs[36]);\n",
918 " CZ(qs[37], qs[38]);\n",
919 " SqrtY(qs[39]);\n",
920 " T(qs[40]);\n",
921 " CZ(qs[41], qs[42]);\n",
922 " SqrtX(qs[44]);\n",
923 " CZ(qs[45], qs[46]);\n",
924 " SqrtY(qs[48]);\n",
925 " T(qs[49]);\n",
926 " SqrtX(qs[51]);\n",
927 " CZ(qs[52], qs[53]);\n",
928 " SqrtX(qs[55]);\n",
929 " CZ(qs[56], qs[57]);\n",
930 " SqrtX(qs[59]);\n",
931 " T(qs[60]);\n",
932 " CZ(qs[61], qs[62]);\n",
933 " CZ(qs[64], qs[65]);\n",
934 " SqrtY(qs[66]);\n",
935 " T(qs[68]);\n",
936 " T(qs[69]);\n",
937 " T(qs[1]);\n",
938 " SqrtY(qs[2]);\n",
939 " CZ(qs[3], qs[8]);\n",
940 " T(qs[4]);\n",
941 " CZ(qs[5], qs[10]);\n",
942 " T(qs[6]);\n",
943 " SqrtY(qs[9]);\n",
944 " CZ(qs[12], qs[21]);\n",
945 " T(qs[13]);\n",
946 " CZ(qs[14], qs[23]);\n",
947 " SqrtX(qs[15]);\n",
948 " CZ(qs[16], qs[25]);\n",
949 " T(qs[17]);\n",
950 " CZ(qs[18], qs[27]);\n",
951 " SqrtY(qs[19]);\n",
952 " SqrtX(qs[22]);\n",
953 " SqrtX(qs[26]);\n",
954 " T(qs[29]);\n",
955 " CZ(qs[30], qs[40]);\n",
956 " T(qs[31]);\n",
957 " CZ(qs[32], qs[42]);\n",
958 " SqrtX(qs[33]);\n",
959 " CZ(qs[34], qs[44]);\n",
960 " T(qs[35]);\n",
961 " CZ(qs[36], qs[46]);\n",
962 " SqrtX(qs[37]);\n",
963 " CZ(qs[38], qs[48]);\n",
964 " T(qs[39]);\n",
965 " SqrtY(qs[41]);\n",
966 " SqrtX(qs[45]);\n",
967 " T(qs[51]);\n",
968 " CZ(qs[52], qs[59]);\n",
969 " SqrtX(qs[53]);\n",
970 " CZ(qs[54], qs[61]);\n",
971 " T(qs[55]);\n",
972 " CZ(qs[56], qs[63]);\n",
973 " SqrtX(qs[57]);\n",
974 " SqrtX(qs[62]);\n",
975 " SqrtY(qs[64]);\n",
976 " CZ(qs[65], qs[68]);\n",
977 " T(qs[66]);\n",
978 " T(qs[2]);\n",
979 " CZ(qs[3], qs[4]);\n",
980 " SqrtX(qs[5]);\n",
981 " CZ(qs[6], qs[7]);\n",
982 " SqrtY(qs[8]);\n",
983 " T(qs[9]);\n",
984 " CZ(qs[10], qs[11]);\n",
985 " SqrtY(qs[12]);\n",
986 " SqrtX(qs[14]);\n",
987 " CZ(qs[15], qs[16]);\n",
988 " SqrtX(qs[18]);\n",
989 " T(qs[19]);\n",
990 " SqrtY(qs[21]);\n",
991 " CZ(qs[22], qs[23]);\n",
992 " SqrtY(qs[25]);\n",
993 " CZ(qs[26], qs[27]);\n",
994 " CZ(qs[30], qs[31]);\n",
995 " SqrtX(qs[32]);\n",
996 " T(qs[33]);\n",
997 " CZ(qs[34], qs[35]);\n",
998 " SqrtY(qs[36]);\n",
999 " T(qs[37]);\n",
1000 " CZ(qs[38], qs[39]);\n",
1001 " SqrtX(qs[40]);\n",
1002 " T(qs[41]);\n",
1003 " CZ(qs[42], qs[43]);\n",
1004 " SqrtX(qs[44]);\n",
1005 " T(qs[45]);\n",
1006 " CZ(qs[46], qs[47]);\n",
1007 " SqrtX(qs[48]);\n",
1008 " SqrtY(qs[52]);\n",
1009 " CZ(qs[53], qs[54]);\n",
1010 " SqrtX(qs[56]);\n",
1011 " T(qs[57]);\n",
1012 " CZ(qs[58], qs[59]);\n",
1013 " SqrtY(qs[61]);\n",
1014 " CZ(qs[62], qs[63]);\n",
1015 " T(qs[64]);\n",
1016 " CZ(qs[65], qs[66]);\n",
1017 " SqrtX(qs[68]);\n",
1018 " CZ(qs[0], qs[3]);\n",
1019 " SqrtX(qs[4]);\n",
1020 " T(qs[5]);\n",
1021 " SqrtY(qs[6]);\n",
1022 " CZ(qs[7], qs[14]);\n",
1023 " T(qs[8]);\n",
1024 " CZ(qs[9], qs[16]);\n",
1025 " SqrtY(qs[10]);\n",
1026 " CZ(qs[11], qs[18]);\n",
1027 " T(qs[12]);\n",
1028 " SqrtY(qs[15]);\n",
1029 " CZ(qs[20], qs[30]);\n",
1030 " T(qs[21]);\n",
1031 " CZ(qs[22], qs[32]);\n",
1032 " SqrtX(qs[23]);\n",
1033 " CZ(qs[24], qs[34]);\n",
1034 " T(qs[25]);\n",
1035 " CZ(qs[26], qs[36]);\n",
1036 " SqrtX(qs[27]);\n",
1037 " CZ(qs[28], qs[38]);\n",
1038 " SqrtX(qs[31]);\n",
1039 " SqrtY(qs[35]);\n",
1040 " SqrtY(qs[39]);\n",
1041 " T(qs[40]);\n",
1042 " CZ(qs[41], qs[50]);\n",
1043 " SqrtY(qs[42]);\n",
1044 " CZ(qs[43], qs[52]);\n",
1045 " T(qs[44]);\n",
1046 " CZ(qs[45], qs[54]);\n",
1047 " SqrtY(qs[46]);\n",
1048 " CZ(qs[47], qs[56]);\n",
1049 " T(qs[48]);\n",
1050 " SqrtY(qs[53]);\n",
1051 " SqrtX(qs[58]);\n",
1052 " SqrtX(qs[59]);\n",
1053 " CZ(qs[60], qs[65]);\n",
1054 " T(qs[61]);\n",
1055 " CZ(qs[62], qs[67]);\n",
1056 " SqrtY(qs[63]);\n",
1057 " SqrtX(qs[66]);\n",
1058 " T(qs[68]);\n",
1059 " SqrtX(qs[0]);\n",
1060 " SqrtX(qs[3]);\n",
1061 " CZ(qs[4], qs[5]);\n",
1062 " T(qs[6]);\n",
1063 " CZ(qs[7], qs[8]);\n",
1064 " SqrtX(qs[9]);\n",
1065 " T(qs[10]);\n",
1066 " SqrtY(qs[11]);\n",
1067 " CZ(qs[12], qs[13]);\n",
1068 " SqrtX(qs[14]);\n",
1069 " T(qs[15]);\n",
1070 " CZ(qs[16], qs[17]);\n",
1071 " SqrtX(qs[18]);\n",
1072 " SqrtX(qs[20]);\n",
1073 " SqrtY(qs[22]);\n",
1074 " CZ(qs[23], qs[24]);\n",
1075 " SqrtY(qs[26]);\n",
1076 " CZ(qs[27], qs[28]);\n",
1077 " SqrtY(qs[30]);\n",
1078 " CZ(qs[31], qs[32]);\n",
1079 " SqrtY(qs[34]);\n",
1080 " CZ(qs[35], qs[36]);\n",
1081 " SqrtY(qs[38]);\n",
1082 " T(qs[39]);\n",
1083 " SqrtY(qs[41]);\n",
1084 " T(qs[42]);\n",
1085 " CZ(qs[43], qs[44]);\n",
1086 " SqrtY(qs[45]);\n",
1087 " T(qs[46]);\n",
1088 " CZ(qs[47], qs[48]);\n",
1089 " CZ(qs[50], qs[51]);\n",
1090 " SqrtY(qs[52]);\n",
1091 " T(qs[53]);\n",
1092 " CZ(qs[54], qs[55]);\n",
1093 " SqrtY(qs[56]);\n",
1094 " T(qs[58]);\n",
1095 " CZ(qs[59], qs[60]);\n",
1096 " SqrtY(qs[62]);\n",
1097 " T(qs[63]);\n",
1098 " SqrtY(qs[65]);\n",
1099 " CZ(qs[66], qs[67]);\n",
1100 " T(qs[0]);\n",
1101 " CZ(qs[2], qs[7]);\n",
1102 " T(qs[3]);\n",
1103 " CZ(qs[4], qs[9]);\n",
1104 " SqrtY(qs[5]);\n",
1105 " SqrtX(qs[8]);\n",
1106 " T(qs[11]);\n",
1107 " SqrtY(qs[12]);\n",
1108 " CZ(qs[13], qs[22]);\n",
1109 " T(qs[14]);\n",
1110 " CZ(qs[15], qs[24]);\n",
1111 " SqrtY(qs[16]);\n",
1112 " CZ(qs[17], qs[26]);\n",
1113 " T(qs[18]);\n",
1114 " CZ(qs[19], qs[28]);\n",
1115 " T(qs[20]);\n",
1116 " SqrtY(qs[23]);\n",
1117 " SqrtX(qs[27]);\n",
1118 " T(qs[30]);\n",
1119 " CZ(qs[31], qs[41]);\n",
1120 " SqrtY(qs[32]);\n",
1121 " CZ(qs[33], qs[43]);\n",
1122 " T(qs[34]);\n",
1123 " CZ(qs[35], qs[45]);\n",
1124 " SqrtX(qs[36]);\n",
1125 " CZ(qs[37], qs[47]);\n",
1126 " T(qs[38]);\n",
1127 " CZ(qs[39], qs[49]);\n",
1128 " SqrtY(qs[44]);\n",
1129 " SqrtY(qs[48]);\n",
1130 " SqrtY(qs[50]);\n",
1131 " CZ(qs[51], qs[58]);\n",
1132 " T(qs[52]);\n",
1133 " CZ(qs[53], qs[60]);\n",
1134 " SqrtY(qs[54]);\n",
1135 " CZ(qs[55], qs[62]);\n",
1136 " T(qs[56]);\n",
1137 " SqrtX(qs[59]);\n",
1138 " T(qs[65]);\n",
1139 " CZ(qs[66], qs[69]);\n",
1140 " SqrtX(qs[67]);\n",
1141 " CZ(qs[0], qs[1]);\n",
1142 " SqrtY(qs[2]);\n",
1143 " SqrtX(qs[4]);\n",
1144 " T(qs[5]);\n",
1145 " SqrtX(qs[7]);\n",
1146 " CZ(qs[8], qs[9]);\n",
1147 " T(qs[12]);\n",
1148 " CZ(qs[13], qs[14]);\n",
1149 " SqrtY(qs[15]);\n",
1150 " T(qs[16]);\n",
1151 " CZ(qs[17], qs[18]);\n",
1152 " SqrtY(qs[19]);\n",
1153 " CZ(qs[20], qs[21]);\n",
1154 " SqrtX(qs[22]);\n",
1155 " T(qs[23]);\n",
1156 " CZ(qs[24], qs[25]);\n",
1157 " SqrtX(qs[26]);\n",
1158 " T(qs[27]);\n",
1159 " CZ(qs[28], qs[29]);\n",
1160 " SqrtY(qs[31]);\n",
1161 " CZ(qs[32], qs[33]);\n",
1162 " SqrtX(qs[35]);\n",
1163 " CZ(qs[36], qs[37]);\n",
1164 " SqrtY(qs[39]);\n",
1165 " CZ(qs[40], qs[41]);\n",
1166 " SqrtX(qs[43]);\n",
1167 " CZ(qs[44], qs[45]);\n",
1168 " SqrtX(qs[47]);\n",
1169 " CZ(qs[48], qs[49]);\n",
1170 " T(qs[50]);\n",
1171 " CZ(qs[51], qs[52]);\n",
1172 " SqrtY(qs[53]);\n",
1173 " T(qs[54]);\n",
1174 " CZ(qs[55], qs[56]);\n",
1175 " SqrtX(qs[58]);\n",
1176 " T(qs[59]);\n",
1177 " CZ(qs[60], qs[61]);\n",
1178 " SqrtX(qs[62]);\n",
1179 " SqrtX(qs[66]);\n",
1180 " T(qs[67]);\n",
1181 " CZ(qs[68], qs[69]);\n",
1182 " SqrtX(qs[0]);\n",
1183 " CZ(qs[1], qs[4]);\n",
1184 " T(qs[2]);\n",
1185 " CZ(qs[6], qs[13]);\n",
1186 " T(qs[7]);\n",
1187 " CZ(qs[8], qs[15]);\n",
1188 " SqrtY(qs[9]);\n",
1189 " CZ(qs[10], qs[17]);\n",
1190 " SqrtY(qs[14]);\n",
1191 " SqrtY(qs[18]);\n",
1192 " T(qs[19]);\n",
1193 " SqrtX(qs[20]);\n",
1194 " CZ(qs[21], qs[31]);\n",
1195 " T(qs[22]);\n",
1196 " CZ(qs[23], qs[33]);\n",
1197 " SqrtY(qs[24]);\n",
1198 " CZ(qs[25], qs[35]);\n",
1199 " T(qs[26]);\n",
1200 " CZ(qs[27], qs[37]);\n",
1201 " SqrtX(qs[28]);\n",
1202 " CZ(qs[29], qs[39]);\n",
1203 " SqrtY(qs[32]);\n",
1204 " SqrtX(qs[36]);\n",
1205 " SqrtX(qs[40]);\n",
1206 " SqrtX(qs[41]);\n",
1207 " CZ(qs[42], qs[51]);\n",
1208 " T(qs[43]);\n",
1209 " CZ(qs[44], qs[53]);\n",
1210 " SqrtX(qs[45]);\n",
1211 " CZ(qs[46], qs[55]);\n",
1212 " T(qs[47]);\n",
1213 " CZ(qs[48], qs[57]);\n",
1214 " SqrtX(qs[49]);\n",
1215 " SqrtY(qs[52]);\n",
1216 " SqrtY(qs[56]);\n",
1217 " T(qs[58]);\n",
1218 " CZ(qs[59], qs[64]);\n",
1219 " SqrtX(qs[60]);\n",
1220 " CZ(qs[61], qs[66]);\n",
1221 " T(qs[62]);\n",
1222 " SqrtY(qs[68]);\n",
1223 " SqrtX(qs[69]);\n",
1224 " T(qs[0]);\n",
1225 " SqrtX(qs[1]);\n",
1226 " CZ(qs[2], qs[3]);\n",
1227 " SqrtY(qs[4]);\n",
1228 " SqrtX(qs[6]);\n",
1229 " SqrtY(qs[8]);\n",
1230 " CZ(qs[9], qs[10]);\n",
1231 " SqrtY(qs[13]);\n",
1232 " CZ(qs[14], qs[15]);\n",
1233 " SqrtX(qs[17]);\n",
1234 " CZ(qs[18], qs[19]);\n",
1235 " T(qs[20]);\n",
1236 " CZ(qs[21], qs[22]);\n",
1237 " SqrtY(qs[23]);\n",
1238 " T(qs[24]);\n",
1239 " CZ(qs[25], qs[26]);\n",
1240 " SqrtX(qs[27]);\n",
1241 " T(qs[28]);\n",
1242 " SqrtX(qs[29]);\n",
1243 " SqrtY(qs[31]);\n",
1244 " T(qs[32]);\n",
1245 " CZ(qs[33], qs[34]);\n",
1246 " SqrtY(qs[35]);\n",
1247 " T(qs[36]);\n",
1248 " CZ(qs[37], qs[38]);\n",
1249 " SqrtY(qs[39]);\n",
1250 " T(qs[40]);\n",
1251 " CZ(qs[41], qs[42]);\n",
1252 " SqrtX(qs[44]);\n",
1253 " CZ(qs[45], qs[46]);\n",
1254 " SqrtY(qs[48]);\n",
1255 " T(qs[49]);\n",
1256 " SqrtY(qs[51]);\n",
1257 " CZ(qs[52], qs[53]);\n",
1258 " SqrtY(qs[55]);\n",
1259 " CZ(qs[56], qs[57]);\n",
1260 " SqrtY(qs[59]);\n",
1261 " T(qs[60]);\n",
1262 " CZ(qs[61], qs[62]);\n",
1263 " CZ(qs[64], qs[65]);\n",
1264 " SqrtY(qs[66]);\n",
1265 " T(qs[68]);\n",
1266 " T(qs[69]);\n",
1267 " T(qs[1]);\n",
1268 " SqrtY(qs[2]);\n",
1269 " CZ(qs[3], qs[8]);\n",
1270 " T(qs[4]);\n",
1271 " CZ(qs[5], qs[10]);\n",
1272 " T(qs[6]);\n",
1273 " SqrtY(qs[9]);\n",
1274 " CZ(qs[12], qs[21]);\n",
1275 " T(qs[13]);\n",
1276 " CZ(qs[14], qs[23]);\n",
1277 " SqrtY(qs[15]);\n",
1278 " CZ(qs[16], qs[25]);\n",
1279 " T(qs[17]);\n",
1280 " CZ(qs[18], qs[27]);\n",
1281 " SqrtX(qs[19]);\n",
1282 " SqrtY(qs[22]);\n",
1283 " SqrtX(qs[26]);\n",
1284 " T(qs[29]);\n",
1285 " CZ(qs[30], qs[40]);\n",
1286 " T(qs[31]);\n",
1287 " CZ(qs[32], qs[42]);\n",
1288 " SqrtY(qs[33]);\n",
1289 " CZ(qs[34], qs[44]);\n",
1290 " T(qs[35]);\n",
1291 " CZ(qs[36], qs[46]);\n",
1292 " SqrtX(qs[37]);\n",
1293 " CZ(qs[38], qs[48]);\n",
1294 " T(qs[39]);\n",
1295 " SqrtY(qs[41]);\n",
1296 " SqrtX(qs[45]);\n",
1297 " T(qs[51]);\n",
1298 " CZ(qs[52], qs[59]);\n",
1299 " SqrtX(qs[53]);\n",
1300 " CZ(qs[54], qs[61]);\n",
1301 " T(qs[55]);\n",
1302 " CZ(qs[56], qs[63]);\n",
1303 " SqrtY(qs[57]);\n",
1304 " SqrtX(qs[62]);\n",
1305 " SqrtY(qs[64]);\n",
1306 " CZ(qs[65], qs[68]);\n",
1307 " T(qs[66]);\n",
1308 " T(qs[2]);\n",
1309 " CZ(qs[3], qs[4]);\n",
1310 " SqrtY(qs[5]);\n",
1311 " CZ(qs[6], qs[7]);\n",
1312 " SqrtY(qs[8]);\n",
1313 " T(qs[9]);\n",
1314 " CZ(qs[10], qs[11]);\n",
1315 " SqrtY(qs[12]);\n",
1316 " SqrtX(qs[14]);\n",
1317 " CZ(qs[15], qs[16]);\n",
1318 " SqrtX(qs[18]);\n",
1319 " T(qs[19]);\n",
1320 " SqrtY(qs[21]);\n",
1321 " CZ(qs[22], qs[23]);\n",
1322 " SqrtY(qs[25]);\n",
1323 " CZ(qs[26], qs[27]);\n",
1324 " CZ(qs[30], qs[31]);\n",
1325 " SqrtY(qs[32]);\n",
1326 " T(qs[33]);\n",
1327 " CZ(qs[34], qs[35]);\n",
1328 " SqrtY(qs[36]);\n",
1329 " T(qs[37]);\n",
1330 " CZ(qs[38], qs[39]);\n",
1331 " SqrtX(qs[40]);\n",
1332 " T(qs[41]);\n",
1333 " CZ(qs[42], qs[43]);\n",
1334 " SqrtX(qs[44]);\n",
1335 " T(qs[45]);\n",
1336 " CZ(qs[46], qs[47]);\n",
1337 " SqrtX(qs[48]);\n",
1338 " SqrtX(qs[52]);\n",
1339 " CZ(qs[53], qs[54]);\n",
1340 " SqrtY(qs[56]);\n",
1341 " T(qs[57]);\n",
1342 " CZ(qs[58], qs[59]);\n",
1343 " SqrtY(qs[61]);\n",
1344 " CZ(qs[62], qs[63]);\n",
1345 " T(qs[64]);\n",
1346 " CZ(qs[65], qs[66]);\n",
1347 " SqrtY(qs[68]);\n",
1348 " CZ(qs[0], qs[3]);\n",
1349 " SqrtX(qs[4]);\n",
1350 " T(qs[5]);\n",
1351 " SqrtX(qs[6]);\n",
1352 " CZ(qs[7], qs[14]);\n",
1353 " T(qs[8]);\n",
1354 " CZ(qs[9], qs[16]);\n",
1355 " SqrtY(qs[10]);\n",
1356 " CZ(qs[11], qs[18]);\n",
1357 " T(qs[12]);\n",
1358 " SqrtY(qs[15]);\n",
1359 " CZ(qs[20], qs[30]);\n",
1360 " T(qs[21]);\n",
1361 " CZ(qs[22], qs[32]);\n",
1362 " SqrtX(qs[23]);\n",
1363 " CZ(qs[24], qs[34]);\n",
1364 " T(qs[25]);\n",
1365 " CZ(qs[26], qs[36]);\n",
1366 " SqrtX(qs[27]);\n",
1367 " CZ(qs[28], qs[38]);\n",
1368 " SqrtY(qs[31]);\n",
1369 " SqrtX(qs[35]);\n",
1370 " SqrtY(qs[39]);\n",
1371 " T(qs[40]);\n",
1372 " CZ(qs[41], qs[50]);\n",
1373 " SqrtY(qs[42]);\n",
1374 " CZ(qs[43], qs[52]);\n",
1375 " T(qs[44]);\n",
1376 " CZ(qs[45], qs[54]);\n",
1377 " SqrtY(qs[46]);\n",
1378 " CZ(qs[47], qs[56]);\n",
1379 " T(qs[48]);\n",
1380 " SqrtX(qs[53]);\n",
1381 " SqrtX(qs[58]);\n",
1382 " SqrtX(qs[59]);\n",
1383 " CZ(qs[60], qs[65]);\n",
1384 " T(qs[61]);\n",
1385 " CZ(qs[62], qs[67]);\n",
1386 " SqrtX(qs[63]);\n",
1387 " SqrtX(qs[66]);\n",
1388 " T(qs[68]);\n",
1389 " SqrtX(qs[0]);\n",
1390 " SqrtY(qs[3]);\n",
1391 " CZ(qs[4], qs[5]);\n",
1392 " T(qs[6]);\n",
1393 " CZ(qs[7], qs[8]);\n",
1394 " SqrtY(qs[9]);\n",
1395 " T(qs[10]);\n",
1396 " SqrtX(qs[11]);\n",
1397 " CZ(qs[12], qs[13]);\n",
1398 " SqrtY(qs[14]);\n",
1399 " T(qs[15]);\n",
1400 " CZ(qs[16], qs[17]);\n",
1401 " SqrtX(qs[18]);\n",
1402 " SqrtX(qs[20]);\n",
1403 " SqrtY(qs[22]);\n",
1404 " CZ(qs[23], qs[24]);\n",
1405 " SqrtY(qs[26]);\n",
1406 " CZ(qs[27], qs[28]);\n",
1407 " SqrtX(qs[30]);\n",
1408 " CZ(qs[31], qs[32]);\n",
1409 " SqrtX(qs[34]);\n",
1410 " CZ(qs[35], qs[36]);\n",
1411 " SqrtX(qs[38]);\n",
1412 " T(qs[39]);\n",
1413 " SqrtX(qs[41]);\n",
1414 " T(qs[42]);\n",
1415 " CZ(qs[43], qs[44]);\n",
1416 " SqrtY(qs[45]);\n",
1417 " T(qs[46]);\n",
1418 " CZ(qs[47], qs[48]);\n",
1419 " CZ(qs[50], qs[51]);\n",
1420 " SqrtY(qs[52]);\n",
1421 " T(qs[53]);\n",
1422 " CZ(qs[54], qs[55]);\n",
1423 " SqrtX(qs[56]);\n",
1424 " T(qs[58]);\n",
1425 " CZ(qs[59], qs[60]);\n",
1426 " SqrtX(qs[62]);\n",
1427 " T(qs[63]);\n",
1428 " SqrtX(qs[65]);\n",
1429 " CZ(qs[66], qs[67]);\n",
1430 " T(qs[0]);\n",
1431 " CZ(qs[2], qs[7]);\n",
1432 " T(qs[3]);\n",
1433 " CZ(qs[4], qs[9]);\n",
1434 " SqrtY(qs[5]);\n",
1435 " SqrtX(qs[8]);\n",
1436 " T(qs[11]);\n",
1437 " SqrtY(qs[12]);\n",
1438 " CZ(qs[13], qs[22]);\n",
1439 " T(qs[14]);\n",
1440 " CZ(qs[15], qs[24]);\n",
1441 " SqrtX(qs[16]);\n",
1442 " CZ(qs[17], qs[26]);\n",
1443 " T(qs[18]);\n",
1444 " CZ(qs[19], qs[28]);\n",
1445 " T(qs[20]);\n",
1446 " SqrtX(qs[23]);\n",
1447 " SqrtX(qs[27]);\n",
1448 " T(qs[30]);\n",
1449 " CZ(qs[31], qs[41]);\n",
1450 " SqrtY(qs[32]);\n",
1451 " CZ(qs[33], qs[43]);\n",
1452 " T(qs[34]);\n",
1453 " CZ(qs[35], qs[45]);\n",
1454 " SqrtY(qs[36]);\n",
1455 " CZ(qs[37], qs[47]);\n",
1456 " T(qs[38]);\n",
1457 " CZ(qs[39], qs[49]);\n",
1458 " SqrtY(qs[44]);\n",
1459 " SqrtX(qs[48]);\n",
1460 " SqrtY(qs[50]);\n",
1461 " CZ(qs[51], qs[58]);\n",
1462 " T(qs[52]);\n",
1463 " CZ(qs[53], qs[60]);\n",
1464 " SqrtX(qs[54]);\n",
1465 " CZ(qs[55], qs[62]);\n",
1466 " T(qs[56]);\n",
1467 " SqrtY(qs[59]);\n",
1468 " T(qs[65]);\n",
1469 " CZ(qs[66], qs[69]);\n",
1470 " SqrtX(qs[67]);\n",
1471 " CZ(qs[0], qs[1]);\n",
1472 " SqrtY(qs[2]);\n",
1473 " SqrtY(qs[4]);\n",
1474 " T(qs[5]);\n",
1475 " SqrtY(qs[7]);\n",
1476 " CZ(qs[8], qs[9]);\n",
1477 " T(qs[12]);\n",
1478 " CZ(qs[13], qs[14]);\n",
1479 " SqrtX(qs[15]);\n",
1480 " T(qs[16]);\n",
1481 " CZ(qs[17], qs[18]);\n",
1482 " SqrtX(qs[19]);\n",
1483 " CZ(qs[20], qs[21]);\n",
1484 " SqrtY(qs[22]);\n",
1485 " T(qs[23]);\n",
1486 " CZ(qs[24], qs[25]);\n",
1487 " SqrtX(qs[26]);\n",
1488 " T(qs[27]);\n",
1489 " CZ(qs[28], qs[29]);\n",
1490 " SqrtX(qs[31]);\n",
1491 " CZ(qs[32], qs[33]);\n",
1492 " SqrtX(qs[35]);\n",
1493 " CZ(qs[36], qs[37]);\n",
1494 " SqrtX(qs[39]);\n",
1495 " CZ(qs[40], qs[41]);\n",
1496 " SqrtX(qs[43]);\n",
1497 " CZ(qs[44], qs[45]);\n",
1498 " SqrtX(qs[47]);\n",
1499 " CZ(qs[48], qs[49]);\n",
1500 " T(qs[50]);\n",
1501 " CZ(qs[51], qs[52]);\n",
1502 " SqrtX(qs[53]);\n",
1503 " T(qs[54]);\n",
1504 " CZ(qs[55], qs[56]);\n",
1505 " SqrtX(qs[58]);\n",
1506 " T(qs[59]);\n",
1507 " CZ(qs[60], qs[61]);\n",
1508 " SqrtY(qs[62]);\n",
1509 " SqrtY(qs[66]);\n",
1510 " T(qs[67]);\n",
1511 " CZ(qs[68], qs[69]);\n",
1512 " SqrtX(qs[0]);\n",
1513 " CZ(qs[1], qs[4]);\n",
1514 " T(qs[2]);\n",
1515 " CZ(qs[6], qs[13]);\n",
1516 " T(qs[7]);\n",
1517 " CZ(qs[8], qs[15]);\n",
1518 " SqrtX(qs[9]);\n",
1519 " CZ(qs[10], qs[17]);\n",
1520 " SqrtY(qs[14]);\n",
1521 " SqrtX(qs[18]);\n",
1522 " T(qs[19]);\n",
1523 " SqrtX(qs[20]);\n",
1524 " CZ(qs[21], qs[31]);\n",
1525 " T(qs[22]);\n",
1526 " CZ(qs[23], qs[33]);\n",
1527 " SqrtX(qs[24]);\n",
1528 " CZ(qs[25], qs[35]);\n",
1529 " T(qs[26]);\n",
1530 " CZ(qs[27], qs[37]);\n",
1531 " SqrtY(qs[28]);\n",
1532 " CZ(qs[29], qs[39]);\n",
1533 " SqrtX(qs[32]);\n",
1534 " SqrtX(qs[36]);\n",
1535 " SqrtX(qs[40]);\n",
1536 " SqrtY(qs[41]);\n",
1537 " CZ(qs[42], qs[51]);\n",
1538 " T(qs[43]);\n",
1539 " CZ(qs[44], qs[53]);\n",
1540 " SqrtX(qs[45]);\n",
1541 " CZ(qs[46], qs[55]);\n",
1542 " T(qs[47]);\n",
1543 " CZ(qs[48], qs[57]);\n",
1544 " SqrtX(qs[49]);\n",
1545 " SqrtX(qs[52]);\n",
1546 " SqrtX(qs[56]);\n",
1547 " T(qs[58]);\n",
1548 " CZ(qs[59], qs[64]);\n",
1549 " SqrtY(qs[60]);\n",
1550 " CZ(qs[61], qs[66]);\n",
1551 " T(qs[62]);\n",
1552 " SqrtY(qs[68]);\n",
1553 " SqrtX(qs[69]);\n",
1554 " T(qs[0]);\n",
1555 " SqrtY(qs[1]);\n",
1556 " CZ(qs[2], qs[3]);\n",
1557 " SqrtY(qs[4]);\n",
1558 " SqrtY(qs[6]);\n",
1559 " SqrtX(qs[8]);\n",
1560 " CZ(qs[9], qs[10]);\n",
1561 " SqrtX(qs[13]);\n",
1562 " CZ(qs[14], qs[15]);\n",
1563 " SqrtY(qs[17]);\n",
1564 " CZ(qs[18], qs[19]);\n",
1565 " T(qs[20]);\n",
1566 " CZ(qs[21], qs[22]);\n",
1567 " SqrtX(qs[23]);\n",
1568 " T(qs[24]);\n",
1569 " CZ(qs[25], qs[26]);\n",
1570 " SqrtX(qs[27]);\n",
1571 " T(qs[28]);\n",
1572 " SqrtX(qs[29]);\n",
1573 " SqrtY(qs[31]);\n",
1574 " T(qs[32]);\n",
1575 " CZ(qs[33], qs[34]);\n",
1576 " SqrtX(qs[35]);\n",
1577 " T(qs[36]);\n",
1578 " CZ(qs[37], qs[38]);\n",
1579 " SqrtX(qs[39]);\n",
1580 " T(qs[40]);\n",
1581 " CZ(qs[41], qs[42]);\n",
1582 " SqrtY(qs[44]);\n",
1583 " CZ(qs[45], qs[46]);\n",
1584 " SqrtX(qs[48]);\n",
1585 " T(qs[49]);\n",
1586 " SqrtX(qs[51]);\n",
1587 " CZ(qs[52], qs[53]);\n",
1588 " SqrtX(qs[55]);\n",
1589 " CZ(qs[56], qs[57]);\n",
1590 " SqrtY(qs[59]);\n",
1591 " T(qs[60]);\n",
1592 " CZ(qs[61], qs[62]);\n",
1593 " CZ(qs[64], qs[65]);\n",
1594 " SqrtY(qs[66]);\n",
1595 " T(qs[68]);\n",
1596 " T(qs[69]);\n",
1597 " T(qs[1]);\n",
1598 " SqrtX(qs[2]);\n",
1599 " CZ(qs[3], qs[8]);\n",
1600 " T(qs[4]);\n",
1601 " CZ(qs[5], qs[10]);\n",
1602 " T(qs[6]);\n",
1603 " SqrtX(qs[9]);\n",
1604 " CZ(qs[12], qs[21]);\n",
1605 " T(qs[13]);\n",
1606 " CZ(qs[14], qs[23]);\n",
1607 " SqrtY(qs[15]);\n",
1608 " CZ(qs[16], qs[25]);\n",
1609 " T(qs[17]);\n",
1610 " CZ(qs[18], qs[27]);\n",
1611 " SqrtY(qs[19]);\n",
1612 " SqrtY(qs[22]);\n",
1613 " SqrtX(qs[26]);\n",
1614 " T(qs[29]);\n",
1615 " CZ(qs[30], qs[40]);\n",
1616 " T(qs[31]);\n",
1617 " CZ(qs[32], qs[42]);\n",
1618 " SqrtY(qs[33]);\n",
1619 " CZ(qs[34], qs[44]);\n",
1620 " T(qs[35]);\n",
1621 " CZ(qs[36], qs[46]);\n",
1622 " SqrtX(qs[37]);\n",
1623 " CZ(qs[38], qs[48]);\n",
1624 " T(qs[39]);\n",
1625 " SqrtY(qs[41]);\n",
1626 " SqrtY(qs[45]);\n",
1627 " T(qs[51]);\n",
1628 " CZ(qs[52], qs[59]);\n",
1629 " SqrtX(qs[53]);\n",
1630 " CZ(qs[54], qs[61]);\n",
1631 " T(qs[55]);\n",
1632 " CZ(qs[56], qs[63]);\n",
1633 " SqrtY(qs[57]);\n",
1634 " SqrtX(qs[62]);\n",
1635 " SqrtY(qs[64]);\n",
1636 " CZ(qs[65], qs[68]);\n",
1637 " T(qs[66]);\n",
1638 " T(qs[2]);\n",
1639 " CZ(qs[3], qs[4]);\n",
1640 " SqrtX(qs[5]);\n",
1641 " CZ(qs[6], qs[7]);\n",
1642 " SqrtY(qs[8]);\n",
1643 " T(qs[9]);\n",
1644 " CZ(qs[10], qs[11]);\n",
1645 " SqrtX(qs[12]);\n",
1646 " SqrtX(qs[14]);\n",
1647 " CZ(qs[15], qs[16]);\n",
1648 " SqrtY(qs[18]);\n",
1649 " T(qs[19]);\n",
1650 " SqrtY(qs[21]);\n",
1651 " CZ(qs[22], qs[23]);\n",
1652 " SqrtX(qs[25]);\n",
1653 " CZ(qs[26], qs[27]);\n",
1654 " CZ(qs[30], qs[31]);\n",
1655 " SqrtX(qs[32]);\n",
1656 " T(qs[33]);\n",
1657 " CZ(qs[34], qs[35]);\n",
1658 " SqrtX(qs[36]);\n",
1659 " T(qs[37]);\n",
1660 " CZ(qs[38], qs[39]);\n",
1661 " SqrtX(qs[40]);\n",
1662 " T(qs[41]);\n",
1663 " CZ(qs[42], qs[43]);\n",
1664 " SqrtY(qs[44]);\n",
1665 " T(qs[45]);\n",
1666 " CZ(qs[46], qs[47]);\n",
1667 " SqrtY(qs[48]);\n",
1668 " SqrtY(qs[52]);\n",
1669 " CZ(qs[53], qs[54]);\n",
1670 " SqrtX(qs[56]);\n",
1671 " T(qs[57]);\n",
1672 " CZ(qs[58], qs[59]);\n",
1673 " SqrtY(qs[61]);\n",
1674 " CZ(qs[62], qs[63]);\n",
1675 " T(qs[64]);\n",
1676 " CZ(qs[65], qs[66]);\n",
1677 " SqrtX(qs[68]);\n",
1678 " CZ(qs[0], qs[3]);\n",
1679 " SqrtX(qs[4]);\n",
1680 " T(qs[5]);\n",
1681 " SqrtY(qs[6]);\n",
1682 " CZ(qs[7], qs[14]);\n",
1683 " T(qs[8]);\n",
1684 " CZ(qs[9], qs[16]);\n",
1685 " SqrtX(qs[10]);\n",
1686 " CZ(qs[11], qs[18]);\n",
1687 " T(qs[12]);\n",
1688 " SqrtY(qs[15]);\n",
1689 " CZ(qs[20], qs[30]);\n",
1690 " T(qs[21]);\n",
1691 " CZ(qs[22], qs[32]);\n",
1692 " SqrtX(qs[23]);\n",
1693 " CZ(qs[24], qs[34]);\n",
1694 " T(qs[25]);\n",
1695 " CZ(qs[26], qs[36]);\n",
1696 " SqrtX(qs[27]);\n",
1697 " CZ(qs[28], qs[38]);\n",
1698 " SqrtX(qs[31]);\n",
1699 " SqrtY(qs[35]);\n",
1700 " SqrtY(qs[39]);\n",
1701 " T(qs[40]);\n",
1702 " CZ(qs[41], qs[50]);\n",
1703 " SqrtY(qs[42]);\n",
1704 " CZ(qs[43], qs[52]);\n",
1705 " T(qs[44]);\n",
1706 " CZ(qs[45], qs[54]);\n",
1707 " SqrtY(qs[46]);\n",
1708 " CZ(qs[47], qs[56]);\n",
1709 " T(qs[48]);\n",
1710 " SqrtX(qs[53]);\n",
1711 " SqrtY(qs[58]);\n",
1712 " SqrtX(qs[59]);\n",
1713 " CZ(qs[60], qs[65]);\n",
1714 " T(qs[61]);\n",
1715 " CZ(qs[62], qs[67]);\n",
1716 " SqrtY(qs[63]);\n",
1717 " SqrtY(qs[66]);\n",
1718 " T(qs[68]);\n",
1719 " for i in 0 .. 70 - 1 {\n",
1720 " H(qs[i]);\n",
1721 " }\n",
1722 "}\n"
1723 ]
1724 },
1725 {
1726 "cell_type": "markdown",
1727 "metadata": {},
1728 "source": [
1729 "## Running the Resource Estimator\n",
1730 "\n",
1731 "Now we can estimate the resources required for the generated Q# program."
1732 ]
1733 },
1734 {
1735 "cell_type": "code",
1736 "execution_count": null,
1737 "metadata": {},
1738 "outputs": [],
1739 "source": [
1740 "result = qsharp.estimate(\"RunHardcodedCircuit()\")\n",
1741 "result"
1742 ]
1743 },
1744 {
1745 "cell_type": "code",
1746 "execution_count": null,
1747 "metadata": {
1748 "jupyter": {
1749 "outputs_hidden": false,
1750 "source_hidden": false
1751 },
1752 "nteract": {
1753 "transient": {
1754 "deleting": false
1755 }
1756 }
1757 },
1758 "outputs": [],
1759 "source": [
1760 "logical_qubits = result['physicalCounts']['breakdown']['algorithmicLogicalQubits']\n",
1761 "logical_depth = result['physicalCounts']['breakdown']['algorithmicLogicalDepth']\n",
1762 "# We take the runtime of the circuit from the paper https://arxiv.org/pdf/1907.11217.pdf, table 1.\n",
1763 "target_runtime = 580.7\n",
1764 "target_rqops = logical_qubits * logical_depth / target_runtime\n",
1765 "\n",
1766 "print(f\"Logical qubits = {logical_qubits}\")\n",
1767 "print(f\"Logical depth = {logical_depth}\")\n",
1768 "print(f\"Target runtime = {target_runtime} seconds\")\n",
1769 "print(f\"Target rQOPS = {target_rqops}\")\n",
1770 "\n",
1771 "print(f\"Execution time on hardware = {result['physicalCounts']['runtime'] * 1e-9} seconds\")\n",
1772 "print(f\"rQOPS for execution on hardware = {result['physicalCounts']['rqops']}\")"
1773 ]
1774 }
1775 ],
1776 "metadata": {
1777 "kernel_info": {
1778 "name": "python3"
1779 },
1780 "kernelspec": {
1781 "display_name": "Python 3 (ipykernel)",
1782 "language": "python",
1783 "name": "python3"
1784 },
1785 "language_info": {
1786 "codemirror_mode": {
1787 "name": "ipython",
1788 "version": 3
1789 },
1790 "file_extension": ".py",
1791 "mimetype": "text/x-python",
1792 "name": "python",
1793 "nbconvert_exporter": "python",
1794 "pygments_lexer": "ipython3",
1795 "version": "3.11.7"
1796 }
1797 },
1798 "nbformat": 4,
1799 "nbformat_minor": 1
1800}
1801