microsoft/qdk

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
alex/1898

Branches

Tags

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

Clone

HTTPS

Download ZIP

samples/estimation/estimation-hardcoded-circuit.ipynb

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