##// END OF EJS Templates
update example notebooks after sort_keys and split_lines
MinRK -
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -1,282 +1,402 b''
1 {
1 {
2 "metadata": {
3 "name": "basic_quantum"
4 },
5 "nbformat": 2,
2 "worksheets": [
6 "worksheets": [
3 {
7 {
4 "cells": [
8 "cells": [
5 {
9 {
6 "source": "<h1>Basic Symbolic Quantum Mechanics</h1>",
10 "cell_type": "markdown",
7 "cell_type": "markdown"
11 "source": [
12 "<h1>Basic Symbolic Quantum Mechanics</h1>"
13 ]
8 },
14 },
9 {
15 {
10 "cell_type": "code",
16 "cell_type": "code",
17 "collapsed": true,
18 "input": [
19 "%load_ext sympyprinting"
20 ],
11 "language": "python",
21 "language": "python",
12 "outputs": [],
22 "outputs": [],
13 "collapsed": true,
23 "prompt_number": 18
14 "prompt_number": 18,
15 "input": "%load_ext sympyprinting"
16 },
24 },
17 {
25 {
18 "cell_type": "code",
26 "cell_type": "code",
27 "collapsed": true,
28 "input": [
29 "from sympy import sqrt, symbols, Rational",
30 "from sympy import expand, Eq, Symbol, simplify, exp, sin",
31 "from sympy.physics.quantum import *",
32 "from sympy.physics.quantum.qubit import *",
33 "from sympy.physics.quantum.gate import *",
34 "from sympy.physics.quantum.grover import *",
35 "from sympy.physics.quantum.qft import QFT, IQFT, Fourier",
36 "from sympy.physics.quantum.circuitplot import circuit_plot"
37 ],
19 "language": "python",
38 "language": "python",
20 "outputs": [],
39 "outputs": [],
21 "collapsed": true,
40 "prompt_number": 19
22 "prompt_number": 19,
23 "input": "from sympy import sqrt, symbols, Rational\nfrom sympy import expand, Eq, Symbol, simplify, exp, sin\nfrom sympy.physics.quantum import *\nfrom sympy.physics.quantum.qubit import *\nfrom sympy.physics.quantum.gate import *\nfrom sympy.physics.quantum.grover import *\nfrom sympy.physics.quantum.qft import QFT, IQFT, Fourier\nfrom sympy.physics.quantum.circuitplot import circuit_plot"
24 },
41 },
25 {
42 {
26 "source": "<h2>Bras and Kets</h2>",
43 "cell_type": "markdown",
27 "cell_type": "markdown"
44 "source": [
45 "<h2>Bras and Kets</h2>"
46 ]
28 },
47 },
29 {
48 {
30 "source": "Create symbolic states",
49 "cell_type": "markdown",
31 "cell_type": "markdown"
50 "source": [
51 "Create symbolic states"
52 ]
32 },
53 },
33 {
54 {
34 "cell_type": "code",
55 "cell_type": "code",
56 "collapsed": true,
57 "input": [
58 "phi, psi = Ket('phi'), Ket('psi')",
59 "alpha, beta = symbols('alpha beta', complex=True)"
60 ],
35 "language": "python",
61 "language": "python",
36 "outputs": [],
62 "outputs": [],
37 "collapsed": true,
63 "prompt_number": 20
38 "prompt_number": 20,
39 "input": "phi, psi = Ket('phi'), Ket('psi')\nalpha, beta = symbols('alpha beta', complex=True)"
40 },
64 },
41 {
65 {
42 "source": "Create a superposition",
66 "cell_type": "markdown",
43 "cell_type": "markdown"
67 "source": [
68 "Create a superposition"
69 ]
44 },
70 },
45 {
71 {
46 "cell_type": "code",
72 "cell_type": "code",
73 "collapsed": false,
74 "input": [
75 "state = alpha*psi + beta*phi; state"
76 ],
47 "language": "python",
77 "language": "python",
48 "outputs": [
78 "outputs": [
49 {
79 {
80 "latex": [
81 "$$\\alpha {\\left|\\psi\\right\\rangle } + \\beta {\\left|\\phi\\right\\rangle }$$"
82 ],
50 "output_type": "pyout",
83 "output_type": "pyout",
51 "latex": "$$\\alpha {\\left|\\psi\\right\\rangle } + \\beta {\\left|\\phi\\right\\rangle }$$",
52 "prompt_number": 21,
53 "png": "iVBORw0KGgoAAAANSUhEUgAAAF8AAAAXCAYAAABtR5P0AAAABHNCSVQICAgIfAhkiAAABHBJREFU\naIHt2VmsXWMUB/Dfvb0dqBYtjZCrWvdBOiDVlmpTLTW0UiSGkHjRpoZETSUkTQyJseaIGzFUESXE\nA0rwwJWK4UE0SjwgaFNqnkra4PKw9s7Zd9+99z2nd0By/y/nfGt9a531/771rW/tfRjE/xL3Y8y/\nHUQ/o185NvfCdjSGNTD/JgzNyS7HhF7E0FeYhnYR41pciyaNcbwUB+RklfxaGgyyNxiJP3Kyp7Ac\nVwxgHHksxV+4WMTXjC/wSYN+2vB5TlbJrzeZ3wjG4tsC+SbsgVG99D9tJ+2Ow59Yo5YYnfgNhzXg\np1lsYB6V/AZq8Y9CR4luNZb00v8dO2EzCvPxSE4+XmTx2w34mor3S3Sl/AZq8WcoJ/MWZg5gLCnO\nwmMF8hvxiigZ9WKu8uQq5VdU8ycmgbViHL7Glfgl0Tfh7wK7YTgPR2IDbsnohqod69vFxXRqRr8O\ni/FsCYH+wHjRzYzGQ9guYv8KRyvmmEUrVuB7nISDsAtuwKe5uXXxO1jUqUXJuBn3Jcbpzt2dfD6J\nfTK2l2CS2OXt2C2R76XrhbMav+d+t0VxFtaLjgbnj8rENEpswmqR7Z1YkOjyHFNchJexv1iXexP5\n4diie9fTI782setX5+QniiyYif0y+mxgQ3FX8n0FflDbrNNE2UkxVvfMgKtwSFWAFehocP4iwSeP\n4fhOcKN48c/BR2rJNQ3LMvrn8GCB70p+a8Xij8zJW8XiLxcLv29BYMPFxsBGcVpSXI8hmfEQkWV5\njFHLoEbR0eD8lbmYstiIV5Pv+cWfgB1YmJGtEImb4gHF91s3fmnNb8axeEG0WVlsTj6PEH3slwWO\nd4jjNhlTRM+coknXNmw6Hi7wkc4twwQ8o/hibhP3TB5bxMnNo0Vxa9iCA/FSSQwL8VNO36brM8F0\nvFNi34VfuviTRW3+oMSIaKeWVuhhjiC1PhnvLS7sLCbiiQLbc0XWlOEz5f18B+b1EFuK0UlcRThZ\nXJrrSvST8bHaZdwinhNStInkW1lg241fmkWbEof5hSJqW6fY7e0lQaXoxDa1rJqH1zL6Zblxihax\nue/14L8vMBfH636CWkQJWYPXS2zXq5Vd4kHs3eR7k+ia2vFige9u/NIAfhZH+vic0QLcKo7RuGT+\nKSWBwfOilp6QjCeJ0zQCq8SdsrXA7nQ8XeG3LzED14i2OK37acfyo64lM4914kn9zGQ8XyTTWHGa\nN+CyArtCftk+/2zcJi6ZzUlAb+IC0YLeI148PV4R3FZR867DLNFRrEp07aJ0FGFx8vsDgRGiuViK\nR0Xi7Yk3cL7q/n4bjhFNxGxRZsdgV9ys+N6hH/iV9cAppuLCOvzMUp1t9aCjznm7K67HZajiOESt\nva5CKb/+fKSfr75FWaK49WwE39Q5b644zX2BQ5W/z8milF9vFr9TcbuWYgo+7MFHq6izv/YiDjij\nznmzNfbCrIrjHFGqqtBX/Lqhp9fA7XX4GOg/Uxp9+1nF8c467P8rfxYNYhCDGAT8A+0w3Ws5danI\nAAAAAElFTkSuQmCC\n",
84 "png": "iVBORw0KGgoAAAANSUhEUgAAAF8AAAAXCAYAAABtR5P0AAAABHNCSVQICAgIfAhkiAAABHBJREFU\naIHt2VmsXWMUB/Dfvb0dqBYtjZCrWvdBOiDVlmpTLTW0UiSGkHjRpoZETSUkTQyJseaIGzFUESXE\nA0rwwJWK4UE0SjwgaFNqnkra4PKw9s7Zd9+99z2nd0By/y/nfGt9a531/771rW/tfRjE/xL3Y8y/\nHUQ/o185NvfCdjSGNTD/JgzNyS7HhF7E0FeYhnYR41pciyaNcbwUB+RklfxaGgyyNxiJP3Kyp7Ac\nVwxgHHksxV+4WMTXjC/wSYN+2vB5TlbJrzeZ3wjG4tsC+SbsgVG99D9tJ+2Ow59Yo5YYnfgNhzXg\np1lsYB6V/AZq8Y9CR4luNZb00v8dO2EzCvPxSE4+XmTx2w34mor3S3Sl/AZq8WcoJ/MWZg5gLCnO\nwmMF8hvxiigZ9WKu8uQq5VdU8ycmgbViHL7Glfgl0Tfh7wK7YTgPR2IDbsnohqod69vFxXRqRr8O\ni/FsCYH+wHjRzYzGQ9guYv8KRyvmmEUrVuB7nISDsAtuwKe5uXXxO1jUqUXJuBn3Jcbpzt2dfD6J\nfTK2l2CS2OXt2C2R76XrhbMav+d+t0VxFtaLjgbnj8rENEpswmqR7Z1YkOjyHFNchJexv1iXexP5\n4diie9fTI782setX5+QniiyYif0y+mxgQ3FX8n0FflDbrNNE2UkxVvfMgKtwSFWAFehocP4iwSeP\n4fhOcKN48c/BR2rJNQ3LMvrn8GCB70p+a8Xij8zJW8XiLxcLv29BYMPFxsBGcVpSXI8hmfEQkWV5\njFHLoEbR0eD8lbmYstiIV5Pv+cWfgB1YmJGtEImb4gHF91s3fmnNb8axeEG0WVlsTj6PEH3slwWO\nd4jjNhlTRM+coknXNmw6Hi7wkc4twwQ8o/hibhP3TB5bxMnNo0Vxa9iCA/FSSQwL8VNO36brM8F0\nvFNi34VfuviTRW3+oMSIaKeWVuhhjiC1PhnvLS7sLCbiiQLbc0XWlOEz5f18B+b1EFuK0UlcRThZ\nXJrrSvST8bHaZdwinhNStInkW1lg241fmkWbEof5hSJqW6fY7e0lQaXoxDa1rJqH1zL6Zblxihax\nue/14L8vMBfH636CWkQJWYPXS2zXq5Vd4kHs3eR7k+ia2vFige9u/NIAfhZH+vic0QLcKo7RuGT+\nKSWBwfOilp6QjCeJ0zQCq8SdsrXA7nQ8XeG3LzED14i2OK37acfyo64lM4914kn9zGQ8XyTTWHGa\nN+CyArtCftk+/2zcJi6ZzUlAb+IC0YLeI148PV4R3FZR867DLNFRrEp07aJ0FGFx8vsDgRGiuViK\nR0Xi7Yk3cL7q/n4bjhFNxGxRZsdgV9ys+N6hH/iV9cAppuLCOvzMUp1t9aCjznm7K67HZajiOESt\nva5CKb/+fKSfr75FWaK49WwE39Q5b644zX2BQ5W/z8milF9vFr9TcbuWYgo+7MFHq6izv/YiDjij\nznmzNfbCrIrjHFGqqtBX/Lqhp9fA7XX4GOg/Uxp9+1nF8c467P8rfxYNYhCDGAT8A+0w3Ws5danI\nAAAAAElFTkSuQmCC\n",
54 "text": "\u03b1\u22c5\u2758\u03c8\u27e9 + \u03b2\u22c5\u2758\u03c6\u27e9"
85 "prompt_number": 21,
86 "text": [
87 "\u03b1\u22c5\u2758\u03c8\u27e9 + \u03b2\u22c5\u2758\u03c6\u27e9"
88 ]
55 }
89 }
56 ],
90 ],
57 "collapsed": false,
91 "prompt_number": 21
58 "prompt_number": 21,
59 "input": "state = alpha*psi + beta*phi; state\n"
60 },
92 },
61 {
93 {
62 "source": "Dagger the superposition and multiply the original",
94 "cell_type": "markdown",
63 "cell_type": "markdown"
95 "source": [
96 "Dagger the superposition and multiply the original"
97 ]
64 },
98 },
65 {
99 {
66 "cell_type": "code",
100 "cell_type": "code",
101 "collapsed": false,
102 "input": [
103 "ip = Dagger(state)*state; ip"
104 ],
67 "language": "python",
105 "language": "python",
68 "outputs": [
106 "outputs": [
69 {
107 {
108 "latex": [
109 "$$\\left(\\overline{\\alpha} {\\left\\langle \\psi\\right|} + \\overline{\\beta} {\\left\\langle \\phi\\right|}\\right) \\left(\\alpha {\\left|\\psi\\right\\rangle } + \\beta {\\left|\\phi\\right\\rangle }\\right)$$"
110 ],
70 "output_type": "pyout",
111 "output_type": "pyout",
71 "latex": "$$\\left(\\overline{\\alpha} {\\left\\langle \\psi\\right|} + \\overline{\\beta} {\\left\\langle \\phi\\right|}\\right) \\left(\\alpha {\\left|\\psi\\right\\rangle } + \\beta {\\left|\\phi\\right\\rangle }\\right)$$",
72 "prompt_number": 22,
73 "png": "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\n2Kc62Q7y4E4AAAAASUVORK5CYII=\n",
112 "png": "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\n2Kc62Q7y4E4AAAAASUVORK5CYII=\n",
74 "text": "\u239b\u23bd \u23bd \u239e \n\u239d\u03b1\u22c5\u27e8\u03c8\u2758 + \u03b2\u22c5\u27e8\u03c6\u2758\u23a0\u22c5(\u03b1\u22c5\u2758\u03c8\u27e9 + \u03b2\u22c5\u2758\u03c6\u27e9)"
113 "prompt_number": 22,
114 "text": [
115 "\u239b\u23bd \u23bd \u239e ",
116 "\u239d\u03b1\u22c5\u27e8\u03c8\u2758 + \u03b2\u22c5\u27e8\u03c6\u2758\u23a0\u22c5(\u03b1\u22c5\u2758\u03c8\u27e9 + \u03b2\u22c5\u2758\u03c6\u27e9)"
117 ]
75 }
118 }
76 ],
119 ],
77 "collapsed": false,
120 "prompt_number": 22
78 "prompt_number": 22,
79 "input": "ip = Dagger(state)*state; ip\n"
80 },
121 },
81 {
122 {
82 "source": "Distribute",
123 "cell_type": "markdown",
83 "cell_type": "markdown"
124 "source": [
125 "Distribute"
126 ]
84 },
127 },
85 {
128 {
86 "cell_type": "code",
129 "cell_type": "code",
130 "collapsed": false,
131 "input": [
132 "qapply(expand(ip))"
133 ],
87 "language": "python",
134 "language": "python",
88 "outputs": [
135 "outputs": [
89 {
136 {
137 "latex": [
138 "$$\\alpha \\overline{\\alpha} \\left\\langle \\psi \\right. {\\left|\\psi\\right\\rangle } + \\alpha \\overline{\\beta} \\left\\langle \\phi \\right. {\\left|\\psi\\right\\rangle } + \\beta \\overline{\\alpha} \\left\\langle \\psi \\right. {\\left|\\phi\\right\\rangle } + \\beta \\overline{\\beta} \\left\\langle \\phi \\right. {\\left|\\phi\\right\\rangle }$$"
139 ],
90 "output_type": "pyout",
140 "output_type": "pyout",
91 "latex": "$$\\alpha \\overline{\\alpha} \\left\\langle \\psi \\right. {\\left|\\psi\\right\\rangle } + \\alpha \\overline{\\beta} \\left\\langle \\phi \\right. {\\left|\\psi\\right\\rangle } + \\beta \\overline{\\alpha} \\left\\langle \\psi \\right. {\\left|\\phi\\right\\rangle } + \\beta \\overline{\\beta} \\left\\langle \\phi \\right. {\\left|\\phi\\right\\rangle }$$",
92 "prompt_number": 23,
93 "png": "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\nVapUevofz4SOwufiq5gAAAAASUVORK5CYII=\n",
141 "png": "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\nVapUevofz4SOwufiq5gAAAAASUVORK5CYII=\n",
94 "text": "\u23bd \u23bd \u23bd \u23bd \n\u03b1\u22c5\u03b1\u22c5\u27e8\u03c8\u2758\u03c8\u27e9 + \u03b1\u22c5\u03b2\u22c5\u27e8\u03c6\u2758\u03c8\u27e9 + \u03b2\u22c5\u03b1\u22c5\u27e8\u03c8\u2758\u03c6\u27e9 + \u03b2\u22c5\u03b2\u22c5\u27e8\u03c6\u2758\u03c6\u27e9"
142 "prompt_number": 23,
143 "text": [
144 "\u23bd \u23bd \u23bd \u23bd ",
145 "\u03b1\u22c5\u03b1\u22c5\u27e8\u03c8\u2758\u03c8\u27e9 + \u03b1\u22c5\u03b2\u22c5\u27e8\u03c6\u2758\u03c8\u27e9 + \u03b2\u22c5\u03b1\u22c5\u27e8\u03c8\u2758\u03c6\u27e9 + \u03b2\u22c5\u03b2\u22c5\u27e8\u03c6\u2758\u03c6\u27e9"
146 ]
95 }
147 }
96 ],
148 ],
97 "collapsed": false,
149 "prompt_number": 23
98 "prompt_number": 23,
99 "input": "qapply(expand(ip))\n"
100 },
150 },
101 {
151 {
102 "source": "<h2>Operators</h2>",
152 "cell_type": "markdown",
103 "cell_type": "markdown"
153 "source": [
154 "<h2>Operators</h2>"
155 ]
104 },
156 },
105 {
157 {
106 "source": "Create symbolic operators",
158 "cell_type": "markdown",
107 "cell_type": "markdown"
159 "source": [
160 "Create symbolic operators"
161 ]
108 },
162 },
109 {
163 {
110 "cell_type": "code",
164 "cell_type": "code",
165 "collapsed": true,
166 "input": [
167 "A = Operator('A')",
168 "B = Operator('B')",
169 "C = Operator('C')"
170 ],
111 "language": "python",
171 "language": "python",
112 "outputs": [],
172 "outputs": [],
113 "collapsed": true,
173 "prompt_number": 24
114 "prompt_number": 24,
115 "input": "A = Operator('A')\nB = Operator('B')\nC = Operator('C')"
116 },
174 },
117 {
175 {
118 "source": "Test commutativity",
176 "cell_type": "markdown",
119 "cell_type": "markdown"
177 "source": [
178 "Test commutativity"
179 ]
120 },
180 },
121 {
181 {
122 "cell_type": "code",
182 "cell_type": "code",
183 "collapsed": false,
184 "input": [
185 "A*B == B*A"
186 ],
123 "language": "python",
187 "language": "python",
124 "outputs": [
188 "outputs": [
125 {
189 {
126 "output_type": "pyout",
190 "output_type": "pyout",
127 "prompt_number": 25,
191 "prompt_number": 25,
128 "text": "False"
192 "text": [
193 "False"
194 ]
129 }
195 }
130 ],
196 ],
131 "collapsed": false,
197 "prompt_number": 25
132 "prompt_number": 25,
133 "input": "A*B == B*A\n"
134 },
198 },
135 {
199 {
136 "source": "Distribute A+B squared",
200 "cell_type": "markdown",
137 "cell_type": "markdown"
201 "source": [
202 "Distribute A+B squared"
203 ]
138 },
204 },
139 {
205 {
140 "cell_type": "code",
206 "cell_type": "code",
207 "collapsed": false,
208 "input": [
209 "expand((A+B)**2)"
210 ],
141 "language": "python",
211 "language": "python",
142 "outputs": [
212 "outputs": [
143 {
213 {
214 "latex": [
215 "$$A B + \\left(A\\right)^{2} + B A + \\left(B\\right)^{2}$$"
216 ],
144 "output_type": "pyout",
217 "output_type": "pyout",
145 "latex": "$$A B + \\left(A\\right)^{2} + B A + \\left(B\\right)^{2}$$",
146 "prompt_number": 26,
147 "png": "iVBORw0KGgoAAAANSUhEUgAAAMAAAAAZCAYAAABn7SHgAAAABHNCSVQICAgIfAhkiAAABONJREFU\neJzt2luoFVUcx/FP6jnZsdNNKzVFKLsX1EORpGYIKRkFRgRJD70oFBRFmlQv0ksPQUVYPYXRTcTq\nISqKouhCD0YSdCUKtItd0JJSuunpYe3N2U4ze681M/scOcwXDps9a83M//f/nTXrv9ZsGhoaGhI5\nEmdgyngH0tCTrl5NHttYJgQrsBLHYCOmYtu4RtRQRONVzQzgpdYnnI4RXDhuETUU0XjVB07An1jQ\ncewPrBmfcBq6EOVVag27EoPY3KXPRswraPsHO1vnf5B471QG8XdC/zxt2WvswbH4q/V9Po7Sfy1F\n9CPXMR7XTZFXKfr67tWJrYs+1qPfIM4XppvnMSQMtCmYg4dbbevKBhLBLKxO6F+k7V6jU2geW7E+\nLbRaqTvXsR7XSTevUvT13asnWjd7MaLvilbf63PaBvAz9gkCY0hZrE8SDEw5p0jbmXi84Jy1uCXh\nHt2oshlRZ65TPC6ibq9i9ZXyalJkoJcK08sIZkb0X9z6fDun7UDrOkdE3n8pbovo1+YmvN66Twzd\ntH0pJPi8zPFV+EyYogewMCG+LKn6stSV61SP8+iHV7H6dijhVcw/4BTch7uxW/wA+Bw/5bQtxUl4\nVlik9GJA/EwBNwir/xhitL3g0KfHdThHSPpVguFHJ8SXJVVfljpyXcbjPPrhVYq+vnh1u9GV8yfY\n36P/kPAkeTSnbaFQY24RXlDEsFx87XY83ozsS5y2IWGxBdPxPj7M/M1OuGeWFH15sdWR61SPi6jb\nq1R9yV712gWajauFkQY/4lxhdb234JwFwpPgZKPJGG4FvA/X4q0e9y3LqdgV2TdW234cFJ5su4VS\n4XChjlyX8bgOYrxK1ZfsVa8B8IAwLR5sfW9PQzMVJ6dds60VRmibrXgQG/AVvusVXAmmC4mJIUXb\nTmG3YkfVAGumjlyX8bgOYrwqoy/Jq25rgKXCXmvnvmlncopYhC/wDX7r+Nsu1HyL8HRMcCXYi7kR\n/VK1zcLv1ULrC1VzXdbjOojxqoy+JK+KZoBBYdW8HQ91HL+44yZ5DOASPFPQ/oMgYLEwlXUGukxY\ntGSZI7zVm5/T9h42dXzfKfzwqRup2gYxA7/2uG4v6tDXSZVcU95jxsarMvqSvSoaAHcKK+stmePf\nCnVZ0dPhIuFt27sF7WfjOGFUZw3ZJtRtWRYIiXoypy1bQ+4S6sBub4FTtZ0m1JkjBdeLpQ59nVTJ\nNeU9Zmy8KqMv2au8ATAPlwuj/GCmbWbmM0u7ZisK+sbW51M5bXscWue1mYFpwgo+hs3C1Ji3w1BG\n2xLFT6EU6tLXpkquq3jM2HhVRt8SFb0axjvCW7U85guja1NB+yuKF1yrW+c+JyQpltRtwiG85v+v\nxctom4FXhX3kflF2G7Rsrqt63I26vCJdXymv2jPAMO7BNThL2BPe4NBdgDXCCCM8PdbhZXyNm4VV\n/RXCNtp6/NsR2JWC2FvxSEqAJdgv7GqsFmrcKtpWCdqqlj91MVX5XFfJw6e1Kwlkvaqi7w4lvGqP\nlmFc1nF8BG8Y/SUdYbrMjtSP8Esr2KKRdwAfC4uWMizHBbg/8bxT8L1q2iYLNXE/SdE3oHyuq+Qh\n1ruqXlXRN1f/vRoXluGu8Q6ij0wkfRNJy2HDNP3fkx5PJpK+iaSloaGhoaGhoWGi8h+sZcLwhv0Q\nuwAAAABJRU5ErkJggg==\n",
218 "png": "iVBORw0KGgoAAAANSUhEUgAAAMAAAAAZCAYAAABn7SHgAAAABHNCSVQICAgIfAhkiAAABONJREFU\neJzt2luoFVUcx/FP6jnZsdNNKzVFKLsX1EORpGYIKRkFRgRJD70oFBRFmlQv0ksPQUVYPYXRTcTq\nISqKouhCD0YSdCUKtItd0JJSuunpYe3N2U4ze681M/scOcwXDps9a83M//f/nTXrv9ZsGhoaGhI5\nEmdgyngH0tCTrl5NHttYJgQrsBLHYCOmYtu4RtRQRONVzQzgpdYnnI4RXDhuETUU0XjVB07An1jQ\ncewPrBmfcBq6EOVVag27EoPY3KXPRswraPsHO1vnf5B471QG8XdC/zxt2WvswbH4q/V9Po7Sfy1F\n9CPXMR7XTZFXKfr67tWJrYs+1qPfIM4XppvnMSQMtCmYg4dbbevKBhLBLKxO6F+k7V6jU2geW7E+\nLbRaqTvXsR7XSTevUvT13asnWjd7MaLvilbf63PaBvAz9gkCY0hZrE8SDEw5p0jbmXi84Jy1uCXh\nHt2oshlRZ65TPC6ibq9i9ZXyalJkoJcK08sIZkb0X9z6fDun7UDrOkdE3n8pbovo1+YmvN66Twzd\ntH0pJPi8zPFV+EyYogewMCG+LKn6stSV61SP8+iHV7H6dijhVcw/4BTch7uxW/wA+Bw/5bQtxUl4\nVlik9GJA/EwBNwir/xhitL3g0KfHdThHSPpVguFHJ8SXJVVfljpyXcbjPPrhVYq+vnh1u9GV8yfY\n36P/kPAkeTSnbaFQY24RXlDEsFx87XY83ozsS5y2IWGxBdPxPj7M/M1OuGeWFH15sdWR61SPi6jb\nq1R9yV712gWajauFkQY/4lxhdb234JwFwpPgZKPJGG4FvA/X4q0e9y3LqdgV2TdW234cFJ5su4VS\n4XChjlyX8bgOYrxK1ZfsVa8B8IAwLR5sfW9PQzMVJ6dds60VRmibrXgQG/AVvusVXAmmC4mJIUXb\nTmG3YkfVAGumjlyX8bgOYrwqoy/Jq25rgKXCXmvnvmlncopYhC/wDX7r+Nsu1HyL8HRMcCXYi7kR\n/VK1zcLv1ULrC1VzXdbjOojxqoy+JK+KZoBBYdW8HQ91HL+44yZ5DOASPFPQ/oMgYLEwlXUGukxY\ntGSZI7zVm5/T9h42dXzfKfzwqRup2gYxA7/2uG4v6tDXSZVcU95jxsarMvqSvSoaAHcKK+stmePf\nCnVZ0dPhIuFt27sF7WfjOGFUZw3ZJtRtWRYIiXoypy1bQ+4S6sBub4FTtZ0m1JkjBdeLpQ59nVTJ\nNeU9Zmy8KqMv2au8ATAPlwuj/GCmbWbmM0u7ZisK+sbW51M5bXscWue1mYFpwgo+hs3C1Ji3w1BG\n2xLFT6EU6tLXpkquq3jM2HhVRt8SFb0axjvCW7U85guja1NB+yuKF1yrW+c+JyQpltRtwiG85v+v\nxctom4FXhX3kflF2G7Rsrqt63I26vCJdXymv2jPAMO7BNThL2BPe4NBdgDXCCCM8PdbhZXyNm4VV\n/RXCNtp6/NsR2JWC2FvxSEqAJdgv7GqsFmrcKtpWCdqqlj91MVX5XFfJw6e1Kwlkvaqi7w4lvGqP\nlmFc1nF8BG8Y/SUdYbrMjtSP8Esr2KKRdwAfC4uWMizHBbg/8bxT8L1q2iYLNXE/SdE3oHyuq+Qh\n1ruqXlXRN1f/vRoXluGu8Q6ij0wkfRNJy2HDNP3fkx5PJpK+iaSloaGhoaGhoWGi8h+sZcLwhv0Q\nuwAAAABJRU5ErkJggg==\n",
148 "text": "2 2\nA\u22c5B + A + B\u22c5A + B"
219 "prompt_number": 26,
220 "text": [
221 "2 2",
222 "A\u22c5B + A + B\u22c5A + B"
223 ]
149 }
224 }
150 ],
225 ],
151 "collapsed": false,
226 "prompt_number": 26
152 "prompt_number": 26,
153 "input": "expand((A+B)**2)"
154 },
227 },
155 {
228 {
156 "source": "Create a commutator",
229 "cell_type": "markdown",
157 "cell_type": "markdown"
230 "source": [
231 "Create a commutator"
232 ]
158 },
233 },
159 {
234 {
160 "cell_type": "code",
235 "cell_type": "code",
236 "collapsed": false,
237 "input": [
238 "comm = Commutator(A,B); comm"
239 ],
161 "language": "python",
240 "language": "python",
162 "outputs": [
241 "outputs": [
163 {
242 {
243 "latex": [
244 "$$\\left[A,B\\right]$$"
245 ],
164 "output_type": "pyout",
246 "output_type": "pyout",
165 "latex": "$$\\left[A,B\\right]$$",
166 "prompt_number": 27,
167 "png": "iVBORw0KGgoAAAANSUhEUgAAAC4AAAAWCAYAAAC/kK73AAAABHNCSVQICAgIfAhkiAAAAkhJREFU\nSInt182LTWEcB/DPvOWlJpTGYLKwUFMzzYZmMzNJiWl2/gHFQlZm4yUbY4WtQsqUFRYiSoQ4aIpS\n8rKQRORdSZEMM1g8z+XOnXPmnntnZkG+dXvO/X3P7/v73t9znuc8l78UNSXfL+ArLuFAmdw9qMO2\nKuoOYC068QND+BK5RizB2Xjf+xjvx0o0oK9UMMlZuB3fcawK0wU0CGZPpXBtUf8eaku4REowD2qw\nD/VoriK/gOWYhYsp3ANcFhrUlpZcjfH1sdhnkzPeE8erGXwrRvE8j1hShp8XC9XjMT7kEc3AObzK\n4NbhpzCzpUjSElKDRTiEVfF6KIrPKOcwBbX4iOMl8dnYHLntxm8evz3WV1BshdDxK/H72zg241kF\nOtCBOZiLvTE2E6uFXW0NblUimGTEa3FN2KYKOCh0vLOSAhFbYu6yFG4jvmHDRB7zLs5Nwt5evFCK\nO14pevAOj1K4QbwWGtOYJZDnUWnCzlikqyjeEsdqjHfj+gT8J2F2l+JuHsEkJXYUvSnxPmG6d+UR\nLkJrzOvP4BdG/qkJFme5R6VLeIOdT+FexDGt44sm0Czs3zcy+IE4HhF+QC4kRdfteIMFGfcujsKn\nS+IdwvljMCPvpPDyqiuJN2E/RrAjp8cxwfnCGWE0Gnvoz/NcwAm8jPyw0L3CwacFT3Df2Kk+g5sx\nZyReJ/FzW3jNHzZ2HVVkfKqwewq1ipFQ3VklL6ZTe9rEe3FnmrQx3viI8Gcia6vKq9kt/Zw9GWwV\nvA1Pse5//Nv4Bfpvd5tNLRluAAAAAElFTkSuQmCC\n",
247 "png": "iVBORw0KGgoAAAANSUhEUgAAAC4AAAAWCAYAAAC/kK73AAAABHNCSVQICAgIfAhkiAAAAkhJREFU\nSInt182LTWEcB/DPvOWlJpTGYLKwUFMzzYZmMzNJiWl2/gHFQlZm4yUbY4WtQsqUFRYiSoQ4aIpS\n8rKQRORdSZEMM1g8z+XOnXPmnntnZkG+dXvO/X3P7/v73t9znuc8l78UNSXfL+ArLuFAmdw9qMO2\nKuoOYC068QND+BK5RizB2Xjf+xjvx0o0oK9UMMlZuB3fcawK0wU0CGZPpXBtUf8eaku4REowD2qw\nD/VoriK/gOWYhYsp3ANcFhrUlpZcjfH1sdhnkzPeE8erGXwrRvE8j1hShp8XC9XjMT7kEc3AObzK\n4NbhpzCzpUjSElKDRTiEVfF6KIrPKOcwBbX4iOMl8dnYHLntxm8evz3WV1BshdDxK/H72zg241kF\nOtCBOZiLvTE2E6uFXW0NblUimGTEa3FN2KYKOCh0vLOSAhFbYu6yFG4jvmHDRB7zLs5Nwt5evFCK\nO14pevAOj1K4QbwWGtOYJZDnUWnCzlikqyjeEsdqjHfj+gT8J2F2l+JuHsEkJXYUvSnxPmG6d+UR\nLkJrzOvP4BdG/qkJFme5R6VLeIOdT+FexDGt44sm0Czs3zcy+IE4HhF+QC4kRdfteIMFGfcujsKn\nS+IdwvljMCPvpPDyqiuJN2E/RrAjp8cxwfnCGWE0Gnvoz/NcwAm8jPyw0L3CwacFT3Df2Kk+g5sx\nZyReJ/FzW3jNHzZ2HVVkfKqwewq1ipFQ3VklL6ZTe9rEe3FnmrQx3viI8Gcia6vKq9kt/Zw9GWwV\nvA1Pse5//Nv4Bfpvd5tNLRluAAAAAElFTkSuQmCC\n",
168 "text": "[A,B]"
248 "prompt_number": 27,
249 "text": [
250 "[A,B]"
251 ]
169 }
252 }
170 ],
253 ],
171 "collapsed": false,
254 "prompt_number": 27
172 "prompt_number": 27,
173 "input": "comm = Commutator(A,B); comm\n"
174 },
255 },
175 {
256 {
176 "source": "Carry out the commutator",
257 "cell_type": "markdown",
177 "cell_type": "markdown"
258 "source": [
259 "Carry out the commutator"
260 ]
178 },
261 },
179 {
262 {
180 "cell_type": "code",
263 "cell_type": "code",
264 "collapsed": false,
265 "input": [
266 "comm.doit()"
267 ],
181 "language": "python",
268 "language": "python",
182 "outputs": [
269 "outputs": [
183 {
270 {
271 "latex": [
272 "$$A B - B A$$"
273 ],
184 "output_type": "pyout",
274 "output_type": "pyout",
185 "latex": "$$A B - B A$$",
186 "prompt_number": 28,
187 "png": "iVBORw0KGgoAAAANSUhEUgAAAE4AAAASCAYAAAD15uiRAAAABHNCSVQICAgIfAhkiAAAAi5JREFU\nWIXt1ztoVEEYBeDPGEGLlQQMahQipBUF0SqYwmdhrCxFO+0F0UKxUVS0ELENaWOhQhorFfGBlY+g\nIppOgmDAKkrUqLGYQddk7u59JAFhDyx3ds4/c87ZuXPnLi2UwpKC9VcwiTMNagaxDZvwFU/wPXKr\n0InrOIepgvqNsBC6efI2xVb8xFCO2g2YwaUEty9yI1XMLIJukbyZaMPdKHw7R/2hWLsrgx+LpmpV\nTC2gbtO8bTkNHcUNTGNNjvp+YZs8TnA1rMcEPufUz4v50i2aN4ku4ddvwzg+5BjzFg8zuBPCSh4p\na2iBdcvkTWIIfbH9FD80vlNXR4NnZ/V3xL4JHC5rZhF0c+VtbzJJH5b6e+t/jN+7YjuF/njtxcXY\nrmEA7+KcY03tF8d86JbJOwfteIS1dX1DwqpubjDuGr5heYI7Lxzvu/OaKICqumXzzsExHJ/VdyFO\ntLfBuFHphzOsEB6474sYyYmquoXyZm3V7jjJG/8e7T3xmnXSdGAjLmfw08JdsU7YRpPCVjqdUZ/C\niBCoqm49yuadg2HsSPQfEFbgZMa4/ZEfyOC3R/5OXiM5UVW3cN7U6bgTn3AvwY3Ha9YK9Eeh1JZZ\nhlOxPZgxviyq6FbJ+wdbhNOjM4PvjQaHM/jneJno78FNfMHBZiZKoKxu1by68Qq/YuFr4b2oHreE\nl8EZ4U/0A+zBSmG1XkRuSjid7sfPKJ7hqvAcmi9U0a2St4UWWvh/8Bt1v8TG07AChQAAAABJRU5E\nrkJggg==\n",
275 "png": "iVBORw0KGgoAAAANSUhEUgAAAE4AAAASCAYAAAD15uiRAAAABHNCSVQICAgIfAhkiAAAAi5JREFU\nWIXt1ztoVEEYBeDPGEGLlQQMahQipBUF0SqYwmdhrCxFO+0F0UKxUVS0ELENaWOhQhorFfGBlY+g\nIppOgmDAKkrUqLGYQddk7u59JAFhDyx3ds4/c87ZuXPnLi2UwpKC9VcwiTMNagaxDZvwFU/wPXKr\n0InrOIepgvqNsBC6efI2xVb8xFCO2g2YwaUEty9yI1XMLIJukbyZaMPdKHw7R/2hWLsrgx+LpmpV\nTC2gbtO8bTkNHcUNTGNNjvp+YZs8TnA1rMcEPufUz4v50i2aN4ku4ddvwzg+5BjzFg8zuBPCSh4p\na2iBdcvkTWIIfbH9FD80vlNXR4NnZ/V3xL4JHC5rZhF0c+VtbzJJH5b6e+t/jN+7YjuF/njtxcXY\nrmEA7+KcY03tF8d86JbJOwfteIS1dX1DwqpubjDuGr5heYI7Lxzvu/OaKICqumXzzsExHJ/VdyFO\ntLfBuFHphzOsEB6474sYyYmquoXyZm3V7jjJG/8e7T3xmnXSdGAjLmfw08JdsU7YRpPCVjqdUZ/C\niBCoqm49yuadg2HsSPQfEFbgZMa4/ZEfyOC3R/5OXiM5UVW3cN7U6bgTn3AvwY3Ha9YK9Eeh1JZZ\nhlOxPZgxviyq6FbJ+wdbhNOjM4PvjQaHM/jneJno78FNfMHBZiZKoKxu1by68Qq/YuFr4b2oHreE\nl8EZ4U/0A+zBSmG1XkRuSjid7sfPKJ7hqvAcmi9U0a2St4UWWvh/8Bt1v8TG07AChQAAAABJRU5E\nrkJggg==\n",
188 "text": "A\u22c5B - B\u22c5A"
276 "prompt_number": 28,
277 "text": [
278 "A\u22c5B - B\u22c5A"
279 ]
189 }
280 }
190 ],
281 ],
191 "collapsed": false,
282 "prompt_number": 28
192 "prompt_number": 28,
193 "input": "comm.doit()"
194 },
283 },
195 {
284 {
196 "source": "Create a more fancy commutator",
285 "cell_type": "markdown",
197 "cell_type": "markdown"
286 "source": [
287 "Create a more fancy commutator"
288 ]
198 },
289 },
199 {
290 {
200 "cell_type": "code",
291 "cell_type": "code",
292 "collapsed": false,
293 "input": [
294 "comm = Commutator(A*B,B+C); comm"
295 ],
201 "language": "python",
296 "language": "python",
202 "outputs": [
297 "outputs": [
203 {
298 {
299 "latex": [
300 "$$\\left[A B,B + C\\right]$$"
301 ],
204 "output_type": "pyout",
302 "output_type": "pyout",
205 "latex": "$$\\left[A B,B + C\\right]$$",
206 "prompt_number": 29,
207 "png": "iVBORw0KGgoAAAANSUhEUgAAAGAAAAAWCAYAAAA/45nkAAAABHNCSVQICAgIfAhkiAAAA3tJREFU\naIHt2E2sXVMUB/DfexqvUvr0QxXFQI2k8dn4at+A1wglkfiImRIhEhEDDBrVCNLGM2qjHRA6EMSE\ngfhIkSt9jU7E90cISaWEpBJaDarFYO3b3l7n3LPP6733Te5/ss/Za+3/XufstdZeezPAtGKo7f1N\n/ImteKpi7Docgwc76GzCpTgPf+H91MJcnISX8Sh+r2F3r3iPBiO4Idl1rviPI9iMl7AWD+FjXIb9\nRSSNzMmW4G+8kKG7EP9iQ4HsyiR7K3PefvBOBRfhc2zBFeLHS+3j2IjfMC6cfGYZUSNjsiG8Lj7w\n3Qz9m5LutSXyT5N8XgZXL3nn4YyaNhCevV95JhjCJP4QP/6oF2AV7sNefJGhvxEHMLtANjPx/ILh\nDK5e8l4vvqsObheLfEeF3hq8k56PWIAZNSecg1uxAveINFCFMXyIPQWyO3E87sU/NW3pFW8uzhbp\nbweeqdD9TjhLJRoV8s0ix8F2sfoj5epOxEFMtPWPCq/Yrdp7+sVbNwK2ie8fz9C9EIvT85QjYKmI\ngGbe/zm1C7GzZMxykQLOxPrUN0vk7Z1J/mUNG3rNm4s5uByf4O0M/Q9yiRsl/cN4z5Gb1CbhARd3\n4JsQoXdCgexh7MPKXON6zFsnAlaKb3+u5hy0RUDuBnWXOBt839LXGgFlGBN1794C2bo0/7P+fx6p\nQq94c9F0us8ydOfqUInlpKAFWI2vsaylf1FqyxZgFi5QfqA7KEqzBcnA3Rm2dIN3lWJPH8WxSd6O\n5/Fky3sz5f6YYe9qPJahh+IUtAVXF/Q3w3BtCdeKJL+xRL40ySdzjesxb50UdFaa44kKvcW4v62v\nVgpaJk68bxTIdqW2LALGUrutQDZDVCvwdMn4U3vE2w18K6rA6xTvQ8QirRF7ZTYaLc9L8BNOLtE9\nTXjBKyXyHfimoH8RXhRp4raSsc1T7gNd5u2EumXobLEIkzi9pX8Ut4hCoahEryxD54tS8xyHq59x\nhz2euFxanp6vEd64Po17TZRp54sLsu0iioj6vZkeLhEbaRF24QcRgRM4rku83cQeXCUOfRuEA3yF\nX0XBUuQ8lWh0ybhu4ZE+zjWVq4ipYEpl6HRgWHh1v7BP/66uD6HuXVA/cTde7eN8W/s41yG0R8AB\nESL9CMVOmC/y/kfTbEc3cbP4t6fo3QXhAAMMMEAd/Af3QOJHSnIYNwAAAABJRU5ErkJggg==\n",
303 "png": "iVBORw0KGgoAAAANSUhEUgAAAGAAAAAWCAYAAAA/45nkAAAABHNCSVQICAgIfAhkiAAAA3tJREFU\naIHt2E2sXVMUB/DfexqvUvr0QxXFQI2k8dn4at+A1wglkfiImRIhEhEDDBrVCNLGM2qjHRA6EMSE\ngfhIkSt9jU7E90cISaWEpBJaDarFYO3b3l7n3LPP6733Te5/ss/Za+3/XufstdZeezPAtGKo7f1N\n/ImteKpi7Docgwc76GzCpTgPf+H91MJcnISX8Sh+r2F3r3iPBiO4Idl1rviPI9iMl7AWD+FjXIb9\nRSSNzMmW4G+8kKG7EP9iQ4HsyiR7K3PefvBOBRfhc2zBFeLHS+3j2IjfMC6cfGYZUSNjsiG8Lj7w\n3Qz9m5LutSXyT5N8XgZXL3nn4YyaNhCevV95JhjCJP4QP/6oF2AV7sNefJGhvxEHMLtANjPx/ILh\nDK5e8l4vvqsObheLfEeF3hq8k56PWIAZNSecg1uxAveINFCFMXyIPQWyO3E87sU/NW3pFW8uzhbp\nbweeqdD9TjhLJRoV8s0ix8F2sfoj5epOxEFMtPWPCq/Yrdp7+sVbNwK2ie8fz9C9EIvT85QjYKmI\ngGbe/zm1C7GzZMxykQLOxPrUN0vk7Z1J/mUNG3rNm4s5uByf4O0M/Q9yiRsl/cN4z5Gb1CbhARd3\n4JsQoXdCgexh7MPKXON6zFsnAlaKb3+u5hy0RUDuBnWXOBt839LXGgFlGBN1794C2bo0/7P+fx6p\nQq94c9F0us8ydOfqUInlpKAFWI2vsaylf1FqyxZgFi5QfqA7KEqzBcnA3Rm2dIN3lWJPH8WxSd6O\n5/Fky3sz5f6YYe9qPJahh+IUtAVXF/Q3w3BtCdeKJL+xRL40ySdzjesxb50UdFaa44kKvcW4v62v\nVgpaJk68bxTIdqW2LALGUrutQDZDVCvwdMn4U3vE2w18K6rA6xTvQ8QirRF7ZTYaLc9L8BNOLtE9\nTXjBKyXyHfimoH8RXhRp4raSsc1T7gNd5u2EumXobLEIkzi9pX8Ut4hCoahEryxD54tS8xyHq59x\nhz2euFxanp6vEd64Po17TZRp54sLsu0iioj6vZkeLhEbaRF24QcRgRM4rku83cQeXCUOfRuEA3yF\nX0XBUuQ8lWh0ybhu4ZE+zjWVq4ipYEpl6HRgWHh1v7BP/66uD6HuXVA/cTde7eN8W/s41yG0R8AB\nESL9CMVOmC/y/kfTbEc3cbP4t6fo3QXhAAMMMEAd/Af3QOJHSnIYNwAAAABJRU5ErkJggg==\n",
208 "text": "[A\u22c5B,B + C]"
304 "prompt_number": 29,
305 "text": [
306 "[A\u22c5B,B + C]"
307 ]
209 }
308 }
210 ],
309 ],
211 "collapsed": false,
310 "prompt_number": 29
212 "prompt_number": 29,
213 "input": "comm = Commutator(A*B,B+C); comm"
214 },
311 },
215 {
312 {
216 "source": "Expand the commutator",
313 "cell_type": "markdown",
217 "cell_type": "markdown"
314 "source": [
315 "Expand the commutator"
316 ]
218 },
317 },
219 {
318 {
220 "cell_type": "code",
319 "cell_type": "code",
320 "collapsed": false,
321 "input": [
322 "comm.expand(commutator=True)"
323 ],
221 "language": "python",
324 "language": "python",
222 "outputs": [
325 "outputs": [
223 {
326 {
327 "latex": [
328 "$$\\left[A,B\\right] B + \\left[A,C\\right] B + A \\left[B,C\\right]$$"
329 ],
224 "output_type": "pyout",
330 "output_type": "pyout",
225 "latex": "$$\\left[A,B\\right] B + \\left[A,C\\right] B + A \\left[B,C\\right]$$",
226 "prompt_number": 30,
227 "png": "iVBORw0KGgoAAAANSUhEUgAAAN8AAAAWCAYAAABAHklQAAAABHNCSVQICAgIfAhkiAAABOVJREFU\neJztm0toXUUYx3+JCWnF+KrU+kYLYtHahY+gJKWIr9q6EVypFHRRxYAFn3RjXFnBjYKK1EgEURc+\nUNCIQh0fQVxpiwuRgO83ilItautj8c3h3hxnzpk58829t3J+EE4y38x3vu9/58ycOzOBlpaWvjBU\n+vtV4HfgdeChmrb3AocAdzS47wxwOTAB/A0sAPusbRw4GXjJ1vvBlm8DNgCjwCYlnzmI0RDSdCwY\nAq4EJoFzkfzHgOeAB4HVwAc2pkHXr446vXz6z5AvPw39MYE3WwvsB56KDLKbUST55x22s6z/PcBw\nyWYy+NTERNTV0PFUe895pAOM2/Jh4HrgSeBTYDogvkHQr4oQvUyFLUd+avp7DV0MAa8A/wC7IoIs\nc4H1caPHPm/tZ5fKTQafPo4GTgmsW2AC62nouAXYCzyKzAYuHrf3OCMgPm39oJmGLkL1MhU27fyS\n9G8ygm0BXgN+BVY1aF+w3l7f8NjXAH8Bn/fR54XA1RH3jyFVxylgFvngtyJ5uZgHvgI+CvCZ4zPR\n0lCj32nmp66/qbEfhQQ+AiwCPwUE6eNl4GuP7SpktLjPYTMZfPrYDNwWUR/CZr5UHY8EPkNyXV5T\n9xzgicD4tPWDZhqWidHLVNi08suiv9dgeQS4yP6+gAQ7VtPGxTDwM/B0qfxQ4CZru5P/LghVxZji\n00euhy9Vx522zXRdReAkZPapiy+HfqDz8MXoZTzlmvmp6D8S0LjgPGQEKt63v7PXVcgoEMM64Ahk\nBNlhy5YBlyArVZcB7w2Azxxo6LgZ+a6xM6DuF/anjkHVT6vfaeaXQ//KUeNNZDm24GHk6Z8IcVzi\nFtv2dIftBuBPZKUoJsYUnz60Zz4NHVfb+u9GxlVgPOU59IO0ma+JXsZTrpWfmv6hCy5bkT2K7i+i\n3SNQLOuB74GPHbZZ4BtE5HGHvZc+tdHQseh0HwbUHWNpx61iEPXT7Hda+anpH/LauRLYjgQ92VV+\nor02Xal7q8K+Fwn6NGB3D3xeB9zqaHM4IuC1DtszdF5fQtDSsXjV8i0cdHMzsukcQupnoq2hdr/T\n6nO59HdO2XPARkf5JmT6vTvUuWWNbbfNYz/O2j8hfMEl1acPzdfOOXR0HAV+Q05jVHEYcL+j3DjK\ncukHzV8752iml3GUaeanpn/da+cksus/77B9aa+uEej4Cp/FXsvbHvuMvT6GCBJCDp+aaOq4H5kx\nppCVNBcrkGNNDwTGN2j6NdXLR9P8eqU/sHTUWAt8CxzrqXuCDfSFUvk65GzbrKfds8hGaflEwEok\n4APAXYExavn0oTHz5dBxBOkAi8ixqILlwKXI0vyKwPggn34Qr2FTvQqMo6xJftn1d33nOwZZ1j2T\nzmrTxXRGHOg8+QBXICPKDmQT80fkLNv5yBRejCQvIoJOIKcBFpAlXpApepkt2wC84wm8TA6fWuTS\nEaSzXIOszm1HVvAWgV+QfKfxn7joZpD0S9XLRUp+vdB/CSa2QQX3KPrqxmTy6yLXJnsM2joaZX91\naGyyx2CU/WXTP+fp9H6dfNdkH/K60k8Odh0HQcMUsukfc8Ilho3A+5l895JdpP3nRir/Bx37rWEK\nWfUvP9UHkH0J35JsqM8p3P8zlcLtSGx/KPvVRkND0NfxYNEvlVb/lpaWlpaWlpaWlg7/Ap2JCsCY\nEBHmAAAAAElFTkSuQmCC\n",
331 "png": "iVBORw0KGgoAAAANSUhEUgAAAN8AAAAWCAYAAABAHklQAAAABHNCSVQICAgIfAhkiAAABOVJREFU\neJztm0toXUUYx3+JCWnF+KrU+kYLYtHahY+gJKWIr9q6EVypFHRRxYAFn3RjXFnBjYKK1EgEURc+\nUNCIQh0fQVxpiwuRgO83ilItautj8c3h3hxnzpk58829t3J+EE4y38x3vu9/58ycOzOBlpaWvjBU\n+vtV4HfgdeChmrb3AocAdzS47wxwOTAB/A0sAPusbRw4GXjJ1vvBlm8DNgCjwCYlnzmI0RDSdCwY\nAq4EJoFzkfzHgOeAB4HVwAc2pkHXr446vXz6z5AvPw39MYE3WwvsB56KDLKbUST55x22s6z/PcBw\nyWYy+NTERNTV0PFUe895pAOM2/Jh4HrgSeBTYDogvkHQr4oQvUyFLUd+avp7DV0MAa8A/wC7IoIs\nc4H1caPHPm/tZ5fKTQafPo4GTgmsW2AC62nouAXYCzyKzAYuHrf3OCMgPm39oJmGLkL1MhU27fyS\n9G8ygm0BXgN+BVY1aF+w3l7f8NjXAH8Bn/fR54XA1RH3jyFVxylgFvngtyJ5uZgHvgI+CvCZ4zPR\n0lCj32nmp66/qbEfhQQ+AiwCPwUE6eNl4GuP7SpktLjPYTMZfPrYDNwWUR/CZr5UHY8EPkNyXV5T\n9xzgicD4tPWDZhqWidHLVNi08suiv9dgeQS4yP6+gAQ7VtPGxTDwM/B0qfxQ4CZru5P/LghVxZji\n00euhy9Vx522zXRdReAkZPapiy+HfqDz8MXoZTzlmvmp6D8S0LjgPGQEKt63v7PXVcgoEMM64Ahk\nBNlhy5YBlyArVZcB7w2Azxxo6LgZ+a6xM6DuF/anjkHVT6vfaeaXQ//KUeNNZDm24GHk6Z8IcVzi\nFtv2dIftBuBPZKUoJsYUnz60Zz4NHVfb+u9GxlVgPOU59IO0ma+JXsZTrpWfmv6hCy5bkT2K7i+i\n3SNQLOuB74GPHbZZ4BtE5HGHvZc+tdHQseh0HwbUHWNpx61iEPXT7Hda+anpH/LauRLYjgQ92VV+\nor02Xal7q8K+Fwn6NGB3D3xeB9zqaHM4IuC1DtszdF5fQtDSsXjV8i0cdHMzsukcQupnoq2hdr/T\n6nO59HdO2XPARkf5JmT6vTvUuWWNbbfNYz/O2j8hfMEl1acPzdfOOXR0HAV+Q05jVHEYcL+j3DjK\ncukHzV8752iml3GUaeanpn/da+cksus/77B9aa+uEej4Cp/FXsvbHvuMvT6GCBJCDp+aaOq4H5kx\nppCVNBcrkGNNDwTGN2j6NdXLR9P8eqU/sHTUWAt8CxzrqXuCDfSFUvk65GzbrKfds8hGaflEwEok\n4APAXYExavn0oTHz5dBxBOkAi8ixqILlwKXI0vyKwPggn34Qr2FTvQqMo6xJftn1d33nOwZZ1j2T\nzmrTxXRGHOg8+QBXICPKDmQT80fkLNv5yBRejCQvIoJOIKcBFpAlXpApepkt2wC84wm8TA6fWuTS\nEaSzXIOszm1HVvAWgV+QfKfxn7joZpD0S9XLRUp+vdB/CSa2QQX3KPrqxmTy6yLXJnsM2joaZX91\naGyyx2CU/WXTP+fp9H6dfNdkH/K60k8Odh0HQcMUsukfc8Ilho3A+5l895JdpP3nRir/Bx37rWEK\nWfUvP9UHkH0J35JsqM8p3P8zlcLtSGx/KPvVRkND0NfxYNEvlVb/lpaWlpaWlpaWlg7/Ap2JCsCY\nEBHmAAAAAElFTkSuQmCC\n",
228 "text": "[A,B]\u22c5B + [A,C]\u22c5B + A\u22c5[B,C]"
332 "prompt_number": 30,
333 "text": [
334 "[A,B]\u22c5B + [A,C]\u22c5B + A\u22c5[B,C]"
335 ]
229 }
336 }
230 ],
337 ],
231 "collapsed": false,
338 "prompt_number": 30
232 "prompt_number": 30,
233 "input": "comm.expand(commutator=True)"
234 },
339 },
235 {
340 {
236 "source": "Carry out and expand the commutators",
341 "cell_type": "markdown",
237 "cell_type": "markdown"
342 "source": [
343 "Carry out and expand the commutators"
344 ]
238 },
345 },
239 {
346 {
240 "cell_type": "code",
347 "cell_type": "code",
348 "collapsed": false,
349 "input": [
350 "_.doit().expand()"
351 ],
241 "language": "python",
352 "language": "python",
242 "outputs": [
353 "outputs": [
243 {
354 {
355 "latex": [
356 "$$A B C + A \\left(B\\right)^{2} - B A B - C A B$$"
357 ],
244 "output_type": "pyout",
358 "output_type": "pyout",
245 "latex": "$$A B C + A \\left(B\\right)^{2} - B A B - C A B$$",
246 "prompt_number": 31,
247 "png": "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\n",
359 "png": "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\n",
248 "text": "2 \nA\u22c5B\u22c5C + A\u22c5B - B\u22c5A\u22c5B - C\u22c5A\u22c5B"
360 "prompt_number": 31,
361 "text": [
362 "2 ",
363 "A\u22c5B\u22c5C + A\u22c5B - B\u22c5A\u22c5B - C\u22c5A\u22c5B"
364 ]
249 }
365 }
250 ],
366 ],
251 "collapsed": false,
367 "prompt_number": 31
252 "prompt_number": 31,
253 "input": "_.doit().expand()\n"
254 },
368 },
255 {
369 {
256 "source": "Take the dagger",
370 "cell_type": "markdown",
257 "cell_type": "markdown"
371 "source": [
372 "Take the dagger"
373 ]
258 },
374 },
259 {
375 {
260 "cell_type": "code",
376 "cell_type": "code",
377 "collapsed": false,
378 "input": [
379 "Dagger(_)"
380 ],
261 "language": "python",
381 "language": "python",
262 "outputs": [
382 "outputs": [
263 {
383 {
384 "latex": [
385 "$$- B^{\\dagger} A^{\\dagger} B^{\\dagger} - B^{\\dagger} A^{\\dagger} C^{\\dagger} + \\left(B^{\\dagger}\\right)^{2} A^{\\dagger} + C^{\\dagger} B^{\\dagger} A^{\\dagger}$$"
386 ],
264 "output_type": "pyout",
387 "output_type": "pyout",
265 "latex": "$$- B^{\\dagger} A^{\\dagger} B^{\\dagger} - B^{\\dagger} A^{\\dagger} C^{\\dagger} + \\left(B^{\\dagger}\\right)^{2} A^{\\dagger} + C^{\\dagger} B^{\\dagger} A^{\\dagger}$$",
266 "prompt_number": 32,
267 "png": "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\n",
388 "png": "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\n",
268 "text": "2 \n \u2020 \u2020 \u2020 \u2020 \u2020 \u2020 \u239b \u2020\u239e \u2020 \u2020 \u2020 \u2020\n- B \u22c5A \u22c5B - B \u22c5A \u22c5C + \u239dB \u23a0 \u22c5A + C \u22c5B \u22c5A"
389 "prompt_number": 32,
390 "text": [
391 "2 ",
392 " \u2020 \u2020 \u2020 \u2020 \u2020 \u2020 \u239b \u2020\u239e \u2020 \u2020 \u2020 \u2020",
393 "- B \u22c5A \u22c5B - B \u22c5A \u22c5C + \u239dB \u23a0 \u22c5A + C \u22c5B \u22c5A"
394 ]
269 }
395 }
270 ],
396 ],
271 "collapsed": false,
397 "prompt_number": 32
272 "prompt_number": 32,
273 "input": "Dagger(_)"
274 }
398 }
275 ]
399 ]
276 }
400 }
277 ],
401 ]
278 "metadata": {
279 "name": "basic_quantum"
280 },
281 "nbformat": 2
282 } No newline at end of file
402 }
@@ -1,56 +1,90 b''
1 {
1 {
2 "metadata": {
3 "name": "clear_output"
4 },
5 "nbformat": 2,
2 "worksheets": [
6 "worksheets": [
3 {
7 {
4 "cells": [
8 "cells": [
5 {
9 {
6 "source": "A demonstration of the ability to clear the output of a cell during execution.",
10 "cell_type": "markdown",
7 "cell_type": "markdown"
11 "source": [
12 "A demonstration of the ability to clear the output of a cell during execution."
13 ]
8 },
14 },
9 {
15 {
10 "cell_type": "code",
16 "cell_type": "code",
17 "collapsed": true,
18 "input": [
19 "from IPython.core.display import clear_output, display"
20 ],
11 "language": "python",
21 "language": "python",
12 "outputs": [],
22 "outputs": [],
13 "collapsed": true,
23 "prompt_number": 8
14 "prompt_number": 8,
15 "input": "from IPython.core.display import clear_output, display"
16 },
24 },
17 {
25 {
18 "cell_type": "code",
26 "cell_type": "code",
27 "collapsed": true,
28 "input": [
29 "import time"
30 ],
19 "language": "python",
31 "language": "python",
20 "outputs": [],
32 "outputs": [],
21 "collapsed": true,
33 "prompt_number": 4
22 "prompt_number": 4,
23 "input": "import time"
24 },
34 },
25 {
35 {
26 "source": "First we show how this works with ``display``:",
36 "cell_type": "markdown",
27 "cell_type": "markdown"
37 "source": [
38 "First we show how this works with ``display``:"
39 ]
28 },
40 },
29 {
41 {
30 "cell_type": "code",
42 "cell_type": "code",
43 "collapsed": false,
44 "input": [
45 "for i in range(10):",
46 " clear_output()",
47 " print \"Time step: %i\" % i",
48 " time.sleep(0.5)"
49 ],
31 "language": "python",
50 "language": "python",
32 "outputs": [
51 "outputs": [
33 {
52 {
34 "output_type": "stream",
53 "output_type": "stream",
35 "stream": "stdout",
54 "stream": "stdout",
36 "text": "\nTime step: 9"
55 "text": [
56 "",
57 "Time step: 9"
58 ]
37 },
59 },
38 {
60 {
39 "output_type": "stream",
61 "output_type": "stream",
40 "stream": "stdout",
62 "stream": "stdout",
41 "text": "\n"
63 "text": [
64 ""
65 ]
42 }
66 }
43 ],
67 ],
44 "collapsed": false,
68 "prompt_number": 20
45 "prompt_number": 20,
46 "input": "for i in range(10):\n clear_output()\n print \"Time step: %i\" % i\n time.sleep(0.5)\n"
47 },
69 },
48 {
70 {
49 "source": "Next, we show that ``clear_output`` can also be used to create a primitive form of animation using\nmatplotlib:",
71 "cell_type": "markdown",
50 "cell_type": "markdown"
72 "source": [
73 "Next, we show that ``clear_output`` can also be used to create a primitive form of animation using",
74 "matplotlib:"
75 ]
51 },
76 },
52 {
77 {
53 "cell_type": "code",
78 "cell_type": "code",
79 "collapsed": false,
80 "input": [
81 "for i in range(10):",
82 " figure()",
83 " plot(rand(100))",
84 " clear_output()",
85 " show()",
86 " time.sleep(0.25)"
87 ],
54 "language": "python",
88 "language": "python",
55 "outputs": [
89 "outputs": [
56 {
90 {
@@ -58,52 +92,66 b''
58 "png": "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\n8P8BdhDzr6dIpNsAAAAASUVORK5CYII=\n"
92 "png": "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\n8P8BdhDzr6dIpNsAAAAASUVORK5CYII=\n"
59 }
93 }
60 ],
94 ],
61 "collapsed": false,
95 "prompt_number": 18
62 "prompt_number": 18,
63 "input": "for i in range(10):\n figure()\n plot(rand(100))\n clear_output()\n show()\n time.sleep(0.25)\n"
64 },
96 },
65 {
97 {
66 "source": "And we can even selectively clear only a subset of stdout/stderr/other display such as figures\n(all are cleared by default).",
98 "cell_type": "markdown",
67 "cell_type": "markdown"
99 "source": [
100 "And we can even selectively clear only a subset of stdout/stderr/other display such as figures",
101 "(all are cleared by default)."
102 ]
68 },
103 },
69 {
104 {
70 "cell_type": "code",
105 "cell_type": "code",
106 "collapsed": false,
107 "input": [
108 "for i in range(4):",
109 " print \"Time step: %i\" % i",
110 " figure()",
111 " plot(rand(100))",
112 " # clear plots, but not stdout:",
113 " clear_output(stdout=False)",
114 " show()",
115 " time.sleep(0.25)"
116 ],
71 "language": "python",
117 "language": "python",
72 "outputs": [
118 "outputs": [
73 {
119 {
74 "output_type": "stream",
120 "output_type": "stream",
75 "stream": "stdout",
121 "stream": "stdout",
76 "text": "Time step: 0\n"
122 "text": [
123 "Time step: 0"
124 ]
77 },
125 },
78 {
126 {
79 "output_type": "stream",
127 "output_type": "stream",
80 "stream": "stdout",
128 "stream": "stdout",
81 "text": "Time step: 1\n"
129 "text": [
130 "Time step: 1"
131 ]
82 },
132 },
83 {
133 {
84 "output_type": "stream",
134 "output_type": "stream",
85 "stream": "stdout",
135 "stream": "stdout",
86 "text": "Time step: 2\n"
136 "text": [
137 "Time step: 2"
138 ]
87 },
139 },
88 {
140 {
89 "output_type": "stream",
141 "output_type": "stream",
90 "stream": "stdout",
142 "stream": "stdout",
91 "text": "Time step: 3\n"
143 "text": [
144 "Time step: 3"
145 ]
92 },
146 },
93 {
147 {
94 "output_type": "display_data",
148 "output_type": "display_data",
95 "png": "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\nZjzrn0OUXq0AAAAASUVORK5CYII=\n"
149 "png": "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\nZjzrn0OUXq0AAAAASUVORK5CYII=\n"
96 }
150 }
97 ],
151 ],
98 "collapsed": false,
152 "prompt_number": 19
99 "prompt_number": 19,
100 "input": "for i in range(4):\n print \"Time step: %i\" % i\n figure()\n plot(rand(100))\n # clear plots, but not stdout:\n clear_output(stdout=False)\n show()\n time.sleep(0.25)\n"
101 }
153 }
102 ]
154 ]
103 }
155 }
104 ],
156 ]
105 "metadata": {
106 "name": "clear_output"
107 },
108 "nbformat": 2
109 } No newline at end of file
157 }
@@ -1,250 +1,362 b''
1 {
1 {
2 "nbformat": 2,
3 "metadata": {
2 "metadata": {
4 "name": "decompose"
3 "name": "decompose"
5 },
4 },
5 "nbformat": 2,
6 "worksheets": [
6 "worksheets": [
7 {
7 {
8 "cells": [
8 "cells": [
9 {
9 {
10 "source": "<h1>Gate Decomposition</h1>",
10 "cell_type": "markdown",
11 "cell_type": "markdown"
11 "source": [
12 "<h1>Gate Decomposition</h1>"
13 ]
12 },
14 },
13 {
15 {
14 "cell_type": "code",
16 "cell_type": "code",
17 "collapsed": true,
18 "input": [
19 "%load_ext sympyprinting"
20 ],
15 "language": "python",
21 "language": "python",
16 "outputs": [],
22 "outputs": [],
17 "collapsed": true,
23 "prompt_number": 1
18 "prompt_number": 1,
19 "input": "%load_ext sympyprinting"
20 },
24 },
21 {
25 {
22 "cell_type": "code",
26 "cell_type": "code",
27 "collapsed": true,
28 "input": [
29 "from sympy import sqrt, symbols, Rational",
30 "from sympy import expand, Eq, Symbol, simplify, exp, sin",
31 "from sympy.physics.quantum import *",
32 "from sympy.physics.quantum.qubit import *",
33 "from sympy.physics.quantum.gate import *",
34 "from sympy.physics.quantum.grover import *",
35 "from sympy.physics.quantum.qft import QFT, IQFT, Fourier",
36 "from sympy.physics.quantum.circuitplot import circuit_plot"
37 ],
23 "language": "python",
38 "language": "python",
24 "outputs": [],
39 "outputs": [],
25 "collapsed": true,
40 "prompt_number": 2
26 "prompt_number": 2,
27 "input": "from sympy import sqrt, symbols, Rational\nfrom sympy import expand, Eq, Symbol, simplify, exp, sin\nfrom sympy.physics.quantum import *\nfrom sympy.physics.quantum.qubit import *\nfrom sympy.physics.quantum.gate import *\nfrom sympy.physics.quantum.grover import *\nfrom sympy.physics.quantum.qft import QFT, IQFT, Fourier\nfrom sympy.physics.quantum.circuitplot import circuit_plot"
28 },
41 },
29 {
42 {
30 "source": "<h2>Example 1</h2>",
43 "cell_type": "markdown",
31 "cell_type": "markdown"
44 "source": [
45 "<h2>Example 1</h2>"
46 ]
32 },
47 },
33 {
48 {
34 "source": "Create a symbolic controlled-Y gate",
49 "cell_type": "markdown",
35 "cell_type": "markdown"
50 "source": [
51 "Create a symbolic controlled-Y gate"
52 ]
36 },
53 },
37 {
54 {
38 "cell_type": "code",
55 "cell_type": "code",
56 "collapsed": false,
57 "input": [
58 "CY10 = CGate(1, Y(0)); CY10"
59 ],
39 "language": "python",
60 "language": "python",
40 "outputs": [
61 "outputs": [
41 {
62 {
63 "latex": [
64 "$$C_{1}{\\left(Y_{0}\\right)}$$"
65 ],
42 "output_type": "pyout",
66 "output_type": "pyout",
43 "latex": "$$C_{1}{\\left(Y_{0}\\right)}$$",
44 "prompt_number": 3,
45 "png": "iVBORw0KGgoAAAANSUhEUgAAADcAAAAYCAYAAABeIWWlAAAABHNCSVQICAgIfAhkiAAAAxZJREFU\nWIXt2EuoVlUUwPHfvb6KW3aLwgd1UySvNAgfGYJpBQ5CwhCCBmrq4KKENXBQ0WMWESIRohMRH1yp\nIKJEMGgQQoWIID2wBBU1xAi0p2mhlYO1Pzz33PP6PrMG+YfDx9l7PfZjrbX3+fgfMxVr8S4+w0d4\nC5PRhR0Y34Hdtfgaf6fnFNYVyC3BX0nmN2zvwNcwRuAFnMbTuCfTdxf2YhsOt2GzF0/l2naJgS+q\n0PsA6zGqoO9ZdLcxBn3YhxOYViIzMw1qY0ObYzGIW3LtTyQ7O0v0VohdLuMRvNlwDEZiP45jQo3s\n91jc0O42TC9ovwE/4xx6cn3zsaGB7a1iB2t5Tazk0gayn4pQq2M6dlf0b00+l2TapuAdsdh13CbS\n48YqoRn4E4c0i+MnG8jA23ison+BmNye9N6L9zVbuBavYmWVwEvJyUAbRusYiTMi58roFoXrIiaK\nxZjSpp+lIp1K+VBMblabhquYiy8ayL2RfB8SudYu9+OSijD+QYRlZewmpjZ0usyVcKtikZjciw3t\n5rk56U/KNmZz6yR+woUaQ3eoie8M45PNOmam3yYLUcSv+A53Zxuzk9srKk9fjaE1hp8tfaK65Rmt\nWcWbLxbhy4K+CXgOq5PfiSU2zuGmMgdz8Lu4mZSxKj0tevCyOISPFsgPqM+5UTiv/LjYhYczYywq\nHKNFQZpd5ejR5OgZQ3OvH69jYYneAsWTW5jsdVX4nCfy5fmCvn5RC0ak9y5xebgvJ3dvsnFnhR/E\n7NfjE3FR3iF2Z3KFTtnkbhVVbFJB3zKxC2fTwE7iY0Pz5nF8k9P7HMtzbYtxLO+gKB8OpOef4Ecx\ngX5xV80ymJ4qbhc7n+WC4XfUaeIoG0JbN+oO2SwuyJ1wXOxqlh4Rqi26xVGyJa/8b0xuUFwMHupA\n96A4erKMw7eZ9zU4IsL1mlCWcy1miVAf04Htw658T84Qx0VrU/rwlfLj4aroEh+z74nceEX59elB\nxRWxjtli91dgEx7I9G1SUeiqSnRT8n8znMcvJbJj8EeHfop0r8beda7zX3AZgzubCkf7gz4AAAAA\nSUVORK5CYII=\n",
67 "png": "iVBORw0KGgoAAAANSUhEUgAAADcAAAAYCAYAAABeIWWlAAAABHNCSVQICAgIfAhkiAAAAxZJREFU\nWIXt2EuoVlUUwPHfvb6KW3aLwgd1UySvNAgfGYJpBQ5CwhCCBmrq4KKENXBQ0WMWESIRohMRH1yp\nIKJEMGgQQoWIID2wBBU1xAi0p2mhlYO1Pzz33PP6PrMG+YfDx9l7PfZjrbX3+fgfMxVr8S4+w0d4\nC5PRhR0Y34Hdtfgaf6fnFNYVyC3BX0nmN2zvwNcwRuAFnMbTuCfTdxf2YhsOt2GzF0/l2naJgS+q\n0PsA6zGqoO9ZdLcxBn3YhxOYViIzMw1qY0ObYzGIW3LtTyQ7O0v0VohdLuMRvNlwDEZiP45jQo3s\n91jc0O42TC9ovwE/4xx6cn3zsaGB7a1iB2t5Tazk0gayn4pQq2M6dlf0b00+l2TapuAdsdh13CbS\n48YqoRn4E4c0i+MnG8jA23ison+BmNye9N6L9zVbuBavYmWVwEvJyUAbRusYiTMi58roFoXrIiaK\nxZjSpp+lIp1K+VBMblabhquYiy8ayL2RfB8SudYu9+OSijD+QYRlZewmpjZ0usyVcKtikZjciw3t\n5rk56U/KNmZz6yR+woUaQ3eoie8M45PNOmam3yYLUcSv+A53Zxuzk9srKk9fjaE1hp8tfaK65Rmt\nWcWbLxbhy4K+CXgOq5PfiSU2zuGmMgdz8Lu4mZSxKj0tevCyOISPFsgPqM+5UTiv/LjYhYczYywq\nHKNFQZpd5ejR5OgZQ3OvH69jYYneAsWTW5jsdVX4nCfy5fmCvn5RC0ak9y5xebgvJ3dvsnFnhR/E\n7NfjE3FR3iF2Z3KFTtnkbhVVbFJB3zKxC2fTwE7iY0Pz5nF8k9P7HMtzbYtxLO+gKB8OpOef4Ecx\ngX5xV80ymJ4qbhc7n+WC4XfUaeIoG0JbN+oO2SwuyJ1wXOxqlh4Rqi26xVGyJa/8b0xuUFwMHupA\n96A4erKMw7eZ9zU4IsL1mlCWcy1miVAf04Htw658T84Qx0VrU/rwlfLj4aroEh+z74nceEX59elB\nxRWxjtli91dgEx7I9G1SUeiqSnRT8n8znMcvJbJj8EeHfop0r8beda7zX3AZgzubCkf7gz4AAAAA\nSUVORK5CYII=\n",
46 "text": "C \u239bY \u239e\n 1\u239d 0\u23a0"
68 "prompt_number": 3,
69 "text": [
70 "C \u239bY \u239e",
71 " 1\u239d 0\u23a0"
72 ]
47 }
73 }
48 ],
74 ],
49 "collapsed": false,
75 "prompt_number": 3
50 "prompt_number": 3,
51 "input": "CY10 = CGate(1, Y(0)); CY10\n"
52 },
76 },
53 {
77 {
54 "source": "Decompose it into elementary gates and plot it",
78 "cell_type": "markdown",
55 "cell_type": "markdown"
79 "source": [
80 "Decompose it into elementary gates and plot it"
81 ]
56 },
82 },
57 {
83 {
58 "cell_type": "code",
84 "cell_type": "code",
85 "collapsed": false,
86 "input": [
87 "CY10.decompose()"
88 ],
59 "language": "python",
89 "language": "python",
60 "outputs": [
90 "outputs": [
61 {
91 {
92 "latex": [
93 "$$S_{0} CNOT_{1,0} S_{0} Z_{0}$$"
94 ],
62 "output_type": "pyout",
95 "output_type": "pyout",
63 "latex": "$$S_{0} CNOT_{1,0} S_{0} Z_{0}$$",
64 "prompt_number": 4,
65 "png": "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\nwL9xjqSsQYpqzQAAAABJRU5ErkJggg==\n",
96 "png": "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\nwL9xjqSsQYpqzQAAAABJRU5ErkJggg==\n",
66 "text": "S \u22c5CNOT \u22c5S \u22c5Z \n 0 1,0 0 0"
97 "prompt_number": 4,
98 "text": [
99 "S \u22c5CNOT \u22c5S \u22c5Z ",
100 " 0 1,0 0 0"
101 ]
67 }
102 }
68 ],
103 ],
69 "collapsed": false,
104 "prompt_number": 4
70 "prompt_number": 4,
71 "input": "CY10.decompose()\n"
72 },
105 },
73 {
106 {
74 "cell_type": "code",
107 "cell_type": "code",
108 "collapsed": false,
109 "input": [
110 "circuit_plot(CY10.decompose(), nqubits=2)"
111 ],
75 "language": "python",
112 "language": "python",
76 "outputs": [
113 "outputs": [
77 {
114 {
78 "output_type": "pyout",
115 "output_type": "pyout",
79 "prompt_number": 5,
116 "prompt_number": 5,
80 "text": "&lt;sympy.physics.quantum.circuitplot.CircuitPlot object at 0x2c85f10&gt;"
117 "text": [
118 "&lt;sympy.physics.quantum.circuitplot.CircuitPlot object at 0x2c85f10&gt;"
119 ]
81 },
120 },
82 {
121 {
83 "output_type": "display_data",
122 "output_type": "display_data",
84 "png": "iVBORw0KGgoAAAANSUhEUgAAAQ8AAACOCAYAAAAvtI33AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAACT5JREFUeJzt3EtIVH8YxvH32DCjleCFLhhoGBRBEGFEEFmLSMzSLLu4\nkGhTUFItui2sIIqiFkEUFaUuwqg2brqH1SK6/BehdLEL2t0wKmy6p/b+d5HlqPN69MyM3w/M5pwz\nP57feeNpjoM6qhoUkUQBgDA4qqpehwAQfeK8DgAgOlEeAEwoDwAmlAcAE8oDgAnlAcCE8gBgQnkA\nMKE8AJhQHgBMKA8AJpQHABPKA4AJ5QHAhPIAYEJ5ADChPACYUB4ATCgPACaUBwATygOACeUBwITy\nAGBCeQAwoTwAmFAeAEwoDwAmlAcAE8oDgAnlAcCE8gBgQnkAMKE8AJhQHogqz58/l0ePHomqeh1l\nwKM8EBWamppk8uTJMn78eMnKypLRo0fLnTt3vI41oDlKhSMKZGVlSV1dnbS3t/8+lpycLE1NTRIf\nH+9hsoGLTx6IeE+fPpX6+voOxSEi0t7eLhcvXvQoFUJ+8nAcp7+zAIgivlAneJpBpPj165ekp6fL\n69evOxxPSEiQV69eSUpKikfJBjYeWxDx4uLipLq6WpKSkiQxMVFEROLj46WyspLi8BA/MEXU+Pr1\nq1y4cEEWLlwo7969k9TUVK8jDWiUB6KO4zg8VkcAHlsAmFAeAEwoDwAmlAcAE8oDgAnlAcCE8gBg\nQnkAMKE8AJhQHgBMKA8AJpQHABPKA4AJ5QHAhPIAYEJ5ADChPACYUB4ATCgPACaUBwATygOACeUB\nwITyAGBCeQAwoTwAmFAeAEwoDwAmlAcAE8oDgAnlAcCE8gBgQnkAMKE8AJhQHgBMKA8AJpQHABPK\nA4AJ5QHAhPIAYEJ5ADCJqfJISUkRx3FcfaWkpHi9rQ7c3GOk7S3WxdrsHFVVr0O4xXEccXs7fbFm\nb7iZJ9L21lPkjox7EFOfPBCbXrx4IWVlZTJu3DhJSkoSEZHRo0fLqlWr5O7dux6nG7gGRHm8fftW\n/H6/xMXFid/vl7Fjx8rs2bMlNzdXcnNzJTU1VeLi4qS6utrrqL3S1tYm+/fvl5KSEikuLpbCwkKp\nqKiQL1++yLx587yOF7Y3b97IggULZNKkSfLp0yc5efKkNDY2iojIpUuXZOTIkZKbmyvZ2dlSV1fn\ncdrei7r5aQwJtZ2KigoNBAK6f/9+bWtr63CuurpaBw0apGvXrg1rTa+EyvP161fNy8vTnTt3dji+\na9cuHTt2rBYXF/d4rUjw+PFjzcjI0C1btujnz587nPsz98+fP7W8vFyHDRumNTU1/R0zLF3d73Dn\nFwmz8z6Bi0Ld0IULF+rZs2f/OX7r1i1NSEjQ+fPnh72mV0LlKSoq0hUrVnR6Li0tTcvLy3u8ltea\nm5s1MzNTDx8+3On5znJfvXpVhw0bprW1tX0dz6yr+x3u/CJhdt4ncFFnN/THjx86c+bMf443NDTo\n8OHDdcqUKfrt27ew1vRSZ3laWlrU7/fr5cuXO31PTk6OPnv2rEdrRYLS0lJds2ZNyPOhch89elSz\ns7P7KlavhcptmV8kzC7mf+bR3NwsZWVlHY59+PBB5syZI0OGDJEzZ85IfHy8R+nccf36dWltbZXH\njx93en769OmSkZHRz6lsPn36JFVVVbJhw4aw37ts2TJ58uSJ3Lt3rw+S9Z2onZ/X7eWmnmzn+/fv\nOn36dE1JSdH6+npX1uxPneV59+6d+nw+DQQCun79er1+/bq2traa1vLaoUOHtLCwsMtrusq9detW\nXbVqlduxXBEqt2V+kTA77xO4qLsb+uvXLy0uLtZAIKBXr151Zc3+FirP3r17NRAIqOM46jiODhky\nRFevXq0tLS1hr+WlgoICPXnyZJfXdJX7wYMHmpmZ6XYsV3SVO9z5RcLsvE/gou5u6ObNm9VxHD1+\n/Lhra/a3rvI8fPhQt23bptnZ2er3+9VxHC0qKjKt5ZXs7Oxui72r3O/fv9ekpCSXU7mju/sdzvwi\nYXYhE4hIVL5COXLkiDqOo9u3b+9w/Nu3b3rlypXQNygC9tTTPf7p/v37mp6ern6/X3/8+BE1e4v1\nV091Nz+v9yEiA+OTx/nz59Xn8+ny5cv/OVdeXq7V1dVhr+mVv/Ps3r075LWbN29Wv9+v379/79Fa\nkWDJkiWdfq38p65y//fffzp+/Hi3Y7mis9zW+UXC7GL+25ba2lpZvHixzJw5U44ePfrP+crKSsnJ\nyfEgWe99/vxZrl27FvJ8MBiUrKwsCQQC/ReqlxYtWiSVlZXm91dWVsrixYtdTNR3on5+XreXm/7e\nzsuXLzUtLU0nTJigwWDwn+urqqo0Pz8/rDW99meec+fOqc/n04aGhn+ua25u1hEjRui1a9d6tFak\naG1t1VGjRmldXV3Ia0Ll/vjxoyYnJ+vr16/7Kl6v/J27N/OLhNnF7CePYDAoc+bMEVWVs2fPSmJi\n4u9zTU1Nsnv3bikpKZGCggIPU/bOlStXJDMzUzZt2iT19fW/jzc2NkpBQYFs2rRJZsyY4WHC8Pl8\nPlm5cqWUlZVJe3t7WO/dtWuXzJo1S9LS0voonbuifX4+rwP0lXXr1sn9+/dl1KhRsmTJEhER+fnz\npzQ0NEgwGBQREb/fH5m/cNRDzc3Ncvv2bamtrZW1a9dKS0uLpKamSkJCguzbt0+mTp3qdUSTjRs3\nSk5OjpSWlsqBAwdk0KBB3b7n4MGDcurUKbl582Y/JHRHtM+Pv+fhwZq9EWt/EyKUlpYWKSwslKFD\nh8qOHTtk4sSJv8/9mfv58+eyZ88euXz5spw/f17GjBnjVeRuxdrsYvaxBdEtKSlJLly4IFOnTpW5\nc+fKtGnT5NixY3Lp0iURETlx4oTk5+dLVlaW+P1+uXHjRkQXRyzik4cHa/ZGrP3v1RNtbW1y5swZ\nOX36tLx9+1ZqampkwYIFkpeXJ0uXLpXBgwd7HbFHYm12lIcHa/ZGrP0DHEhibXY8tgAwiblvWxzH\ncXW95ORkV9dzg1t7jMS9xbpYml1MPbYA6D88tgAwoTwAmFAeAEwoDwAmlAcAE8oDgAnlAcCE8gBg\nQnkAMKE8AJhQHgBMKA8AJpQHABPKA4AJ5QHAhPIAYEJ5ADChPACYUB4ATCgPACaUBwATygOACeUB\nwITyAGBCeQAwoTwAmFAeAEwoDwAmlAcAE8oDgAnlAcCE8gBgQnkAMKE8AJj8DwAon3puf4mgAAAA\nAElFTkSuQmCC\n"
123 "png": "iVBORw0KGgoAAAANSUhEUgAAAQ8AAACOCAYAAAAvtI33AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAACT5JREFUeJzt3EtIVH8YxvH32DCjleCFLhhoGBRBEGFEEFmLSMzSLLu4\nkGhTUFItui2sIIqiFkEUFaUuwqg2brqH1SK6/BehdLEL2t0wKmy6p/b+d5HlqPN69MyM3w/M5pwz\nP57feeNpjoM6qhoUkUQBgDA4qqpehwAQfeK8DgAgOlEeAEwoDwAmlAcAE8oDgAnlAcCE8gBgQnkA\nMKE8AJhQHgBMKA8AJpQHABPKA4AJ5QHAhPIAYEJ5ADChPACYUB4ATCgPACaUBwATygOACeUBwITy\nAGBCeQAwoTwAmFAeAEwoDwAmlAcAE8oDgAnlAcCE8gBgQnkAMKE8AJhQHogqz58/l0ePHomqeh1l\nwKM8EBWamppk8uTJMn78eMnKypLRo0fLnTt3vI41oDlKhSMKZGVlSV1dnbS3t/8+lpycLE1NTRIf\nH+9hsoGLTx6IeE+fPpX6+voOxSEi0t7eLhcvXvQoFUJ+8nAcp7+zAIgivlAneJpBpPj165ekp6fL\n69evOxxPSEiQV69eSUpKikfJBjYeWxDx4uLipLq6WpKSkiQxMVFEROLj46WyspLi8BA/MEXU+Pr1\nq1y4cEEWLlwo7969k9TUVK8jDWiUB6KO4zg8VkcAHlsAmFAeAEwoDwAmlAcAE8oDgAnlAcCE8gBg\nQnkAMKE8AJhQHgBMKA8AJpQHABPKA4AJ5QHAhPIAYEJ5ADChPACYUB4ATCgPACaUBwATygOACeUB\nwITyAGBCeQAwoTwAmFAeAEwoDwAmlAcAE8oDgAnlAcCE8gBgQnkAMKE8AJhQHgBMKA8AJpQHABPK\nA4AJ5QHAhPIAYEJ5ADCJqfJISUkRx3FcfaWkpHi9rQ7c3GOk7S3WxdrsHFVVr0O4xXEccXs7fbFm\nb7iZJ9L21lPkjox7EFOfPBCbXrx4IWVlZTJu3DhJSkoSEZHRo0fLqlWr5O7dux6nG7gGRHm8fftW\n/H6/xMXFid/vl7Fjx8rs2bMlNzdXcnNzJTU1VeLi4qS6utrrqL3S1tYm+/fvl5KSEikuLpbCwkKp\nqKiQL1++yLx587yOF7Y3b97IggULZNKkSfLp0yc5efKkNDY2iojIpUuXZOTIkZKbmyvZ2dlSV1fn\ncdrei7r5aQwJtZ2KigoNBAK6f/9+bWtr63CuurpaBw0apGvXrg1rTa+EyvP161fNy8vTnTt3dji+\na9cuHTt2rBYXF/d4rUjw+PFjzcjI0C1btujnz587nPsz98+fP7W8vFyHDRumNTU1/R0zLF3d73Dn\nFwmz8z6Bi0Ld0IULF+rZs2f/OX7r1i1NSEjQ+fPnh72mV0LlKSoq0hUrVnR6Li0tTcvLy3u8ltea\nm5s1MzNTDx8+3On5znJfvXpVhw0bprW1tX0dz6yr+x3u/CJhdt4ncFFnN/THjx86c+bMf443NDTo\n8OHDdcqUKfrt27ew1vRSZ3laWlrU7/fr5cuXO31PTk6OPnv2rEdrRYLS0lJds2ZNyPOhch89elSz\ns7P7KlavhcptmV8kzC7mf+bR3NwsZWVlHY59+PBB5syZI0OGDJEzZ85IfHy8R+nccf36dWltbZXH\njx93en769OmSkZHRz6lsPn36JFVVVbJhw4aw37ts2TJ58uSJ3Lt3rw+S9Z2onZ/X7eWmnmzn+/fv\nOn36dE1JSdH6+npX1uxPneV59+6d+nw+DQQCun79er1+/bq2traa1vLaoUOHtLCwsMtrusq9detW\nXbVqlduxXBEqt2V+kTA77xO4qLsb+uvXLy0uLtZAIKBXr151Zc3+FirP3r17NRAIqOM46jiODhky\nRFevXq0tLS1hr+WlgoICPXnyZJfXdJX7wYMHmpmZ6XYsV3SVO9z5RcLsvE/gou5u6ObNm9VxHD1+\n/Lhra/a3rvI8fPhQt23bptnZ2er3+9VxHC0qKjKt5ZXs7Oxui72r3O/fv9ekpCSXU7mju/sdzvwi\nYXYhE4hIVL5COXLkiDqOo9u3b+9w/Nu3b3rlypXQNygC9tTTPf7p/v37mp6ern6/X3/8+BE1e4v1\nV091Nz+v9yEiA+OTx/nz59Xn8+ny5cv/OVdeXq7V1dVhr+mVv/Ps3r075LWbN29Wv9+v379/79Fa\nkWDJkiWdfq38p65y//fffzp+/Hi3Y7mis9zW+UXC7GL+25ba2lpZvHixzJw5U44ePfrP+crKSsnJ\nyfEgWe99/vxZrl27FvJ8MBiUrKwsCQQC/ReqlxYtWiSVlZXm91dWVsrixYtdTNR3on5+XreXm/7e\nzsuXLzUtLU0nTJigwWDwn+urqqo0Pz8/rDW99meec+fOqc/n04aGhn+ua25u1hEjRui1a9d6tFak\naG1t1VGjRmldXV3Ia0Ll/vjxoyYnJ+vr16/7Kl6v/J27N/OLhNnF7CePYDAoc+bMEVWVs2fPSmJi\n4u9zTU1Nsnv3bikpKZGCggIPU/bOlStXJDMzUzZt2iT19fW/jzc2NkpBQYFs2rRJZsyY4WHC8Pl8\nPlm5cqWUlZVJe3t7WO/dtWuXzJo1S9LS0voonbuifX4+rwP0lXXr1sn9+/dl1KhRsmTJEhER+fnz\npzQ0NEgwGBQREb/fH5m/cNRDzc3Ncvv2bamtrZW1a9dKS0uLpKamSkJCguzbt0+mTp3qdUSTjRs3\nSk5OjpSWlsqBAwdk0KBB3b7n4MGDcurUKbl582Y/JHRHtM+Pv+fhwZq9EWt/EyKUlpYWKSwslKFD\nh8qOHTtk4sSJv8/9mfv58+eyZ88euXz5spw/f17GjBnjVeRuxdrsYvaxBdEtKSlJLly4IFOnTpW5\nc+fKtGnT5NixY3Lp0iURETlx4oTk5+dLVlaW+P1+uXHjRkQXRyzik4cHa/ZGrP3v1RNtbW1y5swZ\nOX36tLx9+1ZqampkwYIFkpeXJ0uXLpXBgwd7HbFHYm12lIcHa/ZGrP0DHEhibXY8tgAwiblvWxzH\ncXW95ORkV9dzg1t7jMS9xbpYml1MPbYA6D88tgAwoTwAmFAeAEwoDwAmlAcAE8oDgAnlAcCE8gBg\nQnkAMKE8AJhQHgBMKA8AJpQHABPKA4AJ5QHAhPIAYEJ5ADChPACYUB4ATCgPACaUBwATygOACeUB\nwITyAGBCeQAwoTwAmFAeAEwoDwAmlAcAE8oDgAnlAcCE8gBgQnkAMKE8AJj8DwAon3puf4mgAAAA\nAElFTkSuQmCC\n"
85 }
124 }
86 ],
125 ],
87 "collapsed": false,
126 "prompt_number": 5
88 "prompt_number": 5,
89 "input": "circuit_plot(CY10.decompose(), nqubits=2)"
90 },
127 },
91 {
128 {
92 "source": "<h2>Example 2</h2>",
129 "cell_type": "markdown",
93 "cell_type": "markdown"
130 "source": [
131 "<h2>Example 2</h2>"
132 ]
94 },
133 },
95 {
134 {
96 "source": "Create a controlled-Z gate",
135 "cell_type": "markdown",
97 "cell_type": "markdown"
136 "source": [
137 "Create a controlled-Z gate"
138 ]
98 },
139 },
99 {
140 {
100 "cell_type": "code",
141 "cell_type": "code",
142 "collapsed": false,
143 "input": [
144 "CZ01 = CGate(0, Z(1)); CZ01"
145 ],
101 "language": "python",
146 "language": "python",
102 "outputs": [
147 "outputs": [
103 {
148 {
149 "latex": [
150 "$$C_{0}{\\left(Z_{1}\\right)}$$"
151 ],
104 "output_type": "pyout",
152 "output_type": "pyout",
105 "latex": "$$C_{0}{\\left(Z_{1}\\right)}$$",
106 "prompt_number": 6,
107 "png": "iVBORw0KGgoAAAANSUhEUgAAADkAAAAYCAYAAABA6FUWAAAABHNCSVQICAgIfAhkiAAAA1JJREFU\nWIXt2FuIVWUUwPHfNOMMXZjR0pp5qLBoxqgH04rIQEnoMkQQXYToYsJkRBFEpBURBYm9GdRDPiQy\nUEQvRZQihD50E8EuUEZBWg9O9wtZmWT1sPbOc/bsvc93zpyHHuYP+2F/a5219trfWutb+zCLUdyP\nl/E2duAFLEQPtmK4C34m8E92/Yr3sT273szWf8ZgF3z9Ry/W4yDuxjkNstOxC1vwaRs25+K2Ctnr\n+AKXlsi24ghW1ti+r43nAGfgXRzAogqdJeLtPpNocxCTGCqRnYD9FbLHMz+rW9i/Bk8mPos+7M6c\njrTQ/QbXJdrdgsUVsmvxUMn6ahHgE4k+XsKaFMUNmeFbEnTfEinYisV4rUZ+vem7uFKk6GSC/Zxh\nfII5dUoX4Cg+xnEJRlclOn9RpFMq54smsxP9bfwONuHGOoVHxC5OtGm4jj58L70rjuAr7MO8Dvzd\nJbpxJdtEkEs7MF7FMnyYqHsS9opaX9ihvxU4VKfwo0jX4xOMjSY6vRVvJOj1Znq/4aKC7EKcluhv\nRGzU/MbFxtr7UtTCHy0MLcAdiU6HM5uteBZX4mbsKcjW4ZdEf1NimDizcbExyF04WZyTddwjCjxn\nmRgcHsDDBd1+UZd1rMNaMVm9WpCdLSarw9n9HDyPs2rsHRKpX8olmbH1NQbWZlfOAjH19Gb3m7KH\nzZlQX5Or8DeeLpH1ibPv9ux+jTgz/1I9pAyKdD23xqer8Dvu1VybY9iI8YL+Y9jccH+5OKtyxjN7\nPSW+LhMv9RXNGdWXBbFNBHRK4XeHVQd5sQiy6fwuptJ2LBdveIeozyl8jufEJNTIIs3z60HxFgfw\npxgP+0WNHGjQ68+CGxCd9J1sfUikaH6g78QPFQGVMYaPFPpAWb3sMb34q5gvdionb1pD+BY/iTFx\nTHOQRxQ6YJfIM6CJlMmmjv0iPXJOdOyzKGczbpihnxT6cLVoTE3MNMi9OLXhfhhfi53KmRQDxvIZ\n+mrFg3gPn3Xb8BLNqf0UHi3RW5rpDXTBZ1njGcUHKkqgt2yxDaYyw1fgPLGrGzTvZK63DzeJfxg6\nYVx8fq0Q5+Bcx46njbhTjITTKGvtndAjOmIxuCJ51+2EeZoz4Si+64LdWWb5P/EvN2Kn7DFqDnoA\nAAAASUVORK5CYII=\n",
153 "png": "iVBORw0KGgoAAAANSUhEUgAAADkAAAAYCAYAAABA6FUWAAAABHNCSVQICAgIfAhkiAAAA1JJREFU\nWIXt2FuIVWUUwPHfNOMMXZjR0pp5qLBoxqgH04rIQEnoMkQQXYToYsJkRBFEpBURBYm9GdRDPiQy\nUEQvRZQihD50E8EuUEZBWg9O9wtZmWT1sPbOc/bsvc93zpyHHuYP+2F/a5219trfWutb+zCLUdyP\nl/E2duAFLEQPtmK4C34m8E92/Yr3sT273szWf8ZgF3z9Ry/W4yDuxjkNstOxC1vwaRs25+K2Ctnr\n+AKXlsi24ghW1ti+r43nAGfgXRzAogqdJeLtPpNocxCTGCqRnYD9FbLHMz+rW9i/Bk8mPos+7M6c\njrTQ/QbXJdrdgsUVsmvxUMn6ahHgE4k+XsKaFMUNmeFbEnTfEinYisV4rUZ+vem7uFKk6GSC/Zxh\nfII5dUoX4Cg+xnEJRlclOn9RpFMq54smsxP9bfwONuHGOoVHxC5OtGm4jj58L70rjuAr7MO8Dvzd\nJbpxJdtEkEs7MF7FMnyYqHsS9opaX9ihvxU4VKfwo0jX4xOMjSY6vRVvJOj1Znq/4aKC7EKcluhv\nRGzU/MbFxtr7UtTCHy0MLcAdiU6HM5uteBZX4mbsKcjW4ZdEf1NimDizcbExyF04WZyTddwjCjxn\nmRgcHsDDBd1+UZd1rMNaMVm9WpCdLSarw9n9HDyPs2rsHRKpX8olmbH1NQbWZlfOAjH19Gb3m7KH\nzZlQX5Or8DeeLpH1ibPv9ux+jTgz/1I9pAyKdD23xqer8Dvu1VybY9iI8YL+Y9jccH+5OKtyxjN7\nPSW+LhMv9RXNGdWXBbFNBHRK4XeHVQd5sQiy6fwuptJ2LBdveIeozyl8jufEJNTIIs3z60HxFgfw\npxgP+0WNHGjQ68+CGxCd9J1sfUikaH6g78QPFQGVMYaPFPpAWb3sMb34q5gvdionb1pD+BY/iTFx\nTHOQRxQ6YJfIM6CJlMmmjv0iPXJOdOyzKGczbpihnxT6cLVoTE3MNMi9OLXhfhhfi53KmRQDxvIZ\n+mrFg3gPn3Xb8BLNqf0UHi3RW5rpDXTBZ1njGcUHKkqgt2yxDaYyw1fgPLGrGzTvZK63DzeJfxg6\nYVx8fq0Q5+Bcx46njbhTjITTKGvtndAjOmIxuCJ51+2EeZoz4Si+64LdWWb5P/EvN2Kn7DFqDnoA\nAAAASUVORK5CYII=\n",
108 "text": "C \u239bZ \u239e\n 0\u239d 1\u23a0"
154 "prompt_number": 6,
155 "text": [
156 "C \u239bZ \u239e",
157 " 0\u239d 1\u23a0"
158 ]
109 }
159 }
110 ],
160 ],
111 "collapsed": false,
161 "prompt_number": 6
112 "prompt_number": 6,
113 "input": "CZ01 = CGate(0, Z(1)); CZ01\n"
114 },
162 },
115 {
163 {
116 "source": "Decompose and plot it",
164 "cell_type": "markdown",
117 "cell_type": "markdown"
165 "source": [
166 "Decompose and plot it"
167 ]
118 },
168 },
119 {
169 {
120 "cell_type": "code",
170 "cell_type": "code",
171 "collapsed": false,
172 "input": [
173 "CZ01.decompose()"
174 ],
121 "language": "python",
175 "language": "python",
122 "outputs": [
176 "outputs": [
123 {
177 {
178 "latex": [
179 "$$H_{1} CNOT_{0,1} H_{1}$$"
180 ],
124 "output_type": "pyout",
181 "output_type": "pyout",
125 "latex": "$$H_{1} CNOT_{0,1} H_{1}$$",
126 "prompt_number": 7,
127 "png": "iVBORw0KGgoAAAANSUhEUgAAAHwAAAAcCAYAAACj6tvkAAAABHNCSVQICAgIfAhkiAAABWZJREFU\naIHtmmtsFUUUx39FoAg+QKiSqtxGULCAqEAk1mINPj6IGJGEDxBBER/1kWAkBmPUqISYGKL4qApG\nHsHY+Pogii2oBVFRa1KxKPVF1EggJGAVCeDzw3/W7t07s7u3dy80dH9f5t45s2dm58ycOWfuhZQU\n4A1gG/Av8CfQAiw1sgzwPvCLkf8GfAbclof+Y4GZwNPARqABaAKmGfllwHxf+yeBzcBfwN/AORad\na4H9Zkx7gcWWNiOA54BXgGXA20A9MNoxzllG30GgGXgH+NrU/QqsN2P/HPgH+CbknTtLsW3xPxOM\nkicc8gVGPr0TetvQoGuA3qa+D/AY8DiwD7go8Nwg4AvT57MO3bPRBJUE6nsAdeb54GKZghbKdRZ9\nDcD9vjFCxyK43dL3u45xFUqxbJHFfKPkCoe8Ae22AXnoXAgcAu50yI9BK/R3oFdAdg0wA9hq5Mdb\nnr8LGBuoK0GLay1aVDYeRbuj3Fc3EHmCIC+geRkeqB+CFlUxKIYtcliDjNPPIuuFdmFLHvpq0aBn\nRrRbCLxlqV8MnAbcYfTUWtqsRIvGzxLk8gaF9DnJ6HzAVzcX+wR/C+y01I8F5oX0UQhJ2yKHHugc\n/NAhvxBN0JKY+kYit9kUo+0c7BPn7bYTgT+ALwPyEmBVoO5hM86rI/rMmHav+epmoXnwU27a2Xb+\nSGB8RD+dIVFbBF/IYwzQH7eBLjHlhjidAMtRoHZfjLat6Bz2cwLQbj63Ay8Bo8g+50cjd+9RDtyD\ndveaiD6HmrKvr24FCsT8TDTlRouOreg4SppEbdHTUe+92OXknokA40xpe/Egp5j2nwKbYrT/xFJX\nRfYKrwNuBG716bw4MJ5a5O5WofMtjMqQvv148xJ3oSdBkrZw8jpKgY6zyHoil/pVTF3XIpdTSECz\niI5d6LEZpUtl5vsKsgO9DabfK2Poryc8KPJoBfaQmwUUkyRtYXXpJUA1SmH2WeTnI9cXd0VdYMrW\nGG3LsEeaZwDfB+rqULo0x3zvjfJUj2Gm3B7RZwaYCuwCPgppNxB5gk1ocRwOkraF1eCVKKL9wPGM\nd27GdWs/mnJHjLb3km000Nm/39K2Hu22m9GY2wLyXaZsJ5x5aKfMRemei2pkgIJcZ54kbQurwb0z\nw3XeVpnS9uLTUC7sp8mU50WMpRLtxuBKnoD9bD2AgsEK5PKD4/EmaVJIn+OQoV8E3owYX1jAVgbc\nDdyCLo4qInR52ObL1mdStrDyMnJZgx3yncB3gbrx6EaqBXgkICtB0esWsqNgP8OR8UotsgeBsx3P\nnYki6UPIE/iZiM6+esezI4DdwKvYz8cgzcgD2ALd1cBk83kUShldGRCEz5efpG2RQ6lREjwvPcaY\nASx3yJc5OhmAjP4ecKqvvj+6PVtE9vWlx8nAz3QEZjbW4T57ZyAj+Xd5XxRItqEoPw4ZtHjWW2Sn\nI6/kX6w/oPw4Ctd8QZFs4a3CDHIL21AaNQSlQd5t1lXAx3S88BR0blQRj73ApejHimdQirYSeMjI\nFqBd6lFq+vsJ3a61oJzaxlNoIdlYjYw7FbntpcDzyOVOJjxzqKDjR51mdINXjdxrIwqYAM4y73DQ\n9+wOoo8wF8W2RaKErdijlenkBozrUAAaRTHnK3SHp3Se7eSmaf1QBtHlSA1eOFuAkwJ1g9Fx1OVI\nDV44B1Bgea757mUOjeb7MHJvCY8Yrrv0fBmKgocadNW3G/2iFOey5WhgNgo8G1Fufz2K6kG//deQ\n/ceLYs5XqO6k7oT7oBTLzx6yI+/uQCnZ0Tpojm9Af5zwKOZ8pbboAtx0pAeQcvioRpckKd2EpOKk\nlJSUlJSUlG7Mf20dXidP7IWnAAAAAElFTkSuQmCC\n",
182 "png": "iVBORw0KGgoAAAANSUhEUgAAAHwAAAAcCAYAAACj6tvkAAAABHNCSVQICAgIfAhkiAAABWZJREFU\naIHtmmtsFUUUx39FoAg+QKiSqtxGULCAqEAk1mINPj6IGJGEDxBBER/1kWAkBmPUqISYGKL4qApG\nHsHY+Pogii2oBVFRa1KxKPVF1EggJGAVCeDzw3/W7t07s7u3dy80dH9f5t45s2dm58ycOWfuhZQU\n4A1gG/Av8CfQAiw1sgzwPvCLkf8GfAbclof+Y4GZwNPARqABaAKmGfllwHxf+yeBzcBfwN/AORad\na4H9Zkx7gcWWNiOA54BXgGXA20A9MNoxzllG30GgGXgH+NrU/QqsN2P/HPgH+CbknTtLsW3xPxOM\nkicc8gVGPr0TetvQoGuA3qa+D/AY8DiwD7go8Nwg4AvT57MO3bPRBJUE6nsAdeb54GKZghbKdRZ9\nDcD9vjFCxyK43dL3u45xFUqxbJHFfKPkCoe8Ae22AXnoXAgcAu50yI9BK/R3oFdAdg0wA9hq5Mdb\nnr8LGBuoK0GLay1aVDYeRbuj3Fc3EHmCIC+geRkeqB+CFlUxKIYtcliDjNPPIuuFdmFLHvpq0aBn\nRrRbCLxlqV8MnAbcYfTUWtqsRIvGzxLk8gaF9DnJ6HzAVzcX+wR/C+y01I8F5oX0UQhJ2yKHHugc\n/NAhvxBN0JKY+kYit9kUo+0c7BPn7bYTgT+ALwPyEmBVoO5hM86rI/rMmHav+epmoXnwU27a2Xb+\nSGB8RD+dIVFbBF/IYwzQH7eBLjHlhjidAMtRoHZfjLat6Bz2cwLQbj63Ay8Bo8g+50cjd+9RDtyD\ndveaiD6HmrKvr24FCsT8TDTlRouOreg4SppEbdHTUe+92OXknokA40xpe/Egp5j2nwKbYrT/xFJX\nRfYKrwNuBG716bw4MJ5a5O5WofMtjMqQvv148xJ3oSdBkrZw8jpKgY6zyHoil/pVTF3XIpdTSECz\niI5d6LEZpUtl5vsKsgO9DabfK2Poryc8KPJoBfaQmwUUkyRtYXXpJUA1SmH2WeTnI9cXd0VdYMrW\nGG3LsEeaZwDfB+rqULo0x3zvjfJUj2Gm3B7RZwaYCuwCPgppNxB5gk1ocRwOkraF1eCVKKL9wPGM\nd27GdWs/mnJHjLb3km000Nm/39K2Hu22m9GY2wLyXaZsJ5x5aKfMRemei2pkgIJcZ54kbQurwb0z\nw3XeVpnS9uLTUC7sp8mU50WMpRLtxuBKnoD9bD2AgsEK5PKD4/EmaVJIn+OQoV8E3owYX1jAVgbc\nDdyCLo4qInR52ObL1mdStrDyMnJZgx3yncB3gbrx6EaqBXgkICtB0esWsqNgP8OR8UotsgeBsx3P\nnYki6UPIE/iZiM6+esezI4DdwKvYz8cgzcgD2ALd1cBk83kUShldGRCEz5efpG2RQ6lREjwvPcaY\nASx3yJc5OhmAjP4ecKqvvj+6PVtE9vWlx8nAz3QEZjbW4T57ZyAj+Xd5XxRItqEoPw4ZtHjWW2Sn\nI6/kX6w/oPw4Ctd8QZFs4a3CDHIL21AaNQSlQd5t1lXAx3S88BR0blQRj73ApejHimdQirYSeMjI\nFqBd6lFq+vsJ3a61oJzaxlNoIdlYjYw7FbntpcDzyOVOJjxzqKDjR51mdINXjdxrIwqYAM4y73DQ\n9+wOoo8wF8W2RaKErdijlenkBozrUAAaRTHnK3SHp3Se7eSmaf1QBtHlSA1eOFuAkwJ1g9Fx1OVI\nDV44B1Bgea757mUOjeb7MHJvCY8Yrrv0fBmKgocadNW3G/2iFOey5WhgNgo8G1Fufz2K6kG//deQ\n/ceLYs5XqO6k7oT7oBTLzx6yI+/uQCnZ0Tpojm9Af5zwKOZ8pbboAtx0pAeQcvioRpckKd2EpOKk\nlJSUlJSUlG7Mf20dXidP7IWnAAAAAElFTkSuQmCC\n",
128 "text": "H \u22c5CNOT \u22c5H \n 1 0,1 1"
183 "prompt_number": 7,
184 "text": [
185 "H \u22c5CNOT \u22c5H ",
186 " 1 0,1 1"
187 ]
129 }
188 }
130 ],
189 ],
131 "collapsed": false,
190 "prompt_number": 7
132 "prompt_number": 7,
133 "input": "CZ01.decompose()\n"
134 },
191 },
135 {
192 {
136 "cell_type": "code",
193 "cell_type": "code",
194 "collapsed": false,
195 "input": [
196 "circuit_plot(CZ01.decompose(), nqubits=2)"
197 ],
137 "language": "python",
198 "language": "python",
138 "outputs": [
199 "outputs": [
139 {
200 {
140 "output_type": "pyout",
201 "output_type": "pyout",
141 "prompt_number": 8,
202 "prompt_number": 8,
142 "text": "&lt;sympy.physics.quantum.circuitplot.CircuitPlot object at 0x472d550&gt;"
203 "text": [
204 "&lt;sympy.physics.quantum.circuitplot.CircuitPlot object at 0x472d550&gt;"
205 ]
143 },
206 },
144 {
207 {
145 "output_type": "display_data",
208 "output_type": "display_data",
146 "png": "iVBORw0KGgoAAAANSUhEUgAAANcAAACOCAYAAACi/J2KAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAB1NJREFUeJzt3U1IVG0bwPHrTI9Zk2VZk5CLKKiRXGiUC5nyYxOVVAiR\nUqsKDMYWtYn2LSJpq7XKoXbZIoJSNDQsozADN9GmNFtUQwb2oVbOXM/qid7XGdPJyzNz5v8DN97N\n6Tre/p07ncpR1c8islIALChHVdXtIQAv8rk9AOBVxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAj\nxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAjxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAjxAUY\n8URcBQUF4jiO2VtBQYHbt+hpXt0/T/xb8Y7jiOVtWF8/23l1//5Z9N8RC05V5fHjxxKJRGR0dFSm\npqYkPz9fKioq5OTJk7J+/Xq3R8xKnjgWZitVlUgkImVlZXLixAkpLi6Ws2fPSl9fnxw/flxevXol\nwWBQjh07Ji9fvnR73OyjHjDbbdTV1WlxcbE6jqM5OTlaVlamjY2Nqqo6MjKiNTU1WlRUpI7j6KpV\nq7S8vFxbWlrmfH23TE9Pa2Njo5aWlur9+/c1Ho//Wvt93k+fPumlS5c0EAhoT0+PG6P+kVf3L/0+\na1Lwpw/ekydP1HEcPXPmTML1ixcvquM4evPmzZSuv9ji8bg2NTVpdXW1fv78ecZ6onl7enp03bp1\nOjAwsBgjzotX9y8rjoV9fX0iIrJ///6E6729vbJkyRLZs2fPYo6Vss7OTunu7pbbt2/LypVz+09B\na2pq5OrVq9LQ0CDxeNx4woWVsfvnStIL7E+3UVtbq7m5uToxMTFj7cePH7pixQrdvn17ytdfbLW1\ntdrW1pZ0Pdm88Xhcd+zYoR0dHUaTpcar++f5Z654PC79/f1SXl4uy5cvn7E+MDAgExMTUllZ6cJ0\n8zc8PCxPnz6V+vr6eT/WcRwJh8PS0tJiMJmNTN4/z8c1NDQk4+PjUl1dnXC9t7dXRESqqqoWcarU\n3bp1S44cOZLwE20uGhoapKenR75+/brAk9nI5P3z/M+5/juvd3V1ybNnz2asDwwMiOM4afmVL5Fo\nNCobN25M+fF+v1/Wrl0rY2NjkpeXt4CT2cjo/Ut2XhSRjHpLpq6uTnNycvTbt28z1qanp9Xv92tJ\nScmsZ2e37y0b3ry4f0mfuTSDXu7jOE7C96uqPHz4UEpLS8Xv989YHxwclMnJyTl91UuXj8eFCxfk\ny5cv0tzcnPTXzPZyn1gsJqtXr5bR0VFZs2aN1Zjz4tX98/SfuV68eCFjY2Oye/fuhOuPHj0SkfQ8\nryezb98+aW9vl1gsltLj7927JyUlJWkT1mwyff88Hdd/5/Vdu3YlXO/v7xcRSc/zehI7d+6UQCAg\nnZ2dKT2+tbVVwuHwAk9lI+P3b9bDaoZIdhv19fXq8/n0w4cPCdcLCwt1y5YtKV/fLZFIRCsrK/Xn\nz58J15PNOzg4qIFAQCcnJy3Hmzev7p9nn7m+f/8uDx48kM2bNyd8VfjQ0JBEo1EJhUIuTPd3jh49\nKrm5uXL69Ok5v9pieHhYDh06JC0tLbJs2TLjCf+eJ/bPlaQX2O+38ebNG62srNRNmzapz+fTpUuX\naigU0itXrqiq6p07d7SiokIDgYD6fD4tKCjQqqoq7e/vn9P108X4+LiGQiGtr6/X9+/f/8/a7/PG\n43Ht7u7WDRs2aGtr62KPOSde3T/+smQaXD9VU1NTcu7cOblx44bs3btXTp06Jdu2bZPCwkIZGRmR\nu3fvSmtrq8RiMWlubpYDBw64PXJCXt0/4kqD6/+t8fFxuX79urS1tcnbt2/l48ePUlRUJBUVFRIO\nh6W6ujrpt7vTgVf3j7jS4PoLjXkX9/rJePYbGoDbPPPaQstjTyb8wDXTeXH/PBFXJh2BMJNX949j\nIWCEuAAjxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAjxAUYIS7ACHEBRogLMEJcgBHiAowQF2CE\nuAAjxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAjxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAj\nxAUYIS7ACHEBRogLMEJcgBHi8pBYLCZdXV0iIvL69WuXpwFxecS7d+9k69atcvjwYRERKSkpkfPn\nz7s8VXZzVFXdHgJ/7+DBg9LR0SHT09O/3uf3+6Wrq0tCoZCLk2Uvnrk84v/DEhGZnJyU9vZ2lyZC\n0mcux3EWexbAU/5JtsBpMbM0NTXJtWvXZGpq6tf7/H6/PH/+XILBoIuTZS+OhR5x+fJlqa2tldzc\nXMnLy5P8/HyJRCKE5SK+oeEx0WhUotGoBINBycnJcXucrEZcgBGOhYAR4gKMEBdghLgAI8QFGCEu\nwAhxAUaICzBCXIAR4gKMEBdghLgAI8QFGCEuwAhxAUaICzBCXIAR4gKMEBdghLgAI8QFGCEuwAhx\nAUaICzBCXIAR4gKMEBdghLgAI8QFGCEuwAhxAUaICzBCXIAR4gKMEBdghLgAI8QFGCEuwAhxAUaI\nCzBCXIAR4gKM/Avn+MC2/OP35gAAAABJRU5ErkJggg==\n"
209 "png": "iVBORw0KGgoAAAANSUhEUgAAANcAAACOCAYAAACi/J2KAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAB1NJREFUeJzt3U1IVG0bwPHrTI9Zk2VZk5CLKKiRXGiUC5nyYxOVVAiR\nUqsKDMYWtYn2LSJpq7XKoXbZIoJSNDQsozADN9GmNFtUQwb2oVbOXM/qid7XGdPJyzNz5v8DN97N\n6Tre/p07ncpR1c8islIALChHVdXtIQAv8rk9AOBVxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAj\nxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAjxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAjxAUY\n8URcBQUF4jiO2VtBQYHbt+hpXt0/T/xb8Y7jiOVtWF8/23l1//5Z9N8RC05V5fHjxxKJRGR0dFSm\npqYkPz9fKioq5OTJk7J+/Xq3R8xKnjgWZitVlUgkImVlZXLixAkpLi6Ws2fPSl9fnxw/flxevXol\nwWBQjh07Ji9fvnR73OyjHjDbbdTV1WlxcbE6jqM5OTlaVlamjY2Nqqo6MjKiNTU1WlRUpI7j6KpV\nq7S8vFxbWlrmfH23TE9Pa2Njo5aWlur9+/c1Ho//Wvt93k+fPumlS5c0EAhoT0+PG6P+kVf3L/0+\na1Lwpw/ekydP1HEcPXPmTML1ixcvquM4evPmzZSuv9ji8bg2NTVpdXW1fv78ecZ6onl7enp03bp1\nOjAwsBgjzotX9y8rjoV9fX0iIrJ///6E6729vbJkyRLZs2fPYo6Vss7OTunu7pbbt2/LypVz+09B\na2pq5OrVq9LQ0CDxeNx4woWVsfvnStIL7E+3UVtbq7m5uToxMTFj7cePH7pixQrdvn17ytdfbLW1\ntdrW1pZ0Pdm88Xhcd+zYoR0dHUaTpcar++f5Z654PC79/f1SXl4uy5cvn7E+MDAgExMTUllZ6cJ0\n8zc8PCxPnz6V+vr6eT/WcRwJh8PS0tJiMJmNTN4/z8c1NDQk4+PjUl1dnXC9t7dXRESqqqoWcarU\n3bp1S44cOZLwE20uGhoapKenR75+/brAk9nI5P3z/M+5/juvd3V1ybNnz2asDwwMiOM4afmVL5Fo\nNCobN25M+fF+v1/Wrl0rY2NjkpeXt4CT2cjo/Ut2XhSRjHpLpq6uTnNycvTbt28z1qanp9Xv92tJ\nScmsZ2e37y0b3ry4f0mfuTSDXu7jOE7C96uqPHz4UEpLS8Xv989YHxwclMnJyTl91UuXj8eFCxfk\ny5cv0tzcnPTXzPZyn1gsJqtXr5bR0VFZs2aN1Zjz4tX98/SfuV68eCFjY2Oye/fuhOuPHj0SkfQ8\nryezb98+aW9vl1gsltLj7927JyUlJWkT1mwyff88Hdd/5/Vdu3YlXO/v7xcRSc/zehI7d+6UQCAg\nnZ2dKT2+tbVVwuHwAk9lI+P3b9bDaoZIdhv19fXq8/n0w4cPCdcLCwt1y5YtKV/fLZFIRCsrK/Xn\nz58J15PNOzg4qIFAQCcnJy3Hmzev7p9nn7m+f/8uDx48kM2bNyd8VfjQ0JBEo1EJhUIuTPd3jh49\nKrm5uXL69Ok5v9pieHhYDh06JC0tLbJs2TLjCf+eJ/bPlaQX2O+38ebNG62srNRNmzapz+fTpUuX\naigU0itXrqiq6p07d7SiokIDgYD6fD4tKCjQqqoq7e/vn9P108X4+LiGQiGtr6/X9+/f/8/a7/PG\n43Ht7u7WDRs2aGtr62KPOSde3T/+smQaXD9VU1NTcu7cOblx44bs3btXTp06Jdu2bZPCwkIZGRmR\nu3fvSmtrq8RiMWlubpYDBw64PXJCXt0/4kqD6/+t8fFxuX79urS1tcnbt2/l48ePUlRUJBUVFRIO\nh6W6ujrpt7vTgVf3j7jS4PoLjXkX9/rJePYbGoDbPPPaQstjTyb8wDXTeXH/PBFXJh2BMJNX949j\nIWCEuAAjxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAjxAUYIS7ACHEBRogLMEJcgBHiAowQF2CE\nuAAjxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAjxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAj\nxAUYIS7ACHEBRogLMEJcgBHi8pBYLCZdXV0iIvL69WuXpwFxecS7d+9k69atcvjwYRERKSkpkfPn\nz7s8VXZzVFXdHgJ/7+DBg9LR0SHT09O/3uf3+6Wrq0tCoZCLk2Uvnrk84v/DEhGZnJyU9vZ2lyZC\n0mcux3EWexbAU/5JtsBpMbM0NTXJtWvXZGpq6tf7/H6/PH/+XILBoIuTZS+OhR5x+fJlqa2tldzc\nXMnLy5P8/HyJRCKE5SK+oeEx0WhUotGoBINBycnJcXucrEZcgBGOhYAR4gKMEBdghLgAI8QFGCEu\nwAhxAUaICzBCXIAR4gKMEBdghLgAI8QFGCEuwAhxAUaICzBCXIAR4gKMEBdghLgAI8QFGCEuwAhx\nAUaICzBCXIAR4gKMEBdghLgAI8QFGCEuwAhxAUaICzBCXIAR4gKMEBdghLgAI8QFGCEuwAhxAUaI\nCzBCXIAR4gKM/Avn+MC2/OP35gAAAABJRU5ErkJggg==\n"
147 }
210 }
148 ],
211 ],
149 "collapsed": false,
212 "prompt_number": 8
150 "prompt_number": 8,
151 "input": "circuit_plot(CZ01.decompose(), nqubits=2)"
152 },
213 },
153 {
214 {
154 "source": "<h2>Example 3</h2>",
215 "cell_type": "markdown",
155 "cell_type": "markdown"
216 "source": [
217 "<h2>Example 3</h2>"
218 ]
156 },
219 },
157 {
220 {
158 "source": "Create a SWAP gate",
221 "cell_type": "markdown",
159 "cell_type": "markdown"
222 "source": [
223 "Create a SWAP gate"
224 ]
160 },
225 },
161 {
226 {
162 "cell_type": "code",
227 "cell_type": "code",
228 "collapsed": false,
229 "input": [
230 "SWAP10 = SWAP(1, 0); SWAP10"
231 ],
163 "language": "python",
232 "language": "python",
164 "outputs": [
233 "outputs": [
165 {
234 {
235 "latex": [
236 "$$SWAP_{1,0}$$"
237 ],
166 "output_type": "pyout",
238 "output_type": "pyout",
167 "latex": "$$SWAP_{1,0}$$",
168 "prompt_number": 9,
169 "png": "iVBORw0KGgoAAAANSUhEUgAAAE8AAAAcCAYAAAAgLuLfAAAABHNCSVQICAgIfAhkiAAABDdJREFU\naIHt2HuIV1UQB/CP7ur63DRre/0RuET2QHpQ0sO0skhJwhJKoiiVIAiDpDAqwYwsih5Y9KSo7EVG\nUVErbiXawyikCI0okvKPyNI0rVxbsz/m/Ni71/v7/W4+SnS/cDnnzJwzM2fuuTNzLj3YI2jEDCzA\nS3gd0zAQ76AdHdiOTizH4LR2Fr5PvO34HFdmZF+FtYm3GXeWsOc1TK3B74NF+DbJ3YDFaMMyfIe3\ncGIJXbuE/knRreidod+Mr4Uz4e5k6JMFMloT79UqOk7FxxhUwp6Lk6zZJeZemOZen6P3wePYgnNK\nyKmL3lXoz+JH3IG/M/R54nS1p/Ha1G4pkNGU2r5VdFyUns11bByI21P/0DpzYXRq23P0vzA32TW9\nhJy6KHLeAWJTr1RZ8yXeTf11NWTPSO2wAt7x+EmX82vhNjyQ+mWcNwbrsaqANyC1h5WQUxdFzjtT\nHPGjqqxZhtWpv77KnHH4BpsUO+9aPFLCvmPE5/+M+BTrOW8gTsaHaX4eo1K7oITuncJBIgF04F5d\nzizCGcLIhzK0JhEv+won/5xbMwkTStryNoan/joR9GvhvGTPTQW8BnyVbBpcwN9tuFFXJq1kxIcx\nJDdvhB2dNxsTU/8z8SJ6pXET5pe04XIRoypYhT/qrJmb7Dk9Rz9CVAsLRVja4xiBOViKrcmohbk5\nLbo7rxVvZPiLEn9oGs/E0SV0N+MTXTEK3kuyam1+KbaJ7P9oep5O+xhXQu8ewXH4QWSsfhl6o+7O\nezPNreCFxG8VQXpOSX0PYnKO9mKSVc35/UTW/7Skjl1GPmHMqjJvJZ4XxvfK0DuxMfUni8J4ZYb/\nS2qH4QbcV8KmEzBFlBNtmee0xK+WNEaJsLCkhI7dgsZMfxDG4q4qc5uxAn/m6OtEAJ6Nswt4MF4U\n1xvVRi/h4DEiuGcxUySwas47K7VL6ujog8dEDVsvARHha5KoHI4U+8z7wHhxkloLBLSIuizvHOIz\n6dBV12VxnTity1UvyLOYJpJVES5VfHOooF3Y31xD/lRRcHcKp9RDg0hUh6TxdDxVNPEeUZstxLEZ\n+nCx+ZlVFLQlBY0FvCliw6MLeHlcIOJqQxX+uUnWvAJeM34X2b0MtijnvEvwUWbcIk7dgPzE53Cg\nOF2LxYlqExfyfOrP4gmcX4U3JsmthZPES6uURct1fxH98b4IAdvxWxqPTM8yrEm8TfhAlDm1UNZ5\nt9jxptUpCvH9FmWdd7+43WSxSfqxUCYO7c9Ybcdr3gDpWtrjvNpYIeJcBS2iIljz/5izd6Dosx2J\nw3O0QeLXXCVBXIGXK8xqmW1fxQTxF3uscMwQfJF483GZ7gluqzhl14gb0inilrThP7F2L8NQUWRX\nnoMzvAZcXWNtU55QVJvty/i1Bm+b2v7o2M227FOYKK5fPdgJ7G9fYQ960IMe/Cv8A97G6Y4Q7MLo\nAAAAAElFTkSuQmCC\n",
239 "png": "iVBORw0KGgoAAAANSUhEUgAAAE8AAAAcCAYAAAAgLuLfAAAABHNCSVQICAgIfAhkiAAABDdJREFU\naIHt2HuIV1UQB/CP7ur63DRre/0RuET2QHpQ0sO0skhJwhJKoiiVIAiDpDAqwYwsih5Y9KSo7EVG\nUVErbiXawyikCI0okvKPyNI0rVxbsz/m/Ni71/v7/W4+SnS/cDnnzJwzM2fuuTNzLj3YI2jEDCzA\nS3gd0zAQ76AdHdiOTizH4LR2Fr5PvO34HFdmZF+FtYm3GXeWsOc1TK3B74NF+DbJ3YDFaMMyfIe3\ncGIJXbuE/knRreidod+Mr4Uz4e5k6JMFMloT79UqOk7FxxhUwp6Lk6zZJeZemOZen6P3wePYgnNK\nyKmL3lXoz+JH3IG/M/R54nS1p/Ha1G4pkNGU2r5VdFyUns11bByI21P/0DpzYXRq23P0vzA32TW9\nhJy6KHLeAWJTr1RZ8yXeTf11NWTPSO2wAt7x+EmX82vhNjyQ+mWcNwbrsaqANyC1h5WQUxdFzjtT\nHPGjqqxZhtWpv77KnHH4BpsUO+9aPFLCvmPE5/+M+BTrOW8gTsaHaX4eo1K7oITuncJBIgF04F5d\nzizCGcLIhzK0JhEv+won/5xbMwkTStryNoan/joR9GvhvGTPTQW8BnyVbBpcwN9tuFFXJq1kxIcx\nJDdvhB2dNxsTU/8z8SJ6pXET5pe04XIRoypYhT/qrJmb7Dk9Rz9CVAsLRVja4xiBOViKrcmohbk5\nLbo7rxVvZPiLEn9oGs/E0SV0N+MTXTEK3kuyam1+KbaJ7P9oep5O+xhXQu8ewXH4QWSsfhl6o+7O\nezPNreCFxG8VQXpOSX0PYnKO9mKSVc35/UTW/7Skjl1GPmHMqjJvJZ4XxvfK0DuxMfUni8J4ZYb/\nS2qH4QbcV8KmEzBFlBNtmee0xK+WNEaJsLCkhI7dgsZMfxDG4q4qc5uxAn/m6OtEAJ6Nswt4MF4U\n1xvVRi/h4DEiuGcxUySwas47K7VL6ujog8dEDVsvARHha5KoHI4U+8z7wHhxkloLBLSIuizvHOIz\n6dBV12VxnTity1UvyLOYJpJVES5VfHOooF3Y31xD/lRRcHcKp9RDg0hUh6TxdDxVNPEeUZstxLEZ\n+nCx+ZlVFLQlBY0FvCliw6MLeHlcIOJqQxX+uUnWvAJeM34X2b0MtijnvEvwUWbcIk7dgPzE53Cg\nOF2LxYlqExfyfOrP4gmcX4U3JsmthZPES6uURct1fxH98b4IAdvxWxqPTM8yrEm8TfhAlDm1UNZ5\nt9jxptUpCvH9FmWdd7+43WSxSfqxUCYO7c9Ybcdr3gDpWtrjvNpYIeJcBS2iIljz/5izd6Dosx2J\nw3O0QeLXXCVBXIGXK8xqmW1fxQTxF3uscMwQfJF483GZ7gluqzhl14gb0inilrThP7F2L8NQUWRX\nnoMzvAZcXWNtU55QVJvty/i1Bm+b2v7o2M227FOYKK5fPdgJ7G9fYQ960IMe/Cv8A97G6Y4Q7MLo\nAAAAAElFTkSuQmCC\n",
170 "text": "SWAP \n 1,0"
240 "prompt_number": 9,
241 "text": [
242 "SWAP ",
243 " 1,0"
244 ]
171 }
245 }
172 ],
246 ],
173 "collapsed": false,
247 "prompt_number": 9
174 "prompt_number": 9,
175 "input": "SWAP10 = SWAP(1, 0); SWAP10\n"
176 },
248 },
177 {
249 {
178 "source": "Decompose and plot it",
250 "cell_type": "markdown",
179 "cell_type": "markdown"
251 "source": [
252 "Decompose and plot it"
253 ]
180 },
254 },
181 {
255 {
182 "cell_type": "code",
256 "cell_type": "code",
257 "collapsed": false,
258 "input": [
259 "SWAP10.decompose()"
260 ],
183 "language": "python",
261 "language": "python",
184 "outputs": [
262 "outputs": [
185 {
263 {
264 "latex": [
265 "$$CNOT_{1,0} CNOT_{0,1} CNOT_{1,0}$$"
266 ],
186 "output_type": "pyout",
267 "output_type": "pyout",
187 "latex": "$$CNOT_{1,0} CNOT_{0,1} CNOT_{1,0}$$",
188 "prompt_number": 10,
189 "png": "iVBORw0KGgoAAAANSUhEUgAAAOQAAAAcCAYAAABxlhP5AAAABHNCSVQICAgIfAhkiAAABThJREFU\neJztm3uIVUUcxz93t01ta0PD2h7uZqQGWWRgSvZ+K0QEYUQPemCREj0kkLTAiEoIAwuWipDNsqRa\ngghCxY0sLXAVCrPWjc2gMrQnvShs++P3u7tzZ+ecM/ees+nemQ9czj3z+83re+bM/c3ccyASiYwa\npgIPAK8DHwLrgbXAZKAEdAKt6nsS0A3sBgaAbY7yZgKfq30A6AMutnwagOuALmCNftYDjwNHWL7d\nWs5+YJP6/aRpvcC7mr5H0x6qqvfVEbXypxqtIOpFI7AE+BZYCEwxbJOA94DViAA2i4FPtJGzE8rv\nBq51pJ8C7AQ6gGYjvQm5YL1aP8AJwD5glqPsf4DxRtphwEbg5oT25CFq5U8erSA8vQBoA7YCXwGn\nJficjYjyrMO2Fpij9s6E/K840iYB/cCtCXnGaZu69Pxe4BrL53DgD6T9No8wXOC8RK38yasVhKUX\nIHf7x0jjj8/w/Z7hM1EJWKffe4A/gQmWzwRglZXWisxQz2XUuQa5GO1aT6NlL1+sFY68z1A5s+Ul\nauVPXq0gEL0arPNHgXOAh4HvMvLuRn7CTaYjYQFIaDAWuM3yOR/4wDhvQX7yjwTuy6izT49nAe8A\nByz7hXp835G3B1kDFEXUyp+8WkFYegEwQxuxk+E3qovrHWmLGGp4M/AzInDJ8FlJ5YL9QWTmecKj\nzpfU11U3yEL7AHC0R1l5iFr5U4RWEI5egyzVBi3IUUYnMnOVWaVlXm6kvWp8bwC+Vp9pHuVvU9+T\nHbZG4Fdgu39zayZq5U8RWkEgepkz1nl6zFPpWOAv47xDj3frsQX4xbC3Iwvu/cAXGWWPB04H9iIL\ncJsZwFG4Q4qiiVr5U4RWEIhe5g05C/gX+Mwj31RH2hQkhDDZhWxlXw2ciFycLYb9VD32e9S5ELko\nXQn2C/T4fwyyqJU/ebWCsPQaZAfwg4ffRNwx+R3AFY70+UgosBx4ksqQ4Ey1bciocwwye/UjM5WL\nt7SsiRllFUHUyp+8WkFYeg3ytFbaluG3HDjOkf4isptl04R0+BvgTcvWgOxO/U7l+sBmBTLLXpRg\nLyGhic8s3Aa85uE3F9kUWMpQWFQmBK3S+u8iSde8WsHo0AuKGVuDzEZi9CUpBd2lHxfrEtIBHkMu\nyssO2/Nqm5uQdzHyh+ztKeVP1zI6UnyagWXahr4UP5A/rj9iaAfvDWQ2LlPvWmX13yRL17xawaGv\nV5Fjq4KrtIH3IE8vlJmGhATzEvLdCLyd0og2ZMv4ToetSfNuofKP3nZk1vwUWXCnsQwR7aYMP4DL\nyBbtBeTpizK3IM8ymtSzVj79t0nTtVatYHToVaaosVXBTOApYLM6dmqjJjt85wFfMvRA7w4kdnfR\nRfKifQxwPxKarNZPB/J84LiEPAuQ9cFWJOQYQEKXTcgjVkn4iLYZWbeYefY5/OpVK9/+Y/mk6VqN\nVjC69CpT5NgKBh/RdgE3GOdzgL9HrEWHHrX030fXeif32PJ5ciJE+pFZsUwz8ONBasvBIPT+jySp\n2sYb0s124FjjvBV56iMUQu//SJKqbbwhh7gU2QQAeTPhEsN2Jem7bPVGVv9NrSLZeI8t+xWTeqaE\nPJExH3nvrjwZ7UHE6gF+QwTrRd5OOAM4F9nFW0llqFHPpPXf1ipN11CIY6tGWq1Pi2FrQragTRqR\nd/lCJan/tlZpuoZCIWMrtMG2N8V2DMPfabPfiQuNpP7bWqXpGgpxbBXMIuKa2peoVXVEvWogtGgh\nD1Gr6oh6RSKRSCQSiUQikUikcP4DcImNVwb6bzMAAAAASUVORK5CYII=\n",
268 "png": "iVBORw0KGgoAAAANSUhEUgAAAOQAAAAcCAYAAABxlhP5AAAABHNCSVQICAgIfAhkiAAABThJREFU\neJztm3uIVUUcxz93t01ta0PD2h7uZqQGWWRgSvZ+K0QEYUQPemCREj0kkLTAiEoIAwuWipDNsqRa\ngghCxY0sLXAVCrPWjc2gMrQnvShs++P3u7tzZ+ecM/ees+nemQ9czj3z+83re+bM/c3ccyASiYwa\npgIPAK8DHwLrgbXAZKAEdAKt6nsS0A3sBgaAbY7yZgKfq30A6AMutnwagOuALmCNftYDjwNHWL7d\nWs5+YJP6/aRpvcC7mr5H0x6qqvfVEbXypxqtIOpFI7AE+BZYCEwxbJOA94DViAA2i4FPtJGzE8rv\nBq51pJ8C7AQ6gGYjvQm5YL1aP8AJwD5glqPsf4DxRtphwEbg5oT25CFq5U8erSA8vQBoA7YCXwGn\nJficjYjyrMO2Fpij9s6E/K840iYB/cCtCXnGaZu69Pxe4BrL53DgD6T9No8wXOC8RK38yasVhKUX\nIHf7x0jjj8/w/Z7hM1EJWKffe4A/gQmWzwRglZXWisxQz2XUuQa5GO1aT6NlL1+sFY68z1A5s+Ul\nauVPXq0gEL0arPNHgXOAh4HvMvLuRn7CTaYjYQFIaDAWuM3yOR/4wDhvQX7yjwTuy6izT49nAe8A\nByz7hXp835G3B1kDFEXUyp+8WkFYegEwQxuxk+E3qovrHWmLGGp4M/AzInDJ8FlJ5YL9QWTmecKj\nzpfU11U3yEL7AHC0R1l5iFr5U4RWEI5egyzVBi3IUUYnMnOVWaVlXm6kvWp8bwC+Vp9pHuVvU9+T\nHbZG4Fdgu39zayZq5U8RWkEgepkz1nl6zFPpWOAv47xDj3frsQX4xbC3Iwvu/cAXGWWPB04H9iIL\ncJsZwFG4Q4qiiVr5U4RWEIhe5g05C/gX+Mwj31RH2hQkhDDZhWxlXw2ciFycLYb9VD32e9S5ELko\nXQn2C/T4fwyyqJU/ebWCsPQaZAfwg4ffRNwx+R3AFY70+UgosBx4ksqQ4Ey1bciocwwye/UjM5WL\nt7SsiRllFUHUyp+8WkFYeg3ytFbaluG3HDjOkf4isptl04R0+BvgTcvWgOxO/U7l+sBmBTLLXpRg\nLyGhic8s3Aa85uE3F9kUWMpQWFQmBK3S+u8iSde8WsHo0AuKGVuDzEZi9CUpBd2lHxfrEtIBHkMu\nyssO2/Nqm5uQdzHyh+ztKeVP1zI6UnyagWXahr4UP5A/rj9iaAfvDWQ2LlPvWmX13yRL17xawaGv\nV5Fjq4KrtIH3IE8vlJmGhATzEvLdCLyd0og2ZMv4ToetSfNuofKP3nZk1vwUWXCnsQwR7aYMP4DL\nyBbtBeTpizK3IM8ymtSzVj79t0nTtVatYHToVaaosVXBTOApYLM6dmqjJjt85wFfMvRA7w4kdnfR\nRfKifQxwPxKarNZPB/J84LiEPAuQ9cFWJOQYQEKXTcgjVkn4iLYZWbeYefY5/OpVK9/+Y/mk6VqN\nVjC69CpT5NgKBh/RdgE3GOdzgL9HrEWHHrX030fXeif32PJ5ciJE+pFZsUwz8ONBasvBIPT+jySp\n2sYb0s124FjjvBV56iMUQu//SJKqbbwhh7gU2QQAeTPhEsN2Jem7bPVGVv9NrSLZeI8t+xWTeqaE\nPJExH3nvrjwZ7UHE6gF+QwTrRd5OOAM4F9nFW0llqFHPpPXf1ipN11CIY6tGWq1Pi2FrQragTRqR\nd/lCJan/tlZpuoZCIWMrtMG2N8V2DMPfabPfiQuNpP7bWqXpGgpxbBXMIuKa2peoVXVEvWogtGgh\nD1Gr6oh6RSKRSCQSiUQikUikcP4DcImNVwb6bzMAAAAASUVORK5CYII=\n",
190 "text": "CNOT \u22c5CNOT \u22c5CNOT \n 1,0 0,1 1,0"
269 "prompt_number": 10,
270 "text": [
271 "CNOT \u22c5CNOT \u22c5CNOT ",
272 " 1,0 0,1 1,0"
273 ]
191 }
274 }
192 ],
275 ],
193 "collapsed": false,
276 "prompt_number": 10
194 "prompt_number": 10,
195 "input": "SWAP10.decompose()"
196 },
277 },
197 {
278 {
198 "cell_type": "code",
279 "cell_type": "code",
280 "collapsed": false,
281 "input": [
282 "circuit_plot(SWAP10.decompose(), nqubits=2)"
283 ],
199 "language": "python",
284 "language": "python",
200 "outputs": [
285 "outputs": [
201 {
286 {
202 "output_type": "pyout",
287 "output_type": "pyout",
203 "prompt_number": 11,
288 "prompt_number": 11,
204 "text": "&lt;sympy.physics.quantum.circuitplot.CircuitPlot object at 0x7f082c973650&gt;"
289 "text": [
290 "&lt;sympy.physics.quantum.circuitplot.CircuitPlot object at 0x7f082c973650&gt;"
291 ]
205 },
292 },
206 {
293 {
207 "output_type": "display_data",
294 "output_type": "display_data",
208 "png": "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\n"
295 "png": "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\n"
209 }
296 }
210 ],
297 ],
211 "collapsed": false,
298 "prompt_number": 11
212 "prompt_number": 11,
213 "input": "circuit_plot(SWAP10.decompose(), nqubits=2)"
214 },
299 },
215 {
300 {
216 "source": "<h2>All together now</h2>",
301 "cell_type": "markdown",
217 "cell_type": "markdown"
302 "source": [
303 "<h2>All together now</h2>"
304 ]
218 },
305 },
219 {
306 {
220 "cell_type": "code",
307 "cell_type": "code",
308 "collapsed": true,
309 "input": [
310 "gates = [CGate(1,Y(0)), CGate(0,Z(1)), SWAP(1, 0)]"
311 ],
221 "language": "python",
312 "language": "python",
222 "outputs": [],
313 "outputs": [],
223 "collapsed": true,
314 "prompt_number": 12
224 "prompt_number": 12,
225 "input": "gates = [CGate(1,Y(0)), CGate(0,Z(1)), SWAP(1, 0)]"
226 },
315 },
227 {
316 {
228 "cell_type": "code",
317 "cell_type": "code",
318 "collapsed": false,
319 "input": [
320 "for g in gates:",
321 " dg = g.decompose()",
322 " display(Eq(g, dg))",
323 " circuit_plot(g, nqubits=2)",
324 " circuit_plot(dg, nqubits=2) "
325 ],
229 "language": "python",
326 "language": "python",
230 "outputs": [
327 "outputs": [
231 {
328 {
329 "latex": [
330 "$$C_{1}{\\left(Y_{0}\\right)} = S_{0} CNOT_{1,0} S_{0} Z_{0}$$"
331 ],
232 "output_type": "display_data",
332 "output_type": "display_data",
233 "latex": "$$C_{1}{\\left(Y_{0}\\right)} = S_{0} CNOT_{1,0} S_{0} Z_{0}$$",
234 "png": "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\nYII=\n",
333 "png": "iVBORw0KGgoAAAANSUhEUgAAANMAAAAcCAYAAAD7uYq4AAAABHNCSVQICAgIfAhkiAAACC9JREFU\neJztnHmsFdUdxz/3vecTRBFxATdcoKLGBdkios81ihaJNkYMSwXXilurNZRaUvcF16jEJRU1bKZo\nLJpWxC5UBRVcUIu7glqraIN1xYr4/ON7JnfeuXNmzp177sWW+SSTx51z5jfnfucsv9/vzAUKCgoa\nwi7AecAcYCEwH5gF7ASUgHuAnjnsnge8DLSb45/AlIR6o4HvTJ0vgbtz3Kve9AduAmYC95u/WwGj\ngNNy2Muj+VzgOaTTF0A3q7wr8AywxtT5ADg74d5DgBnAbGCaufedwLZWvUuNna+AJ4F5wDvm3Epz\n3aPAS+bcn/y+etWE0n4S5b74KdJqnjkep6xZS55GNgO/Av4FTAB+FCvbHlgA3AW8WoXNbsBPrXNz\nTUNHpFz3B+BaYIOEsnOApiraEJphwFKgd+zctsBfgf8Cu1Zhq1bNhwIvIj1/7qhzlTlsNgL+CPwF\n2C52voQG9ifAQbHzrwPjTJsjogE2zLJ9GXC7oz21EFL7p4FlQD/rfDPwEJrIB+ZpZC8026xIaVB/\nJNwtnja7AtOBTa3zxxk7MxzXjUMP08XBwI2ebQhNP2A10svmNLTa+hJC80lAG/AZ7gF3K3oWcToB\nfwam4p6Y5gJvmboDgGsS6vwddeLO1vlDgPMddvMSUvseSK+NEsqmAmtJn+ydtKBRuhzYOqPuSuBY\nT7t3UTnqQQ/nU+SadLHK2tASnsU0tEI1minAIkfZEOSO+RBK83vRYJiKBt0hCXVmWp9b0Yq0hOSV\nP+JMY3MkWtn6WOUbos69MOHakcDRKbbzEEp7gJOAUxPO/xJ959x96wpjYIxH3Seo9M2T6IeWShfT\nzD1Hx871Rp3Dx0ftjmYWe0asN0tw+9F74T+bhdC8GcU5AHsYe3OsOj2A66xzc1BMulvGfY8wNi9H\nnc+mzZRfmVB2KB1dxxCE0h6k+4bWueOQLrm9nn3QkrYMvzhkpKfd2cDwlPLD6BikdgMewG+gRlwG\njK+ifghuRO1+HhhLZZDuQyjNBwATY58fR8mG+Ep3PHBM7PMBqP1/87jvBFP3Bkf5b0z5kR62QhBC\nexdD0Cr7ADXE4xeiBiYteXlpAf5NpZ8epwkF3WuAbdDg651SP4kxyFVKYzAKWKs57k2xtxPwLOUs\nULu55qgq2h1K81+gThAxytidHDt3M7B57PN9ps6JHvZvMXVPcJTPB74l/TmHJIT2SfQBPgYWkxxD\nefOwadSAGhsUZyjwgke96829lyGXoVoGooeZK3VZAy1oIN8DvIe+wzdoxfEhlOYz6BjztAIfAe9S\nzrjNtq5Zae7tM3EtNXV3SChrAT5H6eRGUqv2NlsAb6DYtUetjVuFXA6f2GMXT5tj8dtjGIHE+LWn\nXZtNzPU75rw+BM3A1ZRjCx9CaF4ieQW90rTlGLQixbOAkV7fkp54AMU87WglSGKwKb8+w049yaN9\nnE4oebKKymzqgcDGPkbiPuE7wH+Qv5jGlvjHJz2NzSz6m795N/c+RwFp0swZmv1QvGGzFu21RBuj\nPoTQfHe0AW5zOwqiz0DtfSJW9hXS7Es0oNK4AKW8Xe5g5Ek8lmEnBCG1jyihbZuBKFNqbyucj3TK\nJO4WLUCbfb2Qe+DiLCqzHL1QutL2qVvxc73aUKd6MaFsa7TCfYZmjSkoxrL5gvQZZBDaZ6mG1+iY\nZQSleV2DvjOa6aOOm9X2BeTXPKKN5I68Au3gH4kGw89iZWvRvtbhSJfFDts/QZm8icA/Uu7fjpIe\nabj6SJwsvUJqHzEFZe/GoL2yOIOADykPUF+b7At8jXbhXZxujoguKJMzA3gzof6pZMdMG6CZ0pU+\nn0t5931fkhMNrWhWGpRxrxA8jfu1pkvQWwQl8zmr7Xk0t7kbuSlJDEcdIenZnGTKLnZceyhaMW/A\nndVqQq7RSynty+ojcbL0Cqk9lLOUkxPKOgGPAD+uon0dGIY69tl09OP7os06V7bkMJKFOsrYKyWU\nRUQp2okJZX3Rw4qC6BIKnPey6u1ubITez7Dpimb5l9GsHa2EJZRRez7WBt+259UcYE+kuyvuaUIr\n1DRH+cXA+0i/iM2Ak1EgnralAepY7cBtGfXA3UcisvQKrf1w5OLa2rQiXRcibyeaqDJt2i7YPBRw\njUTpztUoFnkD+eDLE2Vw86Rp3A7oocYZi9yXaDd9AnIpxqNYArSUrkRuCZRfONyHji5hX+BtqnuN\nJA/7oZ3xO1GgOwnFHmvQRuIQtNJU0/Y8mu8IPIgGQTPwCpr97UTEd8i1fd/xfX6LXNlz0cblGjQw\nF5vv+oFDg4tQJ4syZ6PQxu/XKLb60HG/NLL0Cql9d6RVM7A38JSp1x3YmfKAmVOFzcR4Zok5QvAJ\nWgr7UjmYppsjjS3QrB1nNZXv+O2K0sz1JnqTGDQbpuHbdqhe8xVUrnAurs4on2UOXxahWCs0WXqF\n1H4Vnhm6Kmw25I3rO1CAl4flVGZnuiAxIppQav13Oe9RL3zaXlAmpF710D7TZiMG03S0KXlgjmuf\nQ2nhOD3omPk6C7lES3O1rn74tL2gTEi96qF9w55nVnA5ALkx9guFPrxK+bc9kX8aTQK9UCZpmxx2\nG0Fa29c3XH1kIHKhIKxe9dC+rs+zhBIH9yN/cjLu14H2Jzljl8UgtLqNQz8vGBwrm4re0/qhktb2\n9YWsPjIf+L35d0i96qF93Z9nT+tIe9kxz8qUdm0t9hrJ/0o760VaH2lBnTNOSL3qof36/jwLfqA0\nAaes60YUFPw/cDz6T1AKCgpqpNE/mykoKCgoKCgoKCgoKChYB3wPhhtkbtASAMcAAAAASUVORK5C\nYII=\n",
235 "text": "C \u239bY \u239e = S \u22c5CNOT \u22c5S \u22c5Z \n 1\u239d 0\u23a0 0 1,0 0 0"
334 "text": [
335 "C \u239bY \u239e = S \u22c5CNOT \u22c5S \u22c5Z ",
336 " 1\u239d 0\u23a0 0 1,0 0 0"
337 ]
236 },
338 },
237 {
339 {
340 "latex": [
341 "$$C_{0}{\\left(Z_{1}\\right)} = H_{1} CNOT_{0,1} H_{1}$$"
342 ],
238 "output_type": "display_data",
343 "output_type": "display_data",
239 "latex": "$$C_{0}{\\left(Z_{1}\\right)} = H_{1} CNOT_{0,1} H_{1}$$",
240 "png": "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\n",
344 "png": "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\n",
241 "text": "C \u239bZ \u239e = H \u22c5CNOT \u22c5H \n 0\u239d 1\u23a0 1 0,1 1"
345 "text": [
346 "C \u239bZ \u239e = H \u22c5CNOT \u22c5H ",
347 " 0\u239d 1\u23a0 1 0,1 1"
348 ]
242 },
349 },
243 {
350 {
351 "latex": [
352 "$$SWAP_{1,0} = CNOT_{1,0} CNOT_{0,1} CNOT_{1,0}$$"
353 ],
244 "output_type": "display_data",
354 "output_type": "display_data",
245 "latex": "$$SWAP_{1,0} = CNOT_{1,0} CNOT_{0,1} CNOT_{1,0}$$",
246 "png": "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\n",
355 "png": "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\n",
247 "text": "SWAP = CNOT \u22c5CNOT \u22c5CNOT \n 1,0 1,0 0,1 1,0"
356 "text": [
357 "SWAP = CNOT \u22c5CNOT \u22c5CNOT ",
358 " 1,0 1,0 0,1 1,0"
359 ]
248 },
360 },
249 {
361 {
250 "output_type": "display_data",
362 "output_type": "display_data",
@@ -271,9 +383,7 b''
271 "png": "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\n"
383 "png": "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\n"
272 }
384 }
273 ],
385 ],
274 "collapsed": false,
386 "prompt_number": 16
275 "prompt_number": 16,
276 "input": "for g in gates:\n dg = g.decompose()\n display(Eq(g, dg))\n circuit_plot(g, nqubits=2)\n circuit_plot(dg, nqubits=2) "
277 }
387 }
278 ]
388 ]
279 }
389 }
@@ -1,82 +1,141 b''
1 {
1 {
2 "nbformat": 2,
3 "metadata": {
2 "metadata": {
4 "name": "dense_coding"
3 "name": "dense_coding"
5 },
4 },
5 "nbformat": 2,
6 "worksheets": [
6 "worksheets": [
7 {
7 {
8 "cells": [
8 "cells": [
9 {
9 {
10 "source": "<h1>Dense Coding\n</h1>",
10 "cell_type": "markdown",
11 "cell_type": "markdown"
11 "source": [
12 "<h1>Dense Coding",
13 "</h1>"
14 ]
12 },
15 },
13 {
16 {
14 "cell_type": "code",
17 "cell_type": "code",
18 "collapsed": true,
19 "input": [
20 "%load_ext sympyprinting"
21 ],
15 "language": "python",
22 "language": "python",
16 "outputs": [],
23 "outputs": [],
17 "collapsed": true,
24 "prompt_number": 2
18 "prompt_number": 2,
19 "input": "%load_ext sympyprinting"
20 },
25 },
21 {
26 {
22 "cell_type": "code",
27 "cell_type": "code",
28 "collapsed": true,
29 "input": [
30 "from sympy import sqrt, symbols, Rational",
31 "from sympy import expand, Eq, Symbol, simplify, exp, sin",
32 "from sympy.physics.quantum import *",
33 "from sympy.physics.quantum.qubit import *",
34 "from sympy.physics.quantum.gate import *",
35 "from sympy.physics.quantum.grover import *",
36 "from sympy.physics.quantum.qft import QFT, IQFT, Fourier",
37 "from sympy.physics.quantum.circuitplot import circuit_plot"
38 ],
23 "language": "python",
39 "language": "python",
24 "outputs": [],
40 "outputs": [],
25 "collapsed": true,
41 "prompt_number": 3
26 "prompt_number": 3,
27 "input": "from sympy import sqrt, symbols, Rational\nfrom sympy import expand, Eq, Symbol, simplify, exp, sin\nfrom sympy.physics.quantum import *\nfrom sympy.physics.quantum.qubit import *\nfrom sympy.physics.quantum.gate import *\nfrom sympy.physics.quantum.grover import *\nfrom sympy.physics.quantum.qft import QFT, IQFT, Fourier\nfrom sympy.physics.quantum.circuitplot import circuit_plot"
28 },
42 },
29 {
43 {
30 "cell_type": "code",
44 "cell_type": "code",
45 "collapsed": false,
46 "input": [
47 "psi = Qubit('00')/sqrt(2) + Qubit('11')/sqrt(2); psi"
48 ],
31 "language": "python",
49 "language": "python",
32 "outputs": [
50 "outputs": [
33 {
51 {
52 "latex": [
53 "$$\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }$$"
54 ],
34 "output_type": "pyout",
55 "output_type": "pyout",
35 "latex": "$$\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }$$",
36 "prompt_number": 4,
37 "png": "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\n0rjOgKiDGwAAAABJRU5ErkJggg==\n",
56 "png": "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\n0rjOgKiDGwAAAABJRU5ErkJggg==\n",
38 "text": "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 2 2"
57 "prompt_number": 4,
58 "text": [
59 "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ",
60 "\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9",
61 "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",
62 " 2 2"
63 ]
39 }
64 }
40 ],
65 ],
41 "collapsed": false,
66 "prompt_number": 4
42 "prompt_number": 4,
43 "input": "psi = Qubit('00')/sqrt(2) + Qubit('11')/sqrt(2); psi\n"
44 },
67 },
45 {
68 {
46 "cell_type": "code",
69 "cell_type": "code",
70 "collapsed": true,
71 "input": [
72 "circuits = [H(1)*CNOT(1,0), H(1)*CNOT(1,0)*X(1), H(1)*CNOT(1,0)*Z(1), H(1)*CNOT(1,0)*Z(1)*X(1)]"
73 ],
47 "language": "python",
74 "language": "python",
48 "outputs": [],
75 "outputs": [],
49 "collapsed": true,
76 "prompt_number": 5
50 "prompt_number": 5,
51 "input": "circuits = [H(1)*CNOT(1,0), H(1)*CNOT(1,0)*X(1), H(1)*CNOT(1,0)*Z(1), H(1)*CNOT(1,0)*Z(1)*X(1)]"
52 },
77 },
53 {
78 {
54 "cell_type": "code",
79 "cell_type": "code",
80 "collapsed": false,
81 "input": [
82 "for circuit in circuits:",
83 " circuit_plot(circuit, nqubits=2)",
84 " display(Eq(circuit*psi,qapply(circuit*psi)))"
85 ],
55 "language": "python",
86 "language": "python",
56 "outputs": [
87 "outputs": [
57 {
88 {
89 "latex": [
90 "$$H_{1} CNOT_{1,0} \\left(\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }\\right) = {\\left|00\\right\\rangle }$$"
91 ],
58 "output_type": "display_data",
92 "output_type": "display_data",
59 "latex": "$$H_{1} CNOT_{1,0} \\left(\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }\\right) = {\\left|00\\right\\rangle }$$",
60 "png": "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\ny/8BXM2fWYIlT5QAAAAASUVORK5CYII=\n",
93 "png": "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\ny/8BXM2fWYIlT5QAAAAASUVORK5CYII=\n",
61 "text": "\u239b \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u239e \n \u239c\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\u239f \nH \u22c5CNOT \u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f = \u275800\u27e9\n 1 1,0 \u239d 2 2 \u23a0"
94 "text": [
95 "\u239b \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u239e ",
96 " \u239c\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\u239f ",
97 "H \u22c5CNOT \u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f = \u275800\u27e9",
98 " 1 1,0 \u239d 2 2 \u23a0"
99 ]
62 },
100 },
63 {
101 {
102 "latex": [
103 "$$H_{1} CNOT_{1,0} X_{1} \\left(\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }\\right) = {\\left|01\\right\\rangle }$$"
104 ],
64 "output_type": "display_data",
105 "output_type": "display_data",
65 "latex": "$$H_{1} CNOT_{1,0} X_{1} \\left(\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }\\right) = {\\left|01\\right\\rangle }$$",
66 "png": "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\nrkJggg==\n",
106 "png": "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\nrkJggg==\n",
67 "text": "\u239b \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u239e \n \u239c\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\u239f \nH \u22c5CNOT \u22c5X \u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f = \u275801\u27e9\n 1 1,0 1 \u239d 2 2 \u23a0"
107 "text": [
108 "\u239b \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u239e ",
109 " \u239c\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\u239f ",
110 "H \u22c5CNOT \u22c5X \u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f = \u275801\u27e9",
111 " 1 1,0 1 \u239d 2 2 \u23a0"
112 ]
68 },
113 },
69 {
114 {
115 "latex": [
116 "$$H_{1} CNOT_{1,0} Z_{1} \\left(\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }\\right) = {\\left|10\\right\\rangle }$$"
117 ],
70 "output_type": "display_data",
118 "output_type": "display_data",
71 "latex": "$$H_{1} CNOT_{1,0} Z_{1} \\left(\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }\\right) = {\\left|10\\right\\rangle }$$",
72 "png": "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\nL5K2XHBY3nYAAAAASUVORK5CYII=\n",
119 "png": "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\nL5K2XHBY3nYAAAAASUVORK5CYII=\n",
73 "text": "\u239b \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u239e \n \u239c\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\u239f \nH \u22c5CNOT \u22c5Z \u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f = \u275810\u27e9\n 1 1,0 1 \u239d 2 2 \u23a0"
120 "text": [
121 "\u239b \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u239e ",
122 " \u239c\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\u239f ",
123 "H \u22c5CNOT \u22c5Z \u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f = \u275810\u27e9",
124 " 1 1,0 1 \u239d 2 2 \u23a0"
125 ]
74 },
126 },
75 {
127 {
128 "latex": [
129 "$$H_{1} CNOT_{1,0} Z_{1} X_{1} \\left(\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }\\right) = {\\left|11\\right\\rangle }$$"
130 ],
76 "output_type": "display_data",
131 "output_type": "display_data",
77 "latex": "$$H_{1} CNOT_{1,0} Z_{1} X_{1} \\left(\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }\\right) = {\\left|11\\right\\rangle }$$",
78 "png": "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\n",
132 "png": "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\n",
79 "text": "\u239b \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u239e \n \u239c\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\u239f \nH \u22c5CNOT \u22c5Z \u22c5X \u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f = \u275811\u27e9\n 1 1,0 1 1 \u239d 2 2 \u23a0"
133 "text": [
134 "\u239b \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u239e ",
135 " \u239c\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\u239f ",
136 "H \u22c5CNOT \u22c5Z \u22c5X \u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f = \u275811\u27e9",
137 " 1 1,0 1 1 \u239d 2 2 \u23a0"
138 ]
80 },
139 },
81 {
140 {
82 "output_type": "display_data",
141 "output_type": "display_data",
@@ -95,9 +154,7 b''
95 "png": "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\n"
154 "png": "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\n"
96 }
155 }
97 ],
156 ],
98 "collapsed": false,
157 "prompt_number": 6
99 "prompt_number": 6,
100 "input": "for circuit in circuits:\n circuit_plot(circuit, nqubits=2)\n display(Eq(circuit*psi,qapply(circuit*psi)))"
101 }
158 }
102 ]
159 ]
103 }
160 }
@@ -1,180 +1,379 b''
1 {
1 {
2 "metadata": {
3 "name": "display_protocol"
4 },
5 "nbformat": 2,
2 "worksheets": [
6 "worksheets": [
3 {
7 {
4 "cells": [
8 "cells": [
5 {
9 {
6 "source": "# Using the IPython display protocol for your own objects\n\nIPython extends the idea of the ``__repr__`` method in Python to support multiple representations for a given\nobject, which clients can use to display the object according to their capabilities. An object can return multiple\nrepresentations of itself by implementing special methods, and you can also define at runtime custom display \nfunctions for existing objects whose methods you can't or won't modify. In this notebook, we show how both approaches work.\n\n<br/>\n**Note:** this notebook has had all output cells stripped out so we can include it in the IPython documentation with \na minimal file size. You'll need to manually execute the cells to see the output (you can run all of them with the \n\"Run All\" button, or execute each individually). You must start this notebook with\n<pre>\nipython notebook --pylab inline\n</pre>\n\nto ensure pylab support is available for plots.\n\n## Custom-built classes with dedicated ``_repr_*_`` methods\n\nIn our first example, we illustrate how objects can expose directly to IPython special representations of\nthemselves, by providing methods such as ``_repr_svg_``, ``_repr_png_``, ``_repr_latex_``, etc. For a full\nlist of the special ``_repr_*_`` methods supported, see the code in ``IPython.core.displaypub``.\n\nAs an illustration, we build a class that holds data generated by sampling a Gaussian distribution with given mean \nand variance. The class can display itself in a variety of ways: as a LaTeX expression or as an image in PNG or SVG \nformat. Each frontend can then decide which representation it can handle.\nFurther, we illustrate how to expose directly to the user the ability to directly access the various alternate \nrepresentations (since by default displaying the object itself will only show one, and which is shown will depend on the \nrequired representations that even cache necessary data in cases where it may be expensive to compute.\n\nThe next cell defines the Gaussian class:",
10 "cell_type": "markdown",
7 "cell_type": "markdown"
11 "source": [
12 "# Using the IPython display protocol for your own objects",
13 "",
14 "IPython extends the idea of the ``__repr__`` method in Python to support multiple representations for a given",
15 "object, which clients can use to display the object according to their capabilities. An object can return multiple",
16 "representations of itself by implementing special methods, and you can also define at runtime custom display ",
17 "functions for existing objects whose methods you can't or won't modify. In this notebook, we show how both approaches work.",
18 "",
19 "<br/>",
20 "**Note:** this notebook has had all output cells stripped out so we can include it in the IPython documentation with ",
21 "a minimal file size. You'll need to manually execute the cells to see the output (you can run all of them with the ",
22 "\"Run All\" button, or execute each individually). You must start this notebook with",
23 "<pre>",
24 "ipython notebook --pylab inline",
25 "</pre>",
26 "",
27 "to ensure pylab support is available for plots.",
28 "",
29 "## Custom-built classes with dedicated ``_repr_*_`` methods",
30 "",
31 "In our first example, we illustrate how objects can expose directly to IPython special representations of",
32 "themselves, by providing methods such as ``_repr_svg_``, ``_repr_png_``, ``_repr_latex_``, etc. For a full",
33 "list of the special ``_repr_*_`` methods supported, see the code in ``IPython.core.displaypub``.",
34 "",
35 "As an illustration, we build a class that holds data generated by sampling a Gaussian distribution with given mean ",
36 "and variance. The class can display itself in a variety of ways: as a LaTeX expression or as an image in PNG or SVG ",
37 "format. Each frontend can then decide which representation it can handle.",
38 "Further, we illustrate how to expose directly to the user the ability to directly access the various alternate ",
39 "representations (since by default displaying the object itself will only show one, and which is shown will depend on the ",
40 "required representations that even cache necessary data in cases where it may be expensive to compute.",
41 "",
42 "The next cell defines the Gaussian class:"
43 ]
8 },
44 },
9 {
45 {
10 "cell_type": "code",
46 "cell_type": "code",
47 "collapsed": true,
48 "input": [
49 "from IPython.lib.pylabtools import print_figure",
50 "from IPython.core.display import Image, SVG, Math",
51 "",
52 "class Gaussian(object):",
53 " \"\"\"A simple object holding data sampled from a Gaussian distribution.",
54 " \"\"\"",
55 " def __init__(self, mean=0, std=1, size=1000):",
56 " self.data = np.random.normal(mean, std, size)",
57 " self.mean = mean",
58 " self.std = std",
59 " self.size = size",
60 " # For caching plots that may be expensive to compute",
61 " self._png_data = None",
62 " self._svg_data = None",
63 " ",
64 " def _figure_data(self, format):",
65 " fig, ax = plt.subplots()",
66 " ax.plot(self.data, 'o')",
67 " ax.set_title(self._repr_latex_())",
68 " data = print_figure(fig, format)",
69 " # We MUST close the figure, otherwise IPython's display machinery",
70 " # will pick it up and send it as output, resulting in a double display",
71 " plt.close(fig)",
72 " return data",
73 " ",
74 " # Here we define the special repr methods that provide the IPython display protocol",
75 " # Note that for the two figures, we cache the figure data once computed.",
76 " ",
77 " def _repr_png_(self):",
78 " if self._png_data is None:",
79 " self._png_data = self._figure_data('png')",
80 " return self._png_data",
81 "",
82 "",
83 " def _repr_svg_(self):",
84 " if self._svg_data is None:",
85 " self._svg_data = self._figure_data('svg')",
86 " return self._svg_data",
87 " ",
88 " def _repr_latex_(self):",
89 " return r'$\\mathcal{N}(\\mu=%.2g, \\sigma=%.2g),\\ N=%d$' % (self.mean,",
90 " self.std, self.size)",
91 " ",
92 " # We expose as properties some of the above reprs, so that the user can see them",
93 " # directly (since otherwise the client dictates which one it shows by default)",
94 " @property",
95 " def png(self):",
96 " return Image(self._repr_png_(), embed=True)",
97 " ",
98 " @property",
99 " def svg(self):",
100 " return SVG(self._repr_svg_())",
101 " ",
102 " @property",
103 " def latex(self):",
104 " return Math(self._repr_svg_())",
105 " ",
106 " # An example of using a property to display rich information, in this case",
107 " # the histogram of the distribution. We've hardcoded the format to be png",
108 " # in this case, but in production code it would be trivial to make it an option",
109 " @property",
110 " def hist(self):",
111 " fig, ax = plt.subplots()",
112 " ax.hist(self.data, bins=100)",
113 " ax.set_title(self._repr_latex_())",
114 " data = print_figure(fig, 'png')",
115 " plt.close(fig)",
116 " return Image(data, embed=True)"
117 ],
11 "language": "python",
118 "language": "python",
12 "outputs": [],
119 "outputs": [],
13 "collapsed": true,
120 "prompt_number": 1
14 "prompt_number": 1,
15 "input": "from IPython.lib.pylabtools import print_figure\nfrom IPython.core.display import Image, SVG, Math\n\nclass Gaussian(object):\n \"\"\"A simple object holding data sampled from a Gaussian distribution.\n \"\"\"\n def __init__(self, mean=0, std=1, size=1000):\n self.data = np.random.normal(mean, std, size)\n self.mean = mean\n self.std = std\n self.size = size\n # For caching plots that may be expensive to compute\n self._png_data = None\n self._svg_data = None\n \n def _figure_data(self, format):\n fig, ax = plt.subplots()\n ax.plot(self.data, 'o')\n ax.set_title(self._repr_latex_())\n data = print_figure(fig, format)\n # We MUST close the figure, otherwise IPython's display machinery\n # will pick it up and send it as output, resulting in a double display\n plt.close(fig)\n return data\n \n # Here we define the special repr methods that provide the IPython display protocol\n # Note that for the two figures, we cache the figure data once computed.\n \n def _repr_png_(self):\n if self._png_data is None:\n self._png_data = self._figure_data('png')\n return self._png_data\n\n\n def _repr_svg_(self):\n if self._svg_data is None:\n self._svg_data = self._figure_data('svg')\n return self._svg_data\n \n def _repr_latex_(self):\n return r'$\\mathcal{N}(\\mu=%.2g, \\sigma=%.2g),\\ N=%d$' % (self.mean,\n self.std, self.size)\n \n # We expose as properties some of the above reprs, so that the user can see them\n # directly (since otherwise the client dictates which one it shows by default)\n @property\n def png(self):\n return Image(self._repr_png_(), embed=True)\n \n @property\n def svg(self):\n return SVG(self._repr_svg_())\n \n @property\n def latex(self):\n return Math(self._repr_svg_())\n \n # An example of using a property to display rich information, in this case\n # the histogram of the distribution. We've hardcoded the format to be png\n # in this case, but in production code it would be trivial to make it an option\n @property\n def hist(self):\n fig, ax = plt.subplots()\n ax.hist(self.data, bins=100)\n ax.set_title(self._repr_latex_())\n data = print_figure(fig, 'png')\n plt.close(fig)\n return Image(data, embed=True)"
16 },
121 },
17 {
122 {
18 "source": "Now, we create an instance of the Gaussian distribution, whose default representation will be its LaTeX form:",
123 "cell_type": "markdown",
19 "cell_type": "markdown"
124 "source": [
125 "Now, we create an instance of the Gaussian distribution, whose default representation will be its LaTeX form:"
126 ]
20 },
127 },
21 {
128 {
22 "cell_type": "code",
129 "cell_type": "code",
130 "collapsed": true,
131 "input": [
132 "x = Gaussian()",
133 "x"
134 ],
23 "language": "python",
135 "language": "python",
24 "outputs": [],
136 "outputs": [],
25 "collapsed": false,
137 "prompt_number": 2
26 "prompt_number": 2,
27 "input": "x = Gaussian()\nx"
28 },
138 },
29 {
139 {
30 "source": "We can view the data in png or svg formats:",
140 "cell_type": "markdown",
31 "cell_type": "markdown"
141 "source": [
142 "We can view the data in png or svg formats:"
143 ]
32 },
144 },
33 {
145 {
34 "cell_type": "code",
146 "cell_type": "code",
147 "collapsed": true,
148 "input": [
149 "x.png"
150 ],
35 "language": "python",
151 "language": "python",
36 "outputs": [],
152 "outputs": [],
37 "collapsed": false,
153 "prompt_number": 3
38 "prompt_number": 3,
39 "input": "x.png"
40 },
154 },
41 {
155 {
42 "cell_type": "code",
156 "cell_type": "code",
157 "collapsed": true,
158 "input": [
159 "x.svg"
160 ],
43 "language": "python",
161 "language": "python",
44 "outputs": [],
162 "outputs": [],
45 "collapsed": false,
163 "prompt_number": 4
46 "prompt_number": 4,
47 "input": "x.svg"
48 },
164 },
49 {
165 {
50 "source": "Since IPython only displays by default as an ``Out[]`` cell the result of the last computation, we can use the\n``display()`` function to show more than one representation in a single cell:",
166 "cell_type": "markdown",
51 "cell_type": "markdown"
167 "source": [
168 "Since IPython only displays by default as an ``Out[]`` cell the result of the last computation, we can use the",
169 "``display()`` function to show more than one representation in a single cell:"
170 ]
52 },
171 },
53 {
172 {
54 "cell_type": "code",
173 "cell_type": "code",
174 "collapsed": true,
175 "input": [
176 "display(x.png)",
177 "display(x.svg)"
178 ],
55 "language": "python",
179 "language": "python",
56 "outputs": [],
180 "outputs": [],
57 "collapsed": false,
181 "prompt_number": 5
58 "prompt_number": 5,
59 "input": "display(x.png)\ndisplay(x.svg)"
60 },
182 },
61 {
183 {
62 "source": "Now let's create a new Gaussian with different parameters",
184 "cell_type": "markdown",
63 "cell_type": "markdown"
185 "source": [
186 "Now let's create a new Gaussian with different parameters"
187 ]
64 },
188 },
65 {
189 {
66 "cell_type": "code",
190 "cell_type": "code",
191 "collapsed": true,
192 "input": [
193 "x2 = Gaussian(0.5, 0.2, 2000)",
194 "x2"
195 ],
67 "language": "python",
196 "language": "python",
68 "outputs": [],
197 "outputs": [],
69 "collapsed": false,
198 "prompt_number": 6
70 "prompt_number": 6,
71 "input": "x2 = Gaussian(0.5, 0.2, 2000)\nx2"
72 },
199 },
73 {
200 {
74 "source": "We can easily compare them by displaying their histograms",
201 "cell_type": "markdown",
75 "cell_type": "markdown"
202 "source": [
203 "We can easily compare them by displaying their histograms"
204 ]
76 },
205 },
77 {
206 {
78 "cell_type": "code",
207 "cell_type": "code",
208 "collapsed": true,
209 "input": [
210 "display(x.hist)",
211 "display(x2.hist)"
212 ],
79 "language": "python",
213 "language": "python",
80 "outputs": [],
214 "outputs": [],
81 "collapsed": false,
215 "prompt_number": 7
82 "prompt_number": 7,
83 "input": "display(x.hist)\ndisplay(x2.hist)"
84 },
216 },
85 {
217 {
86 "source": "## Adding IPython display support to existing objects\n\nWhen you are directly writing your own classes, you can adapt them for display in IPython by \nfollowing the above example. But in practice, we often need to work with existing code we\ncan't modify. \n\nWe now illustrate how to add these kinds of extended display capabilities to existing objects.\nWe will use the numpy polynomials and change their default representation to be a formatted\nLaTeX expression.\n\nFirst, consider how a numpy polynomial object renders by default:",
218 "cell_type": "markdown",
87 "cell_type": "markdown"
219 "source": [
220 "## Adding IPython display support to existing objects",
221 "",
222 "When you are directly writing your own classes, you can adapt them for display in IPython by ",
223 "following the above example. But in practice, we often need to work with existing code we",
224 "can't modify. ",
225 "",
226 "We now illustrate how to add these kinds of extended display capabilities to existing objects.",
227 "We will use the numpy polynomials and change their default representation to be a formatted",
228 "LaTeX expression.",
229 "",
230 "First, consider how a numpy polynomial object renders by default:"
231 ]
88 },
232 },
89 {
233 {
90 "cell_type": "code",
234 "cell_type": "code",
235 "collapsed": true,
236 "input": [
237 "p = np.polynomial.Polynomial([1,2,3], [-10, 10])",
238 "p"
239 ],
91 "language": "python",
240 "language": "python",
92 "outputs": [],
241 "outputs": [],
93 "collapsed": false,
242 "prompt_number": 8
94 "prompt_number": 8,
95 "input": "p = np.polynomial.Polynomial([1,2,3], [-10, 10])\np"
96 },
243 },
97 {
244 {
98 "source": "Next, we define a function that pretty-prints a polynomial as a LaTeX string:",
245 "cell_type": "markdown",
99 "cell_type": "markdown"
246 "source": [
247 "Next, we define a function that pretty-prints a polynomial as a LaTeX string:"
248 ]
100 },
249 },
101 {
250 {
102 "cell_type": "code",
251 "cell_type": "code",
252 "collapsed": true,
253 "input": [
254 "def poly2latex(p):",
255 " terms = ['%.2g' % p.coef[0]]",
256 " if len(p) > 1:",
257 " term = 'x'",
258 " c = p.coef[1]",
259 " if c!=1:",
260 " term = ('%.2g ' % c) + term",
261 " terms.append(term)",
262 " if len(p) > 2:",
263 " for i in range(2, len(p)):",
264 " term = 'x^%d' % i",
265 " c = p.coef[i]",
266 " if c!=1:",
267 " term = ('%.2g ' % c) + term",
268 " terms.append(term)",
269 " px = '$P(x)=%s$' % '+'.join(terms)",
270 " dom = r', domain: $[%.2g,\\ %.2g]$' % tuple(p.domain)",
271 " win = r', window: $[%.2g,\\ %.2g]$' % tuple(p.window)",
272 " return px+dom+win"
273 ],
103 "language": "python",
274 "language": "python",
104 "outputs": [],
275 "outputs": [],
105 "collapsed": true,
276 "prompt_number": 9
106 "prompt_number": 9,
107 "input": "def poly2latex(p):\n terms = ['%.2g' % p.coef[0]]\n if len(p) > 1:\n term = 'x'\n c = p.coef[1]\n if c!=1:\n term = ('%.2g ' % c) + term\n terms.append(term)\n if len(p) > 2:\n for i in range(2, len(p)):\n term = 'x^%d' % i\n c = p.coef[i]\n if c!=1:\n term = ('%.2g ' % c) + term\n terms.append(term)\n px = '$P(x)=%s$' % '+'.join(terms)\n dom = r', domain: $[%.2g,\\ %.2g]$' % tuple(p.domain)\n win = r', window: $[%.2g,\\ %.2g]$' % tuple(p.window)\n return px+dom+win"
108 },
277 },
109 {
278 {
110 "source": "This produces, on our polynomial ``p``, the following:",
279 "cell_type": "markdown",
111 "cell_type": "markdown"
280 "source": [
281 "This produces, on our polynomial ``p``, the following:"
282 ]
112 },
283 },
113 {
284 {
114 "cell_type": "code",
285 "cell_type": "code",
286 "collapsed": true,
287 "input": [
288 "poly2latex(p)"
289 ],
115 "language": "python",
290 "language": "python",
116 "outputs": [],
291 "outputs": [],
117 "collapsed": false,
292 "prompt_number": 10
118 "prompt_number": 10,
119 "input": "poly2latex(p)"
120 },
293 },
121 {
294 {
122 "source": "Note that this did *not* produce a formated LaTeX object, because it is simply a string \nwith LaTeX code. In order for this to be interpreted as a mathematical expression, it\nmust be properly wrapped into a Math object:",
295 "cell_type": "markdown",
123 "cell_type": "markdown"
296 "source": [
297 "Note that this did *not* produce a formated LaTeX object, because it is simply a string ",
298 "with LaTeX code. In order for this to be interpreted as a mathematical expression, it",
299 "must be properly wrapped into a Math object:"
300 ]
124 },
301 },
125 {
302 {
126 "cell_type": "code",
303 "cell_type": "code",
304 "collapsed": true,
305 "input": [
306 "from IPython.core.display import Math",
307 "Math(poly2latex(p))"
308 ],
127 "language": "python",
309 "language": "python",
128 "outputs": [],
310 "outputs": [],
129 "collapsed": false,
311 "prompt_number": 11
130 "prompt_number": 11,
131 "input": "from IPython.core.display import Math\nMath(poly2latex(p))"
132 },
312 },
133 {
313 {
134 "source": "But we can configure IPython to do this automatically for us as follows. We hook into the\nIPython display system and instruct it to use ``poly2latex`` for the latex mimetype, when\nencountering objects of the ``Polynomial`` type defined in the\n``numpy.polynomial.polynomial`` module:",
314 "cell_type": "markdown",
135 "cell_type": "markdown"
315 "source": [
316 "But we can configure IPython to do this automatically for us as follows. We hook into the",
317 "IPython display system and instruct it to use ``poly2latex`` for the latex mimetype, when",
318 "encountering objects of the ``Polynomial`` type defined in the",
319 "``numpy.polynomial.polynomial`` module:"
320 ]
136 },
321 },
137 {
322 {
138 "cell_type": "code",
323 "cell_type": "code",
324 "collapsed": true,
325 "input": [
326 "ip = get_ipython()",
327 "latex_formatter = ip.display_formatter.formatters['text/latex']",
328 "latex_formatter.for_type_by_name('numpy.polynomial.polynomial',",
329 " 'Polynomial', poly2latex)"
330 ],
139 "language": "python",
331 "language": "python",
140 "outputs": [],
332 "outputs": [],
141 "collapsed": true,
333 "prompt_number": 12
142 "prompt_number": 12,
143 "input": "ip = get_ipython()\nlatex_formatter = ip.display_formatter.formatters['text/latex']\nlatex_formatter.for_type_by_name('numpy.polynomial.polynomial',\n 'Polynomial', poly2latex)"
144 },
334 },
145 {
335 {
146 "source": "For more examples on how to use the above system, and how to bundle similar print functions\ninto a convenient IPython extension, see the ``IPython/extensions/sympyprinting.py`` file. \nThe machinery that defines the display system is in the ``display.py`` and ``displaypub.py`` \nfiles in ``IPython/core``.\n\nOnce our special printer has been loaded, all polynomials will be represented by their \nmathematical form instead:",
336 "cell_type": "markdown",
147 "cell_type": "markdown"
337 "source": [
338 "For more examples on how to use the above system, and how to bundle similar print functions",
339 "into a convenient IPython extension, see the ``IPython/extensions/sympyprinting.py`` file. ",
340 "The machinery that defines the display system is in the ``display.py`` and ``displaypub.py`` ",
341 "files in ``IPython/core``.",
342 "",
343 "Once our special printer has been loaded, all polynomials will be represented by their ",
344 "mathematical form instead:"
345 ]
148 },
346 },
149 {
347 {
150 "cell_type": "code",
348 "cell_type": "code",
349 "collapsed": true,
350 "input": [
351 "p"
352 ],
151 "language": "python",
353 "language": "python",
152 "outputs": [],
354 "outputs": [],
153 "collapsed": false,
355 "prompt_number": 13
154 "prompt_number": 13,
155 "input": "p"
156 },
356 },
157 {
357 {
158 "cell_type": "code",
358 "cell_type": "code",
359 "collapsed": true,
360 "input": [
361 "p2 = np.polynomial.Polynomial([-20, 71, -15, 1])",
362 "p2"
363 ],
159 "language": "python",
364 "language": "python",
160 "outputs": [],
365 "outputs": [],
161 "collapsed": false,
366 "prompt_number": 14
162 "prompt_number": 14,
163 "input": "p2 = np.polynomial.Polynomial([-20, 71, -15, 1])\np2"
164 },
367 },
165 {
368 {
166 "cell_type": "code",
369 "cell_type": "code",
370 "collapsed": true,
371 "input": [],
167 "language": "python",
372 "language": "python",
168 "outputs": [],
373 "outputs": [],
169 "collapsed": true,
374 "prompt_number": 14
170 "prompt_number": 14,
171 "input": ""
172 }
375 }
173 ]
376 ]
174 }
377 }
175 ],
378 ]
176 "metadata": {
177 "name": "display_protocol"
178 },
179 "nbformat": 2
180 } No newline at end of file
379 }
@@ -1,28 +1,118 b''
1 {
1 {
2 "nbformat": 2,
3 "metadata": {
2 "metadata": {
4 "name": "formatting"
3 "name": "formatting"
5 },
4 },
5 "nbformat": 2,
6 "worksheets": [
6 "worksheets": [
7 {
7 {
8 "cells": [
8 "cells": [
9 {
9 {
10 "source": "# Title (h1)\n\n## Heading (h2)\n\n### Heading (h3)\n\nHere is a paragraph of text.\n\n* One.\n - Sublist\n - Here we go\n - Sublist\n - Here we go\n - Here we go\n* Two.\n - Sublist\n* Three.\n - Sublist\n\nNow another list:\n\n---\n\n1. Here we go\n 1. Sublist\n 2. Sublist\n2. There we go\n3. Now this\n\nAnd another paragraph.\n\n### Heading (h3)\n\n#### Heading (h4)\n\n##### Heading (h5)\n\n###### Heading (h6)\n\n## Heading (h2)\n\n",
10 "cell_type": "markdown",
11 "cell_type": "markdown"
11 "source": [
12 "# Title (h1)",
13 "",
14 "## Heading (h2)",
15 "",
16 "### Heading (h3)",
17 "",
18 "Here is a paragraph of text.",
19 "",
20 "* One.",
21 " - Sublist",
22 " - Here we go",
23 " - Sublist",
24 " - Here we go",
25 " - Here we go",
26 "* Two.",
27 " - Sublist",
28 "* Three.",
29 " - Sublist",
30 "",
31 "Now another list:",
32 "",
33 "---",
34 "",
35 "1. Here we go",
36 " 1. Sublist",
37 " 2. Sublist",
38 "2. There we go",
39 "3. Now this",
40 "",
41 "And another paragraph.",
42 "",
43 "### Heading (h3)",
44 "",
45 "#### Heading (h4)",
46 "",
47 "##### Heading (h5)",
48 "",
49 "###### Heading (h6)",
50 "",
51 "## Heading (h2)",
52 ""
53 ]
12 },
54 },
13 {
55 {
14 "source": "# Heading (h1)\n\n## Heading (h2)\n\n### Heading (h3)\n\n#### Heading (h4)\n\n##### Heading (h5)\n\n###### Heading (h6)\n\nNow for a simpel code example:\n\n for i in range(10):\n print i\n\nNow more text",
56 "cell_type": "markdown",
15 "cell_type": "markdown"
57 "source": [
58 "# Heading (h1)",
59 "",
60 "## Heading (h2)",
61 "",
62 "### Heading (h3)",
63 "",
64 "#### Heading (h4)",
65 "",
66 "##### Heading (h5)",
67 "",
68 "###### Heading (h6)",
69 "",
70 "Now for a simpel code example:",
71 "",
72 " for i in range(10):",
73 " print i",
74 "",
75 "Now more text"
76 ]
16 },
77 },
17 {
78 {
18 "source": "## Heading (h2)\n\nHere is text.\n\n> This is a *block* quote. This is a block quote. This is a block quote. \n> This is a **block** quote. This is a block quote. This is a block quote. \n> This is a `block` quote. This is a block quote. This is a block quote. \n> This is a block quote. This is a block quote. This is a block quote. \n> This is a block quote. This is a block quote. This is a block quote. \n> This is a block quote. This is a block quote. This is a block quote. \n\nHere is text\n\n<table>\n<tr>\n<th>Header 1</th>\n<th>Header 2</th>\n</tr>\n<tr>\n<td>row 1, cell 1</td>\n<td>row 1, cell 2</td>\n</tr>\n<tr>\n<td>row 2, cell 1</td>\n<td>row 2, cell 2</td>\n</tr>\n</table>",
79 "cell_type": "markdown",
19 "cell_type": "markdown"
80 "source": [
81 "## Heading (h2)",
82 "",
83 "Here is text.",
84 "",
85 "> This is a *block* quote. This is a block quote. This is a block quote. ",
86 "> This is a **block** quote. This is a block quote. This is a block quote. ",
87 "> This is a `block` quote. This is a block quote. This is a block quote. ",
88 "> This is a block quote. This is a block quote. This is a block quote. ",
89 "> This is a block quote. This is a block quote. This is a block quote. ",
90 "> This is a block quote. This is a block quote. This is a block quote. ",
91 "",
92 "Here is text",
93 "",
94 "<table>",
95 "<tr>",
96 "<th>Header 1</th>",
97 "<th>Header 2</th>",
98 "</tr>",
99 "<tr>",
100 "<td>row 1, cell 1</td>",
101 "<td>row 1, cell 2</td>",
102 "</tr>",
103 "<tr>",
104 "<td>row 2, cell 1</td>",
105 "<td>row 2, cell 2</td>",
106 "</tr>",
107 "</table>"
108 ]
20 },
109 },
21 {
110 {
22 "outputs": [],
23 "cell_type": "code",
111 "cell_type": "code",
24 "collapsed": true,
112 "collapsed": true,
25 "language": "python"
113 "input": [],
114 "language": "python",
115 "outputs": []
26 }
116 }
27 ]
117 ]
28 }
118 }
@@ -1,138 +1,217 b''
1 {
1 {
2 "nbformat": 2,
3 "metadata": {
2 "metadata": {
4 "name": "grovers"
3 "name": "grovers"
5 },
4 },
5 "nbformat": 2,
6 "worksheets": [
6 "worksheets": [
7 {
7 {
8 "cells": [
8 "cells": [
9 {
9 {
10 "source": "<h1>Grover's Algorithm</h1>",
10 "cell_type": "markdown",
11 "cell_type": "markdown"
11 "source": [
12 "<h1>Grover's Algorithm</h1>"
13 ]
12 },
14 },
13 {
15 {
14 "cell_type": "code",
16 "cell_type": "code",
17 "collapsed": true,
18 "input": [
19 "%load_ext sympyprinting"
20 ],
15 "language": "python",
21 "language": "python",
16 "outputs": [],
22 "outputs": [],
17 "collapsed": true,
23 "prompt_number": 1
18 "prompt_number": 1,
19 "input": "%load_ext sympyprinting"
20 },
24 },
21 {
25 {
22 "cell_type": "code",
26 "cell_type": "code",
27 "collapsed": true,
28 "input": [
29 "from sympy import sqrt, symbols, Rational",
30 "from sympy import expand, Eq, Symbol, simplify, exp, sin",
31 "from sympy.physics.quantum import *",
32 "from sympy.physics.quantum.qubit import *",
33 "from sympy.physics.quantum.gate import *",
34 "from sympy.physics.quantum.grover import *",
35 "from sympy.physics.quantum.qft import QFT, IQFT, Fourier",
36 "from sympy.physics.quantum.circuitplot import circuit_plot"
37 ],
23 "language": "python",
38 "language": "python",
24 "outputs": [],
39 "outputs": [],
25 "collapsed": true,
40 "prompt_number": 2
26 "prompt_number": 2,
27 "input": "from sympy import sqrt, symbols, Rational\nfrom sympy import expand, Eq, Symbol, simplify, exp, sin\nfrom sympy.physics.quantum import *\nfrom sympy.physics.quantum.qubit import *\nfrom sympy.physics.quantum.gate import *\nfrom sympy.physics.quantum.grover import *\nfrom sympy.physics.quantum.qft import QFT, IQFT, Fourier\nfrom sympy.physics.quantum.circuitplot import circuit_plot"
28 },
41 },
29 {
42 {
30 "cell_type": "code",
43 "cell_type": "code",
44 "collapsed": true,
45 "input": [
46 "nqubits = 3"
47 ],
31 "language": "python",
48 "language": "python",
32 "outputs": [],
49 "outputs": [],
33 "collapsed": true,
50 "prompt_number": 3
34 "prompt_number": 3,
35 "input": "nqubits = 3\n"
36 },
51 },
37 {
52 {
38 "source": "Grover's algorithm is a quantum algorithm which searches an unordered database (inverts a function).<br/>\nProvides polynomial speedup over classical brute-force search ($O(\\sqrt{N}) vs. O(N))$ ",
53 "cell_type": "markdown",
39 "cell_type": "markdown"
54 "source": [
55 "Grover's algorithm is a quantum algorithm which searches an unordered database (inverts a function).<br/>",
56 "Provides polynomial speedup over classical brute-force search ($O(\\sqrt{N}) vs. O(N))$ "
57 ]
40 },
58 },
41 {
59 {
42 "source": "Define a black box function that returns True if it is passed the state we are searching for.",
60 "cell_type": "markdown",
43 "cell_type": "markdown"
61 "source": [
62 "Define a black box function that returns True if it is passed the state we are searching for."
63 ]
44 },
64 },
45 {
65 {
46 "cell_type": "code",
66 "cell_type": "code",
67 "collapsed": true,
68 "input": [
69 "def black_box(qubits):",
70 " return True if qubits == IntQubit(1, qubits.nqubits) else False"
71 ],
47 "language": "python",
72 "language": "python",
48 "outputs": [],
73 "outputs": [],
49 "collapsed": true,
74 "prompt_number": 4
50 "prompt_number": 4,
51 "input": "def black_box(qubits):\n return True if qubits == IntQubit(1, qubits.nqubits) else False\n"
52 },
75 },
53 {
76 {
54 "source": "Build a uniform superposition state to start the search.",
77 "cell_type": "markdown",
55 "cell_type": "markdown"
78 "source": [
79 "Build a uniform superposition state to start the search."
80 ]
56 },
81 },
57 {
82 {
58 "cell_type": "code",
83 "cell_type": "code",
84 "collapsed": false,
85 "input": [
86 "psi = superposition_basis(nqubits); psi"
87 ],
59 "language": "python",
88 "language": "python",
60 "outputs": [
89 "outputs": [
61 {
90 {
91 "latex": [
92 "$$\\frac{1}{4} \\sqrt{2} {\\left|0\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|1\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|2\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|3\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|4\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|5\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|6\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|7\\right\\rangle }$$"
93 ],
62 "output_type": "pyout",
94 "output_type": "pyout",
63 "latex": "$$\\frac{1}{4} \\sqrt{2} {\\left|0\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|1\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|2\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|3\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|4\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|5\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|6\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|7\\right\\rangle }$$",
64 "prompt_number": 5,
65 "png": "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\nTkSuQmCC\n",
95 "png": "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\nTkSuQmCC\n",
66 "text": "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n\u2572\u2571 2 \u22c5\u27580\u27e9 \u2572\u2571 2 \u22c5\u27581\u27e9 \u2572\u2571 2 \u22c5\u27582\u27e9 \u2572\u2571 2 \u22c5\u27583\u27e9 \u2572\u2571 2 \u22c5\u27584\u27e9 \u2572\u2571 2 \u22c5\u27585\u27e9 \u2572\u2571 2 \u22c5\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\n 4 4 4 4 4 4 4 \n\n \u23bd\u23bd\u23bd \n\u27586\u27e9 \u2572\u2571 2 \u22c5\u27587\u27e9\n\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 4"
96 "prompt_number": 5,
97 "text": [
98 "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ",
99 "\u2572\u2571 2 \u22c5\u27580\u27e9 \u2572\u2571 2 \u22c5\u27581\u27e9 \u2572\u2571 2 \u22c5\u27582\u27e9 \u2572\u2571 2 \u22c5\u27583\u27e9 \u2572\u2571 2 \u22c5\u27584\u27e9 \u2572\u2571 2 \u22c5\u27585\u27e9 \u2572\u2571 2 \u22c5",
100 "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500",
101 " 4 4 4 4 4 4 4 ",
102 "",
103 " \u23bd\u23bd\u23bd ",
104 "\u27586\u27e9 \u2572\u2571 2 \u22c5\u27587\u27e9",
105 "\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",
106 " 4"
107 ]
67 }
108 }
68 ],
109 ],
69 "collapsed": false,
110 "prompt_number": 5
70 "prompt_number": 5,
71 "input": "psi = superposition_basis(nqubits); psi\n"
72 },
111 },
73 {
112 {
74 "cell_type": "code",
113 "cell_type": "code",
114 "collapsed": true,
115 "input": [
116 "v = OracleGate(nqubits, black_box)"
117 ],
75 "language": "python",
118 "language": "python",
76 "outputs": [],
119 "outputs": [],
77 "collapsed": true,
120 "prompt_number": 6
78 "prompt_number": 6,
79 "input": "v = OracleGate(nqubits, black_box)\n"
80 },
121 },
81 {
122 {
82 "source": "Perform two iterations of Grover's algorithm. Each iteration, the amplitude of the target state increases.",
123 "cell_type": "markdown",
83 "cell_type": "markdown"
124 "source": [
125 "Perform two iterations of Grover's algorithm. Each iteration, the amplitude of the target state increases."
126 ]
84 },
127 },
85 {
128 {
86 "cell_type": "code",
129 "cell_type": "code",
130 "collapsed": false,
131 "input": [
132 "iter1 = qapply(grover_iteration(psi, v)); iter1"
133 ],
87 "language": "python",
134 "language": "python",
88 "outputs": [
135 "outputs": [
89 {
136 {
137 "latex": [
138 "$$\\frac{1}{8} \\sqrt{2} {\\left|0\\right\\rangle } + \\frac{5}{8} \\sqrt{2} {\\left|1\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|2\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|3\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|4\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|5\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|6\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|7\\right\\rangle }$$"
139 ],
90 "output_type": "pyout",
140 "output_type": "pyout",
91 "latex": "$$\\frac{1}{8} \\sqrt{2} {\\left|0\\right\\rangle } + \\frac{5}{8} \\sqrt{2} {\\left|1\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|2\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|3\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|4\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|5\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|6\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|7\\right\\rangle }$$",
92 "prompt_number": 7,
93 "png": "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\nSUVORK5CYII=\n",
141 "png": "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\nSUVORK5CYII=\n",
94 "text": "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\n\u2572\u2571 2 \u22c5\u27580\u27e9 5\u22c5\u2572\u2571 2 \u22c5\u27581\u27e9 \u2572\u2571 2 \u22c5\u27582\u27e9 \u2572\u2571 2 \u22c5\u27583\u27e9 \u2572\u2571 2 \u22c5\u27584\u27e9 \u2572\u2571 2 \u22c5\u27585\u27e9 \u2572\u2571 2\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\n 8 8 8 8 8 8 \n\n\u23bd \u23bd\u23bd\u23bd \n \u22c5\u27586\u27e9 \u2572\u2571 2 \u22c5\u27587\u27e9\n\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n8 8"
142 "prompt_number": 7,
143 "text": [
144 "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd",
145 "\u2572\u2571 2 \u22c5\u27580\u27e9 5\u22c5\u2572\u2571 2 \u22c5\u27581\u27e9 \u2572\u2571 2 \u22c5\u27582\u27e9 \u2572\u2571 2 \u22c5\u27583\u27e9 \u2572\u2571 2 \u22c5\u27584\u27e9 \u2572\u2571 2 \u22c5\u27585\u27e9 \u2572\u2571 2",
146 "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500",
147 " 8 8 8 8 8 8 ",
148 "",
149 "\u23bd \u23bd\u23bd\u23bd ",
150 " \u22c5\u27586\u27e9 \u2572\u2571 2 \u22c5\u27587\u27e9",
151 "\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",
152 "8 8"
153 ]
95 }
154 }
96 ],
155 ],
97 "collapsed": false,
156 "prompt_number": 7
98 "prompt_number": 7,
99 "input": "iter1 = qapply(grover_iteration(psi, v)); iter1\n"
100 },
157 },
101 {
158 {
102 "cell_type": "code",
159 "cell_type": "code",
160 "collapsed": false,
161 "input": [
162 "iter2 = qapply(grover_iteration(iter1, v)); iter2"
163 ],
103 "language": "python",
164 "language": "python",
104 "outputs": [
165 "outputs": [
105 {
166 {
167 "latex": [
168 "$$- \\frac{1}{16} \\sqrt{2} {\\left|0\\right\\rangle } + \\frac{11}{16} \\sqrt{2} {\\left|1\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|2\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|3\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|4\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|5\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|6\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|7\\right\\rangle }$$"
169 ],
106 "output_type": "pyout",
170 "output_type": "pyout",
107 "latex": "$$- \\frac{1}{16} \\sqrt{2} {\\left|0\\right\\rangle } + \\frac{11}{16} \\sqrt{2} {\\left|1\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|2\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|3\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|4\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|5\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|6\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|7\\right\\rangle }$$",
108 "prompt_number": 8,
109 "png": "iVBORw0KGgoAAAANSUhEUgAAAwUAAAAkCAYAAADYfZZ3AAAABHNCSVQICAgIfAhkiAAADSZJREFU\neJztnXmQHFUdxz9J2CyJ4UyiEcIhV1mBUiRKRQoVjwIBC+TQSKFkKY3ihYiY4vAYFRAxEhUkqIgI\nClHBAg2IILpKEcF4gCKlwSjKVZwqoAQKiH/8utmeN697Zrp75zeb+X6qpmrn9XvTvZ/f9Ot5/Y4G\nIYQQQgghhBBCCCGEEEKIQWMnYH0NL1Efiokfcu+L/Psi/77Ivy/y70ffud+ozg/rkEnAzsAah30D\n7AO8JjmOQaUoBh7x2YfBjYnOB1/k3xf590X+fZF/P+TemWHglcB3gfMcj+NyYEvH/XtSFAPP+Axi\nTHQ++CL/vsi/L/Lvi/z7IfcFTO7hvuYCM4B/9XCfIfOBvwOPOB6DJ0Ux8IrPoMZE54Mv8u+L/Psi\n/77Ivx9yX0AvGwVrgeuAf/dwnyHHA2c57t+bohh4xWdQY6LzwRf590X+fZF/X+TfD7kvoJeNAm9e\nDDwG3Ot9IOI5FBM/5N4X+fdF/n2Rf1/k34++dj9IjYITgKXOx7AA2MX5GPoJ75gMcjy83YP8y78f\n8u+L/Pvi7V/ufcn1PyiNgm2BqcBfc7YPAR8Cvg+cCyyk/cpMR0XStgO+BJwBnAzsHWz/PfDWzg55\ng6dXMRkCLgY2jWwb1Hi0cw/d+w/dd1Je/vOp6h9gf+ArwEXAhcBrg+3yH6euuifky8D2mffyH6cO\n/1sAVwJHANOBjYHDks+cleSR/zh1+J8CHAOcDyzDhstMyWyX+3yq1v3XA58HTsEaIMdlXscmeXL9\nD0qj4ATgCznbhoGrgP8B7wQuA87EKpTpBZ+5Q/B+K+B3wBXAiVgwLwAOzuR5EnimzecOCr2IyUxg\nBfB27EQMGdR4FLmHcv6z7jstL/9xqvoHq4P2wC4CRwE/AX4GLMnkkf9W6qp7QvYDPghsnkmT/1bq\n8j8MHARcAjwA3I+tNnMd8FCSR/5bqcP/ZKy+mQUsBj4MvAo4KZNH7uNUrfvnAq9L9nMq1jhYlnkd\nkOTrK/9nAd/s4f5mYy2uPD5G84US7I7aeuDsgnKN4P1SYHWQdgo2w31WJm1HYKTgc4uoa/mqohj0\nIj7jHZOtgGuBa4BbknKzcspUiUcd9Nv5AOX8N0qWl/9WqvofAh4Evp5Jm4T9OHo02Z4i/83UdT3I\nsjFwa/IZuwfb5L+ZuvzPwcZs/xa4HfgatiZ8iPw3U4f/47GbcSkzgP9iMcgi961Urfv3xRodC4CX\nYzeGdsdWO/o19tsoJeq/lz0FOwCfxbpPNgM+B8zrwX6PA75YsP0A4GXYFzfl59jM9P073McWwHuw\nH6FZrsHuDO2bSVuLPTCjDN8rWS6lKAa9jM94x+RezPkbgZ+2yVslHlXo1/MBqvvvprz8t1LV/xTs\nIjI/k7YeaygM0fywHPlvpo7rQcgS7C51DPlvpk7/v8TOgXnAu4FfRPLIfzNV/e+C3aFelkl7HNgG\neG+QV+5bqep/HjZk6ybgN9jolVuw30NLaZ7c7OV/XNkFuIH8LpBNgR+1+YybsQvmXkH6bcCzwLSc\nco3M3/smn3FYkCe9OH8jSD8Ea8V1y2iJMr2mX2KSspTingIoH49+ow73UM5/o0J5+W+mqn+ATbCu\n6JQZwDrg6khZ+R+jzroHbKWRBvBm4j0FIP9Z6vI/h+a71UXI/xhV/Z8KPEHnT+mV+2aq1v0vpPVm\n/+7YUPYYG4p/AF4PfBQbG7U4J89JtG9dbYuN+89+iSdjY7r+UlCukfn7KCyQ+0XyraP1bvVGwKfa\nHFeM0RJlekk/xSSlk0ZB2Xj0E3W5h3L+GxXKy38zVf3H+ARwN7B1ZJv8j1Fn3QM2PGEaxY0C+R+j\nLv9po+AdwGnYHdpF2FCuEPkfo6r/ldhDuWZi85rOw8bEPz+nnNw3U3fdPxlYBbwgZ/uG4P850nGx\n3wH+ENk+jdbhPJ1yCFaBn1iQp5H5e0mSP1xtCOBhrBsn5JPEJ78WMdpl/l7TTzFJ6aRRAOXi0U+M\np3to779Rsbz8F1PG/6ZJ+tXYUIrNI3lS5D+fsnXPIuDA5O+iRgHIfxFl/M8B7sLGVIP9+LkYW4kr\nhvzn043/u4G/JXk3SdIWYbHIm4wv98VUufa+C/hhm8+v3f96h1eWBUlaOInoA5Rb8moImxR2M8XL\nQDUyf5+cHMOCSL5HsDFdIaeXOLbRDvN5xgP6IyYpnTYKysQjxoZ2PkBn/hsVy8t/PlX9D2N3stYA\nu+Xkkf84ZeueLbG7pCntGgUT1X9Iv/ifjA2lyPKi5NiOjJSX/zjd+n862f8emW2TgDuAy3PKTlT3\n/V73p94PbbOPuvz3FauxpZtSNsJWnykzkfpMbA3Xdiv9NDJ/H4x9GWKNgiex5bmyzMOWyeyW0RJl\nvPCOSUonjYKy8ehX6nQPnflvVCgv/8VU9Z9yK3AfrV3J8p9P2bpnGbY8YEpRo0D+86lS98d4Crg0\nSJP/fLr1/xA21CWcU3AVNib+eUG63BdTpe4/EFv1qagXoMV/tuWxGzYju9MJIn/G1kLtB87GJlJs\ng3VTHYmt9vBsl59zJLb80xuwO/ydknYZzQjSp2ABuS9IPxwLdoyZWBfnlMi2lxDvhlqHtQa7/X/H\nE++YdEMsHjofjKr+Oykv//mU9b8Z8J8g7UZsBZCDaF6uVP7jlHW/N3AnNpSiE0L/E9k9+PsHWI71\njGVXwUl9hg0z+Y9Txv992A//8C76o5jPHWkeYqO6J5+q195DseHrTxXkKfotCtgP0lkdvsIWnyfD\n2Brcp2NfpGvpfozU3tid+OyTb+cXfE4j8/ck7Et/dJDnpdjJ8fFM2nTs+QVFzMbGRIavVTnpM9t8\nngfeMUlp11NQFI9BPh+gO/+NkuXlP5+y/hdjF6HPBHnOwc6FbLr8x6lS91yFrUe+IvO6AXN/TfI+\nXS88z/9EdQ/+/oexYSw3Bnl2xmLwg0ya/Mcp6/8c7NlMIZdjMdkkk6a6J5+q116wGxO3Feyjk9+i\nE5rTsHW4j8DWg+2GnYEfY3fXsiwvKNMI3q+i+e4bwEewu/jZsY0jwE5dHl/KaMlyXnjHBNo3CkYo\nH49+pop76N5/o2T5EeQ/RhX/p2Df+U8HeW5K0rPL3Y0g/yFV656p2Co32dcJmPs9k/fpXdAR5D+k\njrr/Spp/gAIsxGLw/kzaCPIfUsX/AZjj2cH21diD5LKMIPcxql57Yay35lcF+xkh4r9o4shEYzm2\nCtAZdPcgipnYnYOLgLdk0oeA7br4nHOwJ/YtwVrKk7DumwtpHj60U5I2CHjHBMaGYQ3lbN9Q41HW\nPVT33015+W+lqv8VwJuwJ3am7IoNm1iJNQ5S5L+ZOuqeWHd9OnzgaexGUYr8N1NX3b8Ce6Do0kza\nIdj8vvMzafLfTFX/V2Pr8b+PsaUud8XW8Q+XbJf7Vur6/qdLwD5akCfqvxeNgklYy2dNkD6Ere+6\nOdaq/DbxbqdOuRu4AvgjNrmiU1ZgY9hi46ouKSgXjhG7BJtYthLrKtsT60Y6OZNnD+LLk/aaDT0m\nU7GnFM5hbOb99VhvzsrkmMAnHv3uHsr5z54PnZaX/zhV/a/FnuB6HnZReAZrJCzH7lineeW/lbqu\nBymvwIaVLkzeX4Q9t6aBLdEo/83U5f9S7IfpBcA92BjvdIjvk0keff9bqcP/0cC5yWfdC2wPvI3m\nmxFyH6dq3Z/yOHZz4k85ZXL9dzqRowzDyY6PwwQfE2w/F3uwy2rsKXjPYOulVmEm8BjFEytC9iJ/\nzNdd2AU2xnRsln2M7bAJHo8H6TOwL0lsKbFOGAX2KVkWBicmk7FJ2TEexC4SUD0e3TBR3EM5/9nz\nodPy8h+nqv8s07DVhu6MbJP/Vuq+HmyJPZAo5PZkP/LfzHhcj7dNyoae9f1vpU7/G2OOH4rkl/s4\nddb9M7EJyjHHuf7Hs6dgbrLjWIvrUGALLAhgXXqxL063PFyizKqS+8qrgAD+kZMeNhK65emK5Qcl\nJs8SfzZESNV4dMNEcQ/l/GfPh07Ly3+cqv6zPEG8QQDyH6Pu68Ej5K8c0u0PhioMqn+Af+ak6/vf\nSp3+19E8VC6L3Meps+4vOoZc/+PZKFibvNJumSyHY49sXghsDdyPrc4giin7AIwUxcQPufdF/n2R\nf1/k3xf590Puu8BrovF8rEv7VOzu92VYS+6rTsczURivdfpBMfFE7n2Rf1/k3xf590X+/ZD7gLJP\nWavKeqy7Jh0OcxNwrNOxCEMx8UPufZF/X+TfF/n3Rf79kPsAr0bBGmysa8o6WtcUFr1FMfFD7n2R\nf1/k3xf590X+/ZD7AK9GwWU0r986F5vgIfxQTPyQe1/k3xf590X+fZF/P+Q+oBdzCqZiS0JluRh4\nNfZwkQewB1ss6sGxCEMx8UPufZF/X+TfF/n3Rf79kPsOGM/nFOwALMYeFjEZuAP4FrY+c8psLFD3\ntJQW44Fi4ofc+yL/vsi/L/Lvi/z7IfdCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBt+D/S\nzSfShSQN5wAAAABJRU5ErkJggg==\n",
171 "png": "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\nzSfShSQN5wAAAABJRU5ErkJggg==\n",
110 "text": "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n \u2572\u2571 2 \u22c5\u27580\u27e9 11\u22c5\u2572\u2571 2 \u22c5\u27581\u27e9 \u2572\u2571 2 \u22c5\u27582\u27e9 \u2572\u2571 2 \u22c5\u27583\u27e9 \u2572\u2571 2 \u22c5\u27584\u27e9 \u2572\u2571 2 \u22c5\u27585\u27e9 \u2572\n- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\n 16 16 16 16 16 16 \n\n \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n\u2571 2 \u22c5\u27586\u27e9 \u2572\u2571 2 \u22c5\u27587\u27e9\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 16 16"
172 "prompt_number": 8,
173 "text": [
174 "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ",
175 " \u2572\u2571 2 \u22c5\u27580\u27e9 11\u22c5\u2572\u2571 2 \u22c5\u27581\u27e9 \u2572\u2571 2 \u22c5\u27582\u27e9 \u2572\u2571 2 \u22c5\u27583\u27e9 \u2572\u2571 2 \u22c5\u27584\u27e9 \u2572\u2571 2 \u22c5\u27585\u27e9 \u2572",
176 "- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500",
177 " 16 16 16 16 16 16 ",
178 "",
179 " \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ",
180 "\u2571 2 \u22c5\u27586\u27e9 \u2572\u2571 2 \u22c5\u27587\u27e9",
181 "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",
182 " 16 16"
183 ]
111 }
184 }
112 ],
185 ],
113 "collapsed": false,
186 "prompt_number": 8
114 "prompt_number": 8,
115 "input": "iter2 = qapply(grover_iteration(iter1, v)); iter2\n"
116 },
187 },
117 {
188 {
118 "source": "A single shot measurement is performed to retrieve the target state.",
189 "cell_type": "markdown",
119 "cell_type": "markdown"
190 "source": [
191 "A single shot measurement is performed to retrieve the target state."
192 ]
120 },
193 },
121 {
194 {
122 "cell_type": "code",
195 "cell_type": "code",
196 "collapsed": false,
197 "input": [
198 "measure_all_oneshot(iter2)"
199 ],
123 "language": "python",
200 "language": "python",
124 "outputs": [
201 "outputs": [
125 {
202 {
203 "latex": [
204 "$${\\left|001\\right\\rangle }$$"
205 ],
126 "output_type": "pyout",
206 "output_type": "pyout",
127 "latex": "$${\\left|001\\right\\rangle }$$",
128 "prompt_number": 9,
129 "png": "iVBORw0KGgoAAAANSUhEUgAAACkAAAATCAYAAAANgSQ9AAAABHNCSVQICAgIfAhkiAAAAahJREFU\nSInt1rtrFUEcxfEPQeMr6DXiC3yksFHRRiQoiHVCKiuxyh9gYyMWVhaCooKttZXYiEZQ0yhib7AR\ng5GA+CgUITe+IFrMBMa9e/fO3NZ8YZjZ8zu7e3Z3dnZZoYgL3QqrkvEZPMV7tHAdbXzBWtzC28r+\nub5lNuIJTmOuUmtjGz43XckkRuJ4GlcrtVdYX9kn1zeIE3iOP9hXc/4tONcUMA05Gg+0P6mtw3dc\nTrRcXwv3hTt+ryEkXMJATsi7mK+pP8JMsp3rS7nYI+RxjFfFutRH8KZGn8Uh4bGU+Ep4EYP2DLkd\nCzV6O/Y7Cn2lzGNvKlRDbhLmVVsny1qrwNcPDzDRFPI3lmKrsjr2SwW+fpjAVFPIRd3XuA2x/1Dg\n64cRvEuFujk5g801+lDsPxb6SjgmvDz/0C3k7hr9qPDm/ij0lTCGhzkhX+IA9iTaVhzGtT58uQzj\nqx5zeVKYD4N4hptJ7bzwTV+TaLm+lBvCYt6xFuKssKx1kP5gLOJXbKeET9ttfMMunMTPxJ/rI/xU\n7MTBuP0Yr3EHV6I2hE9dLm6F/4e/u+tyeF0qLvsAAAAASUVORK5CYII=\n",
207 "png": "iVBORw0KGgoAAAANSUhEUgAAACkAAAATCAYAAAANgSQ9AAAABHNCSVQICAgIfAhkiAAAAahJREFU\nSInt1rtrFUEcxfEPQeMr6DXiC3yksFHRRiQoiHVCKiuxyh9gYyMWVhaCooKttZXYiEZQ0yhib7AR\ng5GA+CgUITe+IFrMBMa9e/fO3NZ8YZjZ8zu7e3Z3dnZZoYgL3QqrkvEZPMV7tHAdbXzBWtzC28r+\nub5lNuIJTmOuUmtjGz43XckkRuJ4GlcrtVdYX9kn1zeIE3iOP9hXc/4tONcUMA05Gg+0P6mtw3dc\nTrRcXwv3hTt+ryEkXMJATsi7mK+pP8JMsp3rS7nYI+RxjFfFutRH8KZGn8Uh4bGU+Ep4EYP2DLkd\nCzV6O/Y7Cn2lzGNvKlRDbhLmVVsny1qrwNcPDzDRFPI3lmKrsjr2SwW+fpjAVFPIRd3XuA2x/1Dg\n64cRvEuFujk5g801+lDsPxb6SjgmvDz/0C3k7hr9qPDm/ij0lTCGhzkhX+IA9iTaVhzGtT58uQzj\nqx5zeVKYD4N4hptJ7bzwTV+TaLm+lBvCYt6xFuKssKx1kP5gLOJXbKeET9ttfMMunMTPxJ/rI/xU\n7MTBuP0Yr3EHV6I2hE9dLm6F/4e/u+tyeF0qLvsAAAAASUVORK5CYII=\n",
130 "text": "\u2758001\u27e9"
208 "prompt_number": 9,
209 "text": [
210 "\u2758001\u27e9"
211 ]
131 }
212 }
132 ],
213 ],
133 "collapsed": false,
214 "prompt_number": 9
134 "prompt_number": 9,
135 "input": "measure_all_oneshot(iter2)\n"
136 }
215 }
137 ]
216 ]
138 }
217 }
@@ -1,268 +1,516 b''
1 {
1 {
2 "nbformat": 2,
3 "metadata": {
2 "metadata": {
4 "name": "qerror"
3 "name": "qerror"
5 },
4 },
5 "nbformat": 2,
6 "worksheets": [
6 "worksheets": [
7 {
7 {
8 "cells": [
8 "cells": [
9 {
9 {
10 "source": "<h1>Quantum Error Correction</h1>",
10 "cell_type": "markdown",
11 "cell_type": "markdown"
11 "source": [
12 "<h1>Quantum Error Correction</h1>"
13 ]
12 },
14 },
13 {
15 {
14 "cell_type": "code",
16 "cell_type": "code",
17 "collapsed": true,
18 "input": [
19 "%load_ext sympyprinting"
20 ],
15 "language": "python",
21 "language": "python",
16 "outputs": [],
22 "outputs": [],
17 "collapsed": true,
23 "prompt_number": 1
18 "prompt_number": 1,
19 "input": "%load_ext sympyprinting"
20 },
24 },
21 {
25 {
22 "cell_type": "code",
26 "cell_type": "code",
27 "collapsed": true,
28 "input": [
29 "from sympy import sqrt, symbols, Rational",
30 "from sympy import expand, Eq, Symbol, simplify, exp, sin",
31 "from sympy.physics.quantum import *",
32 "from sympy.physics.quantum.qubit import *",
33 "from sympy.physics.quantum.gate import *",
34 "from sympy.physics.quantum.grover import *",
35 "from sympy.physics.quantum.qft import QFT, IQFT, Fourier",
36 "from sympy.physics.quantum.circuitplot import circuit_plot"
37 ],
23 "language": "python",
38 "language": "python",
24 "outputs": [],
39 "outputs": [],
25 "collapsed": true,
40 "prompt_number": 2
26 "prompt_number": 2,
27 "input": "from sympy import sqrt, symbols, Rational\nfrom sympy import expand, Eq, Symbol, simplify, exp, sin\nfrom sympy.physics.quantum import *\nfrom sympy.physics.quantum.qubit import *\nfrom sympy.physics.quantum.gate import *\nfrom sympy.physics.quantum.grover import *\nfrom sympy.physics.quantum.qft import QFT, IQFT, Fourier\nfrom sympy.physics.quantum.circuitplot import circuit_plot"
28 },
41 },
29 {
42 {
30 "source": "<h2>5 qubit code</h2>",
43 "cell_type": "markdown",
31 "cell_type": "markdown"
44 "source": [
45 "<h2>5 qubit code</h2>"
46 ]
32 },
47 },
33 {
48 {
34 "cell_type": "code",
49 "cell_type": "code",
50 "collapsed": false,
51 "input": [
52 "M0 = Z(1)*X(2)*X(3)*Z(4); M0"
53 ],
35 "language": "python",
54 "language": "python",
36 "outputs": [
55 "outputs": [
37 {
56 {
57 "latex": [
58 "$$Z_{1} X_{2} X_{3} Z_{4}$$"
59 ],
38 "output_type": "pyout",
60 "output_type": "pyout",
39 "latex": "$$Z_{1} X_{2} X_{3} Z_{4}$$",
40 "prompt_number": 3,
41 "png": "iVBORw0KGgoAAAANSUhEUgAAAFsAAAAYCAYAAACV+oFbAAAABHNCSVQICAgIfAhkiAAAA2NJREFU\naIHt2EmIHFUcx/FPktHQCS5oSGA0KoILIsaLmIOGOC4MMuA2CCYwGJfgwRUdRnBFFMlN9BAvBiFR\nBBcUPQREXHADMYgoKBIVnShCoqjEZZw4Hv41M9Xd1Rm76lWL0D8o6Fev6vte/+ot//+jr/9cKzGF\nGfyFL/AqdmbXvqzuin/BGsOu7PkZ/I6ncvUX46es7m98jnVd9LVufkovCrUJf+IWHNJSdykO4NEu\nmQ9mnbqvoG6L+AODXTJ7wa/DiyY9j5GC+2fjN7yExV0yV2Man7XcX4etJXi94tfhxZwOxRsF90/E\nD/gAy0qyXxajb31WPkNM+YGSvLr5dXoBjsOFLfeOEiPma6yqwB4RZjyDE/CCip2tmV+nF4VairfE\nJnNaRdYSfCPWwFdwdEVer/kpvWjTIjwtduOhRMx7xOi7KxGvV/w6vGjSw6LjY4l4A9guOrxb/IGU\nqpOf2osmbVYcSjWU/7JbcS6ezdjDpXvXW34dXsxpWATwTxbUXYPLSjAfwiXZ7/NF518s07ke8+vw\nYk5n4he8pj2Ih7exPFfegBsXYN6K63PlRSKTm8YxB3lvCPfiETyGwxLxB7Exe2cbRjtwu/ViVsux\nowNzTsdiDz7FEQX1G0QsC2vFtPoEdx+EuVHxZnW7GH33d3jvFIznyo/jzUT87eIDwhqRxq9peaYb\nL1q1RXty1aTD8TG+x/EtdYO4M+vUdS11OxSbvTRr9KMO7Q1mvMns2VZdi2/Nb3IXCPNWJuCfLj4m\nrNCcCFHeC7gIV1vA7G1Zo5N4P7t24WfzhzxT2gP5VrMbeA9/ZO8cEOcWeY2KeHiW+51IQPI6UnNC\ncRX2i1GWgj+rMbyjeZko68UK3IBTLWB2WXUa2Sm1GO/ipoTM1cKYndJlghMi/Pxfm/0A7qiJvRZf\naV8uutUoTsp+F5q9pGIDcDn2ijS2Dm0SS8ITYpoSoVhZNcQs2SPOpifFRj+N1ytwx8V+co6Ios4S\n/n6JXytwm1TnyB7RfNA/ofrB1YCIoGY3yFViDb6yIjevYYmXkZNxmzj9+hA3m48UUmi9GMEzuWt3\nIvaQOEPZLMK3CelS+/PwnNjMx+UOw6o00NAef+5TbYrntUyEYHlN4cdEfCL52J+QR3jSyJX3iiWq\nr7766quq/gHxxxJqg1cEfAAAAABJRU5ErkJggg==\n",
61 "png": "iVBORw0KGgoAAAANSUhEUgAAAFsAAAAYCAYAAACV+oFbAAAABHNCSVQICAgIfAhkiAAAA2NJREFU\naIHt2EmIHFUcx/FPktHQCS5oSGA0KoILIsaLmIOGOC4MMuA2CCYwGJfgwRUdRnBFFMlN9BAvBiFR\nBBcUPQREXHADMYgoKBIVnShCoqjEZZw4Hv41M9Xd1Rm76lWL0D8o6Fev6vte/+ot//+jr/9cKzGF\nGfyFL/AqdmbXvqzuin/BGsOu7PkZ/I6ncvUX46es7m98jnVd9LVufkovCrUJf+IWHNJSdykO4NEu\nmQ9mnbqvoG6L+AODXTJ7wa/DiyY9j5GC+2fjN7yExV0yV2Man7XcX4etJXi94tfhxZwOxRsF90/E\nD/gAy0qyXxajb31WPkNM+YGSvLr5dXoBjsOFLfeOEiPma6yqwB4RZjyDE/CCip2tmV+nF4VairfE\nJnNaRdYSfCPWwFdwdEVer/kpvWjTIjwtduOhRMx7xOi7KxGvV/w6vGjSw6LjY4l4A9guOrxb/IGU\nqpOf2osmbVYcSjWU/7JbcS6ezdjDpXvXW34dXsxpWATwTxbUXYPLSjAfwiXZ7/NF518s07ke8+vw\nYk5n4he8pj2Ih7exPFfegBsXYN6K63PlRSKTm8YxB3lvCPfiETyGwxLxB7Exe2cbRjtwu/ViVsux\nowNzTsdiDz7FEQX1G0QsC2vFtPoEdx+EuVHxZnW7GH33d3jvFIznyo/jzUT87eIDwhqRxq9peaYb\nL1q1RXty1aTD8TG+x/EtdYO4M+vUdS11OxSbvTRr9KMO7Q1mvMns2VZdi2/Nb3IXCPNWJuCfLj4m\nrNCcCFHeC7gIV1vA7G1Zo5N4P7t24WfzhzxT2gP5VrMbeA9/ZO8cEOcWeY2KeHiW+51IQPI6UnNC\ncRX2i1GWgj+rMbyjeZko68UK3IBTLWB2WXUa2Sm1GO/ipoTM1cKYndJlghMi/Pxfm/0A7qiJvRZf\naV8uutUoTsp+F5q9pGIDcDn2ijS2Dm0SS8ITYpoSoVhZNcQs2SPOpifFRj+N1ytwx8V+co6Ios4S\n/n6JXytwm1TnyB7RfNA/ofrB1YCIoGY3yFViDb6yIjevYYmXkZNxmzj9+hA3m48UUmi9GMEzuWt3\nIvaQOEPZLMK3CelS+/PwnNjMx+UOw6o00NAef+5TbYrntUyEYHlN4cdEfCL52J+QR3jSyJX3iiWq\nr7766quq/gHxxxJqg1cEfAAAAABJRU5ErkJggg==\n",
42 "text": "Z \u22c5X \u22c5X \u22c5Z \n 1 2 3 4"
62 "prompt_number": 3,
63 "text": [
64 "Z \u22c5X \u22c5X \u22c5Z ",
65 " 1 2 3 4"
66 ]
43 }
67 }
44 ],
68 ],
45 "collapsed": false,
69 "prompt_number": 3
46 "prompt_number": 3,
47 "input": "M0 = Z(1)*X(2)*X(3)*Z(4); M0\n"
48 },
70 },
49 {
71 {
50 "cell_type": "code",
72 "cell_type": "code",
73 "collapsed": false,
74 "input": [
75 "M1 = Z(2)*X(3)*X(4)*Z(0); M1"
76 ],
51 "language": "python",
77 "language": "python",
52 "outputs": [
78 "outputs": [
53 {
79 {
80 "latex": [
81 "$$Z_{2} X_{3} X_{4} Z_{0}$$"
82 ],
54 "output_type": "pyout",
83 "output_type": "pyout",
55 "latex": "$$Z_{2} X_{3} X_{4} Z_{0}$$",
56 "prompt_number": 4,
57 "png": "iVBORw0KGgoAAAANSUhEUgAAAFoAAAAYCAYAAAB6OOplAAAABHNCSVQICAgIfAhkiAAAA4lJREFU\naIHt2FuoFWUUB/Df1pPHki5UWmk3eisiohfxIa0siLCyi1AZdqEMIqmQsqioSJEoeqgHiSCjG0EY\nlRKBGSFFNzpEFygqjLIi6B5k6dHTw5o5e/bec07umW/vXvYfBuabNfOfNf9Z37fWtxjgf8Us7MQY\nduELbMar2fFzZrtoL7iWYSS7fww78EzBfg5+zWx78Dnmd+Frr/lTatGBq/APbsQ+bbbF2I2Hu+Rc\nnTl0d4ntfuH87C45+8HfCy3GsQGLSq7PxV94CVO65DwKo/is7fp8rKvA1y/+XmgBpuGNkuvH4Ue8\nj/2qEGOjiLrTsvFJYpoPVeTrNX8vtXA0zmq7drCIlK9xWFViERljeA7H4gU1HO0Dfy+16MAwtoqE\nckJNrqn4Rqx5m3BITb5+86fUogUNPCuy7hmJOO8SUXdHIr5+8fdCi3GsFU4vS8Q3hKeEs18J51Oi\nl/yptRjHcuXl0r6q/9F1OBXPZ9xnV/auv/y90ALh4C48UWK7GhdU4FyD87PzhcLxF6s412f+XmgB\nTsYf2KKzQIc3MQPTcYtYE9djySScN+HawrghdmijmDPJc6eLqXo7HjXxhqMqP/FTbpjAtrda5DgX\nK4Um10z20iPxHT7FgSX2y0StCvdqfsQR+AUXljyzVHliWimi7p4JfJmFP3F8Nl6P1xPyw0H4BHeW\n2LrRgqjZtxbGG3Fe2UsPwEf4Ace02WbjNtEryP/UxyKic2zS2mMYFlvfD8telnHuwfbs3nY0RF08\nLRuvbuOqyw+r8IBOobvVgkjCtxbGy/Fy2UsfFxGwHe9kxwh+12zY7NQs0ueKgj7Hu3hQJIi38Xf2\nzG4hUhEXi3o35/1ebC4mwwcielPxL8aJ2bPtQnerBbFLXFoYL8K3//FNXWOemGZJd0oZzsRjWqOl\nLubgiuy8TOgq2KY1MS4U6zvqN3JgJu7DArH/T43XRKI7BQ8l4GvgcjyZgKuIbSLSc8wQeQv1hd5f\nZNhL8aXO9awOLsFbmpuOV0R1cWhN3nkiea8Sa+0CUXtfV5N3RCTwHIeL5as2pgtn86bNVOW94Kq4\nUmvtulasmSlmYRFPS7N0LBHNrBwbRADWRr77Kh4rUhBnGBb18wohxGaRvFLietGFe0/MoDpo4BHc\nLAJwjUILoE4vYKaI4iJ+E9VASkwRou9IzEtM7xyj+CkB55BmNTTAAAMMUAf/AiT2FBaVsAtVAAAA\nAElFTkSuQmCC\n",
84 "png": "iVBORw0KGgoAAAANSUhEUgAAAFoAAAAYCAYAAAB6OOplAAAABHNCSVQICAgIfAhkiAAAA4lJREFU\naIHt2FuoFWUUB/Df1pPHki5UWmk3eisiohfxIa0siLCyi1AZdqEMIqmQsqioSJEoeqgHiSCjG0EY\nlRKBGSFFNzpEFygqjLIi6B5k6dHTw5o5e/bec07umW/vXvYfBuabNfOfNf9Z37fWtxjgf8Us7MQY\nduELbMar2fFzZrtoL7iWYSS7fww78EzBfg5+zWx78Dnmd+Frr/lTatGBq/APbsQ+bbbF2I2Hu+Rc\nnTl0d4ntfuH87C45+8HfCy3GsQGLSq7PxV94CVO65DwKo/is7fp8rKvA1y/+XmgBpuGNkuvH4Ue8\nj/2qEGOjiLrTsvFJYpoPVeTrNX8vtXA0zmq7drCIlK9xWFViERljeA7H4gU1HO0Dfy+16MAwtoqE\nckJNrqn4Rqx5m3BITb5+86fUogUNPCuy7hmJOO8SUXdHIr5+8fdCi3GsFU4vS8Q3hKeEs18J51Oi\nl/yptRjHcuXl0r6q/9F1OBXPZ9xnV/auv/y90ALh4C48UWK7GhdU4FyD87PzhcLxF6s412f+XmgB\nTsYf2KKzQIc3MQPTcYtYE9djySScN+HawrghdmijmDPJc6eLqXo7HjXxhqMqP/FTbpjAtrda5DgX\nK4Um10z20iPxHT7FgSX2y0StCvdqfsQR+AUXljyzVHliWimi7p4JfJmFP3F8Nl6P1xPyw0H4BHeW\n2LrRgqjZtxbGG3Fe2UsPwEf4Ace02WbjNtEryP/UxyKic2zS2mMYFlvfD8telnHuwfbs3nY0RF08\nLRuvbuOqyw+r8IBOobvVgkjCtxbGy/Fy2UsfFxGwHe9kxwh+12zY7NQs0ueKgj7Hu3hQJIi38Xf2\nzG4hUhEXi3o35/1ebC4mwwcielPxL8aJ2bPtQnerBbFLXFoYL8K3//FNXWOemGZJd0oZzsRjWqOl\nLubgiuy8TOgq2KY1MS4U6zvqN3JgJu7DArH/T43XRKI7BQ8l4GvgcjyZgKuIbSLSc8wQeQv1hd5f\nZNhL8aXO9awOLsFbmpuOV0R1cWhN3nkiea8Sa+0CUXtfV5N3RCTwHIeL5as2pgtn86bNVOW94Kq4\nUmvtulasmSlmYRFPS7N0LBHNrBwbRADWRr77Kh4rUhBnGBb18wohxGaRvFLietGFe0/MoDpo4BHc\nLAJwjUILoE4vYKaI4iJ+E9VASkwRou9IzEtM7xyj+CkB55BmNTTAAAMMUAf/AiT2FBaVsAtVAAAA\nAElFTkSuQmCC\n",
58 "text": "Z \u22c5X \u22c5X \u22c5Z \n 2 3 4 0"
85 "prompt_number": 4,
86 "text": [
87 "Z \u22c5X \u22c5X \u22c5Z ",
88 " 2 3 4 0"
89 ]
59 }
90 }
60 ],
91 ],
61 "collapsed": false,
92 "prompt_number": 4
62 "prompt_number": 4,
63 "input": "M1 = Z(2)*X(3)*X(4)*Z(0); M1\n"
64 },
93 },
65 {
94 {
66 "cell_type": "code",
95 "cell_type": "code",
96 "collapsed": false,
97 "input": [
98 "M2 = Z(3)*X(4)*X(0)*Z(1); M2"
99 ],
67 "language": "python",
100 "language": "python",
68 "outputs": [
101 "outputs": [
69 {
102 {
103 "latex": [
104 "$$Z_{3} X_{4} X_{0} Z_{1}$$"
105 ],
70 "output_type": "pyout",
106 "output_type": "pyout",
71 "latex": "$$Z_{3} X_{4} X_{0} Z_{1}$$",
72 "prompt_number": 5,
73 "png": "iVBORw0KGgoAAAANSUhEUgAAAFoAAAAYCAYAAAB6OOplAAAABHNCSVQICAgIfAhkiAAAA3RJREFU\naIHt2VtoHHUUx/FPTTSY1rTEeiHeSlEExUv1QVQMoggiXlEqXihaVPLmFalIUagifREUtPiiglQK\noiiKKCposSgIQQTBKqKUWC14odZ6aVrjw5nNTiazJjvzn9WH/GBh5/+f/e6Z3575nzP/ZUH/qY7E\nPkxhEl/hHbyVvX7K5q6dB2sNxrPzp/AHNufmL8Mv2dzf2I7RLmJtmp/Si1m6FX/hThxcmLsaB/Bk\nl8xHsoAeKpnbKIIf6ZLZC34TXkzrZVxeMn4OfsdrOKhL5nHYjy8K46PYVIHXK34TXoBD8H7J+Ers\nwicYrALG6yLrLsyOTxe3eX9FXtP8Jr1wPC4pjA2LTPkWR1UFi8yYwhaswCtqBNoDfpNezNIAtoqC\nckpNVh92iDXvDRxek9drfkovZmgRXhRV96JEzPUi6x5MxOsVvwkvpvWYCHpNIl4/XhDBfi2CT6km\n+am9mNYdytulQ1X/RTfhAryUsS+tHF1v+U14gQhwEs+XzK3FNRWYj+Kq7P3FIvBXqwTXY34TXoAz\n8SveM7tBhw+xGEtxg2jon8HYvzDvwu2540XiCW0/jplnXJtFBqXgHyYeQMbwOM7owJ2vF3mtwlMd\neNM6Ft/hc2FkUTeKXhU2aGfMsLioK0s+c5PywnSvyLqH5wpK/KCTWJKIv1E7MZbjGwwVzunGi9b5\n6/GmeDTvqCF8hu9xQmFuBOvEXsFt2dgKnJ07Zw9uyR0PZBf0aYfvG8l4E9m5nbQSN+M3M42uyh/E\nXjMfx7dide64Wy/yGjOH0c+KDJjAx9lrHLu1N2z2KW/SR/Ellonb+yP8mX3mgNiHyOs60e+2uDvF\nw0VRfXgge98yui7/ZGFSviPZIrqKFF7MaXQVDYssfhcnpYaLjGldTDGjq+p8kdF5PYenE7DpYHTd\njZyfRTVeiw9EIUilVSKjdiVkEuvxVGFssbiWxlTH6Le1K/0O/IC7a0fU1mpR9deJYjeAe3BWTe5O\nUU/y3cLR4hr+l9qG87L3/aINur+h71ousjDF0kFsbba2PodEkpR1FlVUunT01QCO4wqciPvE0rFB\nFJqUOlX0vOeKH3QCP9ZkbhMxLxFt2hOiy6ijpeIOvx6niWK7V7b0pdgLGBR/HxXXvVQaNLPH3Z19\nXwoNiJ2+FOrDEYWxPWYX3gUtaEELmq/+AS2CEfeikOXjAAAAAElFTkSuQmCC\n",
107 "png": "iVBORw0KGgoAAAANSUhEUgAAAFoAAAAYCAYAAAB6OOplAAAABHNCSVQICAgIfAhkiAAAA3RJREFU\naIHt2VtoHHUUx/FPTTSY1rTEeiHeSlEExUv1QVQMoggiXlEqXihaVPLmFalIUagifREUtPiiglQK\noiiKKCposSgIQQTBKqKUWC14odZ6aVrjw5nNTiazJjvzn9WH/GBh5/+f/e6Z3575nzP/ZUH/qY7E\nPkxhEl/hHbyVvX7K5q6dB2sNxrPzp/AHNufmL8Mv2dzf2I7RLmJtmp/Si1m6FX/hThxcmLsaB/Bk\nl8xHsoAeKpnbKIIf6ZLZC34TXkzrZVxeMn4OfsdrOKhL5nHYjy8K46PYVIHXK34TXoBD8H7J+Ers\nwicYrALG6yLrLsyOTxe3eX9FXtP8Jr1wPC4pjA2LTPkWR1UFi8yYwhaswCtqBNoDfpNezNIAtoqC\nckpNVh92iDXvDRxek9drfkovZmgRXhRV96JEzPUi6x5MxOsVvwkvpvWYCHpNIl4/XhDBfi2CT6km\n+am9mNYdytulQ1X/RTfhAryUsS+tHF1v+U14gQhwEs+XzK3FNRWYj+Kq7P3FIvBXqwTXY34TXoAz\n8SveM7tBhw+xGEtxg2jon8HYvzDvwu2540XiCW0/jplnXJtFBqXgHyYeQMbwOM7owJ2vF3mtwlMd\neNM6Ft/hc2FkUTeKXhU2aGfMsLioK0s+c5PywnSvyLqH5wpK/KCTWJKIv1E7MZbjGwwVzunGi9b5\n6/GmeDTvqCF8hu9xQmFuBOvEXsFt2dgKnJ07Zw9uyR0PZBf0aYfvG8l4E9m5nbQSN+M3M42uyh/E\nXjMfx7dide64Wy/yGjOH0c+KDJjAx9lrHLu1N2z2KW/SR/Ellonb+yP8mX3mgNiHyOs60e+2uDvF\nw0VRfXgge98yui7/ZGFSviPZIrqKFF7MaXQVDYssfhcnpYaLjGldTDGjq+p8kdF5PYenE7DpYHTd\njZyfRTVeiw9EIUilVSKjdiVkEuvxVGFssbiWxlTH6Le1K/0O/IC7a0fU1mpR9deJYjeAe3BWTe5O\nUU/y3cLR4hr+l9qG87L3/aINur+h71ousjDF0kFsbba2PodEkpR1FlVUunT01QCO4wqciPvE0rFB\nFJqUOlX0vOeKH3QCP9ZkbhMxLxFt2hOiy6ijpeIOvx6niWK7V7b0pdgLGBR/HxXXvVQaNLPH3Z19\nXwoNiJ2+FOrDEYWxPWYX3gUtaEELmq/+AS2CEfeikOXjAAAAAElFTkSuQmCC\n",
74 "text": "Z \u22c5X \u22c5X \u22c5Z \n 3 4 0 1"
108 "prompt_number": 5,
109 "text": [
110 "Z \u22c5X \u22c5X \u22c5Z ",
111 " 3 4 0 1"
112 ]
75 }
113 }
76 ],
114 ],
77 "collapsed": false,
115 "prompt_number": 5
78 "prompt_number": 5,
79 "input": "M2 = Z(3)*X(4)*X(0)*Z(1); M2\n"
80 },
116 },
81 {
117 {
82 "cell_type": "code",
118 "cell_type": "code",
119 "collapsed": false,
120 "input": [
121 "M3 = Z(4)*X(0)*X(1)*Z(2); M3"
122 ],
83 "language": "python",
123 "language": "python",
84 "outputs": [
124 "outputs": [
85 {
125 {
126 "latex": [
127 "$$Z_{4} X_{0} X_{1} Z_{2}$$"
128 ],
86 "output_type": "pyout",
129 "output_type": "pyout",
87 "latex": "$$Z_{4} X_{0} X_{1} Z_{2}$$",
88 "prompt_number": 6,
89 "png": "iVBORw0KGgoAAAANSUhEUgAAAFoAAAAYCAYAAAB6OOplAAAABHNCSVQICAgIfAhkiAAAA2BJREFU\naIHt2F2oZlMYB/DfmDOOYTgiTMfHwZSLuZA0kguTSA3JR+PK6BTNiJqcKWEm5IxGcjEpNwdJSoSJ\niKIQTcqUmjQ1RUO+Bo0MIV/z4bh41nvOPu/Z++Tde+3XhfOvXXutZ6//evZ/P3utZz3M4z/FyTiA\nSRzEHryFN9O1P9lW/wuuUexMz0/iDzxbsF+Jn5Ltb3yClT342jZ/Ti1m4Sb8hTEs6rJdi8N4tEfO\nLcmh+0tsDwvnh3vk7Ad/G1pM4SVcVdJ/IX7HqziiR87TcQgfd/WvxEQNvn7xt6EFOBLvlfSfjX34\nEEfXIcZrIuouSe1zxW8+UJOvbf42tXAGLu/qO0FEyhc4pS6xiIxJPI8z8bIGjvaBv00tZmEQ28WG\nsrwh10J8Jda813FiQ75+8+fUYgYW4Dmx616aifM+EXX3ZOLrF38bWkzhIeH0aCa+ATwjnP1MOJ8T\nbfLn1mIKtyhPlxar/0UncDG2Je5Vtb3rL38bWiAcPIinS2w347oanA/imnR/mXD8lTrO9Zm/DS3A\nefgF75idoMP7OKarb7l40SpswLpCe4E4oR3CqXOMW4FNafxm1flqXf47zS1Ur1qM4l48nvyuzK9P\nwzfYjaES+w0iVy1iEd7FkxWca5RvTHeIqBuvGHcsPsVRqT2OBzLxr0r9X+PGivl71WI1rkj3A9iB\nrWXEx2EXvsNIl20YG0WtYG2XbT3uNlvoQXH0/ajiRYYT3970bDfG8GKhfb548Vz8RESWCV1Hiwlx\nSuxgI74sm/QpEQF7xdfYIYo1P5su2BwwM0m/SKyHa00LvRgf4M805rCoQxRxvch3O7zfisNFERN4\npNBemp4dycRPtdB1tDgLFxTaW9O4xliC29N9Uehc2Gbmuj8kXvCcjHNUCd0Ux4u/YapK2KSQsw5P\nNPVoDnwuhO2gs+n82OKcObAQj4mMZHuns67QIyLT2CDWoqtFAeeuZj7OwE5RC+5gqaiW/ZBxjjYw\nLvaON8xe3xtji/xLxzJRvOkEwyYVu3gD5F46bhNrNZFibs7IbY2Ivj3iBJUT60V03CqK67mKRCtE\nprQfb6d5mlYRx0xvlJ3rhY4xRy3gJLEuSeT7MnB2Y1BU5HJhSbqK+F6kbHUxJDKuIn7Drw045zGP\nefy/8Q8KoQ22z/3wywAAAABJRU5ErkJggg==\n",
130 "png": "iVBORw0KGgoAAAANSUhEUgAAAFoAAAAYCAYAAAB6OOplAAAABHNCSVQICAgIfAhkiAAAA2BJREFU\naIHt2F2oZlMYB/DfmDOOYTgiTMfHwZSLuZA0kguTSA3JR+PK6BTNiJqcKWEm5IxGcjEpNwdJSoSJ\niKIQTcqUmjQ1RUO+Bo0MIV/z4bh41nvOPu/Z++Tde+3XhfOvXXutZ6//evZ/P3utZz3M4z/FyTiA\nSRzEHryFN9O1P9lW/wuuUexMz0/iDzxbsF+Jn5Ltb3yClT342jZ/Ti1m4Sb8hTEs6rJdi8N4tEfO\nLcmh+0tsDwvnh3vk7Ad/G1pM4SVcVdJ/IX7HqziiR87TcQgfd/WvxEQNvn7xt6EFOBLvlfSfjX34\nEEfXIcZrIuouSe1zxW8+UJOvbf42tXAGLu/qO0FEyhc4pS6xiIxJPI8z8bIGjvaBv00tZmEQ28WG\nsrwh10J8Jda813FiQ75+8+fUYgYW4Dmx616aifM+EXX3ZOLrF38bWkzhIeH0aCa+ATwjnP1MOJ8T\nbfLn1mIKtyhPlxar/0UncDG2Je5Vtb3rL38bWiAcPIinS2w347oanA/imnR/mXD8lTrO9Zm/DS3A\nefgF75idoMP7OKarb7l40SpswLpCe4E4oR3CqXOMW4FNafxm1flqXf47zS1Ur1qM4l48nvyuzK9P\nwzfYjaES+w0iVy1iEd7FkxWca5RvTHeIqBuvGHcsPsVRqT2OBzLxr0r9X+PGivl71WI1rkj3A9iB\nrWXEx2EXvsNIl20YG0WtYG2XbT3uNlvoQXH0/ajiRYYT3970bDfG8GKhfb548Vz8RESWCV1Hiwlx\nSuxgI74sm/QpEQF7xdfYIYo1P5su2BwwM0m/SKyHa00LvRgf4M805rCoQxRxvch3O7zfisNFERN4\npNBemp4dycRPtdB1tDgLFxTaW9O4xliC29N9Uehc2Gbmuj8kXvCcjHNUCd0Ux4u/YapK2KSQsw5P\nNPVoDnwuhO2gs+n82OKcObAQj4mMZHuns67QIyLT2CDWoqtFAeeuZj7OwE5RC+5gqaiW/ZBxjjYw\nLvaON8xe3xtji/xLxzJRvOkEwyYVu3gD5F46bhNrNZFibs7IbY2Ivj3iBJUT60V03CqK67mKRCtE\nprQfb6d5mlYRx0xvlJ3rhY4xRy3gJLEuSeT7MnB2Y1BU5HJhSbqK+F6kbHUxJDKuIn7Drw045zGP\nefy/8Q8KoQ22z/3wywAAAABJRU5ErkJggg==\n",
90 "text": "Z \u22c5X \u22c5X \u22c5Z \n 4 0 1 2"
131 "prompt_number": 6,
132 "text": [
133 "Z \u22c5X \u22c5X \u22c5Z ",
134 " 4 0 1 2"
135 ]
91 }
136 }
92 ],
137 ],
93 "collapsed": false,
138 "prompt_number": 6
94 "prompt_number": 6,
95 "input": "M3 = Z(4)*X(0)*X(1)*Z(2); M3\n"
96 },
139 },
97 {
140 {
98 "source": "These operators should mutually commute.",
141 "cell_type": "markdown",
99 "cell_type": "markdown"
142 "source": [
143 "These operators should mutually commute."
144 ]
100 },
145 },
101 {
146 {
102 "cell_type": "code",
147 "cell_type": "code",
148 "collapsed": false,
149 "input": [
150 "gate_simp(Commutator(M0,M1).doit())"
151 ],
103 "language": "python",
152 "language": "python",
104 "outputs": [
153 "outputs": [
105 {
154 {
155 "latex": [
156 "$$0$$"
157 ],
106 "output_type": "pyout",
158 "output_type": "pyout",
107 "latex": "$$0$$",
108 "prompt_number": 7,
109 "png": "iVBORw0KGgoAAAANSUhEUgAAAAwAAAASCAYAAABvqT8MAAAABHNCSVQICAgIfAhkiAAAAN1JREFU\nKJHN0i1LRFEQxvGf7i6LrGE3adCoUbAZBT+GzWATi9Vm22D3Q9gtZqNo8WXNgi9BUHBdUMO9F8bD\nlG1OOcwz8z9zeM4wZcwU+RKGeMQbOjjGawa3MMJu0I5whtkM2MYYvaCt4Ac7GXCJ80R/wGmTNKPa\nWMN9AoywWQILKgPeE+ADA3QjsBiKGQD9CIzr8zsBOrHWALf4SpqpXJvgJQIT3NRvLWMeTyp7/3zI\nFZaL5hbWcZ2NPlCtwFzQNuqbtzJggDvsBe0EF7GpXL5VHOKzznvYx3M24Z/EL9XoKBNI+V0xAAAA\nAElFTkSuQmCC\n",
159 "png": "iVBORw0KGgoAAAANSUhEUgAAAAwAAAASCAYAAABvqT8MAAAABHNCSVQICAgIfAhkiAAAAN1JREFU\nKJHN0i1LRFEQxvGf7i6LrGE3adCoUbAZBT+GzWATi9Vm22D3Q9gtZqNo8WXNgi9BUHBdUMO9F8bD\nlG1OOcwz8z9zeM4wZcwU+RKGeMQbOjjGawa3MMJu0I5whtkM2MYYvaCt4Ac7GXCJ80R/wGmTNKPa\nWMN9AoywWQILKgPeE+ADA3QjsBiKGQD9CIzr8zsBOrHWALf4SpqpXJvgJQIT3NRvLWMeTyp7/3zI\nFZaL5hbWcZ2NPlCtwFzQNuqbtzJggDvsBe0EF7GpXL5VHOKzznvYx3M24Z/EL9XoKBNI+V0xAAAA\nAElFTkSuQmCC\n",
110 "text": "0"
160 "prompt_number": 7,
161 "text": [
162 "0"
163 ]
111 }
164 }
112 ],
165 ],
113 "collapsed": false,
166 "prompt_number": 7
114 "prompt_number": 7,
115 "input": "gate_simp(Commutator(M0,M1).doit())\n"
116 },
167 },
117 {
168 {
118 "source": "And square to the identity.",
169 "cell_type": "markdown",
119 "cell_type": "markdown"
170 "source": [
171 "And square to the identity."
172 ]
120 },
173 },
121 {
174 {
122 "cell_type": "code",
175 "cell_type": "code",
176 "collapsed": false,
177 "input": [
178 "for o in [M0,M1,M2,M3]:",
179 " display(gate_simp(o*o))"
180 ],
123 "language": "python",
181 "language": "python",
124 "outputs": [
182 "outputs": [
125 {
183 {
184 "latex": [
185 "$$1$$"
186 ],
126 "output_type": "display_data",
187 "output_type": "display_data",
127 "latex": "$$1$$",
128 "png": "iVBORw0KGgoAAAANSUhEUgAAAAsAAAASCAYAAACNdSR1AAAABHNCSVQICAgIfAhkiAAAAGBJREFU\nKJHt0bENQGAQhuEnWp1CZQFbqExhOI1BtEbABgoj/AoKkcgfCZ23uUvuvcuXHC9QYI5JKWqMCNdh\ncupLdKiwPInRxi5H+eXX5eyo+d1ijh6T/XsBKwY0TxJ8zAZBcgy8TZqNTgAAAABJRU5ErkJggg==\n",
188 "png": "iVBORw0KGgoAAAANSUhEUgAAAAsAAAASCAYAAACNdSR1AAAABHNCSVQICAgIfAhkiAAAAGBJREFU\nKJHt0bENQGAQhuEnWp1CZQFbqExhOI1BtEbABgoj/AoKkcgfCZ23uUvuvcuXHC9QYI5JKWqMCNdh\ncupLdKiwPInRxi5H+eXX5eyo+d1ijh6T/XsBKwY0TxJ8zAZBcgy8TZqNTgAAAABJRU5ErkJggg==\n",
129 "text": "1"
189 "text": [
190 "1"
191 ]
130 },
192 },
131 {
193 {
194 "latex": [
195 "$$1$$"
196 ],
132 "output_type": "display_data",
197 "output_type": "display_data",
133 "latex": "$$1$$",
134 "png": "iVBORw0KGgoAAAANSUhEUgAAAAsAAAASCAYAAACNdSR1AAAABHNCSVQICAgIfAhkiAAAAGBJREFU\nKJHt0bENQGAQhuEnWp1CZQFbqExhOI1BtEbABgoj/AoKkcgfCZ23uUvuvcuXHC9QYI5JKWqMCNdh\ncupLdKiwPInRxi5H+eXX5eyo+d1ijh6T/XsBKwY0TxJ8zAZBcgy8TZqNTgAAAABJRU5ErkJggg==\n",
198 "png": "iVBORw0KGgoAAAANSUhEUgAAAAsAAAASCAYAAACNdSR1AAAABHNCSVQICAgIfAhkiAAAAGBJREFU\nKJHt0bENQGAQhuEnWp1CZQFbqExhOI1BtEbABgoj/AoKkcgfCZ23uUvuvcuXHC9QYI5JKWqMCNdh\ncupLdKiwPInRxi5H+eXX5eyo+d1ijh6T/XsBKwY0TxJ8zAZBcgy8TZqNTgAAAABJRU5ErkJggg==\n",
135 "text": "1"
199 "text": [
200 "1"
201 ]
136 },
202 },
137 {
203 {
204 "latex": [
205 "$$1$$"
206 ],
138 "output_type": "display_data",
207 "output_type": "display_data",
139 "latex": "$$1$$",
140 "png": "iVBORw0KGgoAAAANSUhEUgAAAAsAAAASCAYAAACNdSR1AAAABHNCSVQICAgIfAhkiAAAAGBJREFU\nKJHt0bENQGAQhuEnWp1CZQFbqExhOI1BtEbABgoj/AoKkcgfCZ23uUvuvcuXHC9QYI5JKWqMCNdh\ncupLdKiwPInRxi5H+eXX5eyo+d1ijh6T/XsBKwY0TxJ8zAZBcgy8TZqNTgAAAABJRU5ErkJggg==\n",
208 "png": "iVBORw0KGgoAAAANSUhEUgAAAAsAAAASCAYAAACNdSR1AAAABHNCSVQICAgIfAhkiAAAAGBJREFU\nKJHt0bENQGAQhuEnWp1CZQFbqExhOI1BtEbABgoj/AoKkcgfCZ23uUvuvcuXHC9QYI5JKWqMCNdh\ncupLdKiwPInRxi5H+eXX5eyo+d1ijh6T/XsBKwY0TxJ8zAZBcgy8TZqNTgAAAABJRU5ErkJggg==\n",
141 "text": "1"
209 "text": [
210 "1"
211 ]
142 },
212 },
143 {
213 {
214 "latex": [
215 "$$1$$"
216 ],
144 "output_type": "display_data",
217 "output_type": "display_data",
145 "latex": "$$1$$",
146 "png": "iVBORw0KGgoAAAANSUhEUgAAAAsAAAASCAYAAACNdSR1AAAABHNCSVQICAgIfAhkiAAAAGBJREFU\nKJHt0bENQGAQhuEnWp1CZQFbqExhOI1BtEbABgoj/AoKkcgfCZ23uUvuvcuXHC9QYI5JKWqMCNdh\ncupLdKiwPInRxi5H+eXX5eyo+d1ijh6T/XsBKwY0TxJ8zAZBcgy8TZqNTgAAAABJRU5ErkJggg==\n",
218 "png": "iVBORw0KGgoAAAANSUhEUgAAAAsAAAASCAYAAACNdSR1AAAABHNCSVQICAgIfAhkiAAAAGBJREFU\nKJHt0bENQGAQhuEnWp1CZQFbqExhOI1BtEbABgoj/AoKkcgfCZ23uUvuvcuXHC9QYI5JKWqMCNdh\ncupLdKiwPInRxi5H+eXX5eyo+d1ijh6T/XsBKwY0TxJ8zAZBcgy8TZqNTgAAAABJRU5ErkJggg==\n",
147 "text": "1"
219 "text": [
220 "1"
221 ]
148 }
222 }
149 ],
223 ],
150 "collapsed": false,
224 "prompt_number": 8
151 "prompt_number": 8,
152 "input": "for o in [M0,M1,M2,M3]:\n display(gate_simp(o*o))\n"
153 },
225 },
154 {
226 {
155 "source": "<h2>Codewords</h2>",
227 "cell_type": "markdown",
156 "cell_type": "markdown"
228 "source": [
229 "<h2>Codewords</h2>"
230 ]
157 },
231 },
158 {
232 {
159 "cell_type": "code",
233 "cell_type": "code",
234 "collapsed": false,
235 "input": [
236 "zero = Rational(1,4)*(1+M0)*(1+M1)*(1+M2)*(1+M3)*IntQubit(0, 5); zero"
237 ],
160 "language": "python",
238 "language": "python",
161 "outputs": [
239 "outputs": [
162 {
240 {
241 "latex": [
242 "$$\\frac{1}{4} \\left(1 + Z_{1} X_{2} X_{3} Z_{4}\\right) \\left(1 + Z_{2} X_{3} X_{4} Z_{0}\\right) \\left(1 + Z_{3} X_{4} X_{0} Z_{1}\\right) \\left(1 + Z_{4} X_{0} X_{1} Z_{2}\\right) {\\left|0\\right\\rangle }$$"
243 ],
163 "output_type": "pyout",
244 "output_type": "pyout",
164 "latex": "$$\\frac{1}{4} \\left(1 + Z_{1} X_{2} X_{3} Z_{4}\\right) \\left(1 + Z_{2} X_{3} X_{4} Z_{0}\\right) \\left(1 + Z_{3} X_{4} X_{0} Z_{1}\\right) \\left(1 + Z_{4} X_{0} X_{1} Z_{2}\\right) {\\left|0\\right\\rangle }$$",
165 "prompt_number": 9,
166 "png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAAiCAYAAABfudNlAAAABHNCSVQICAgIfAhkiAAACrlJREFU\neJztnXvMXEUZxn8fvdGW0gvFpo1WxFpaC6UQRNSKFbDSiIpGBSulH1qVWItEpBqi8VIRRUWNoiUB\nY7yLYooUpWgURRsFb39ooYKgTRGNiNVSL6DWP949+WbnXPZcZvb2Pb9k06+z57w7O8+zs+/OmZkD\nQgghhBAixWxgYq8rIYQQQggRkynAqcB9wFG9rYoQQgghRH0OKXHMOcAM4EmR6yKEEEII0TccRCM+\nQgghhBhgyoz4CCGEEEIMBUp8hBBCCDGMnJ1V2E+rtCYDVwCXdPl1XwaMdjjmH9hcp4Ml4o0A1wNT\nvfJPALe0/t4KPN557s/ABT2OnRC6PerSKz+APOEjT4Rtg9iayRPdQZ4YI7YfJgNnAN/0yo8F1gL/\nA3YDNwMPO8//HXgu8L0arwmEm+PzrIyyQ4EbgUcCxK/KdzFBNgMrgSOxhHAisAV736MVY04DVgGP\ntR4nYMZLOBI4ANyEiTKzT2JD8/ZYWfH1+s0PIE/4yBPhPRFbM3kiPvLEGCHaosgThwFv8cpWAXuB\nxa3/rwHuB47wjtvS4XVzGcEq3nRl11nAhc7/l2IZ3E7gAZoZeEKNc2YCfwCWZTy3HnvP72lQpxta\nMVZ75a8D3t4gbqzYIdrjAuC8kq8X0w8gT4SILU/E9URMP8SKL0/IEy6h2qLIE1mJz+3AR7yyncA2\nr2wjMK/E67exHvg08FPgy8DFVQO0WAFc55UdCkxq/f016ht4GXBljfPOAd6RUX468CjwuZr1SViN\niX6DU/YS4H0N48aKHao9dgCndTgmph9AnggVW56I64mYfogVX56QJ1xCtkWeJ/zEZyX2Hp7vHfdO\n4L/YhssJs4E3V6hDUG6leMSoiYFXAB+tcd77aW8gsA/CPuya4OSa9UkYAe7FhhXnYxtBXkP78GI/\nxQ7VHouBeyj+JRXTDyBPyBNp+tETMf0QK748IU+4hGyLPE/4ic8VWOIzxztuTav8pV75u+nBYq4z\nMIMW0YvEx2c+8HvgLtJC1uWtmBCfB75E2AnlMWNDs/b4MDkz6onvB5An5Ik0/eqJ2JrJE/nIE+Hj\nN22LLE/4ic9nsPpP8o57dqt8s1d+CvDCGnVpxDXAqzsc0+vE5zDgZ8CfCLtL9eOw4b5/AYcHjBs7\ndtP2OBcbtswith9AnpAn0vSrJ2JqFju+PCFPuIRoiyxP+InPLcC/M849EUt8si7bXZ78kQz9HIzw\ncFkD/DDvXfYBE4CvAEuwrPD+gLH/gy0LTO55FpJYsUO0x27gedj1eJ9+9wPIEz7yRDxPxPRDzPjy\nhDzhEqotijyRMBW7VOeT5B5TvPJpWJLXNeZgk406XT/s5YjPVqyO/vDaAppdV50KfBVYhwlyc4NY\n3Ywdoj2mYXsrLPbKu+EHkCfkiTT96ImYmsWOL0/IEy6h2iLLE/6Iz1aydU8mPb/NKx8FnlKhDo1Z\nCvy1xHFlDHwKcG3G4+vAr3Keu6hDzORa55synvsi6WuIZZmIzWY/rvX/X2OmeGLNeN2KHbI99mCZ\nu0tIP4A80Y3Y8kQcT8TULHZ8eUKecAndFr4n/MTnDdiIjz9hOVmxtt4rD7UirjTPBB4scVwZA88A\nTsp4rMUaN+u5owrivQLLLD+W8dyTsYlfWcym82SwT9I+hHgRJsjl2YdzKraHwkZscljI2GD7GKzD\nzPMisjPwuu1xJulfbGB7KqzzykL6AXrviZi6ldGsbmyfPA2rtMcxwAas7aflvM6we6IfNGsSv4yG\ndfqJoj5z2D3h0ivNmsSHYv1i9Jm+J/zEJ5nE7J+/sVW+yik7kfQqr+gswRqlkyDdvtS1Ervmt43s\nZW5XY/sTuCTXQ++j+EPxXmxfBJdZ2K6YD5LOftdjwoxgw4R7gacGig0wHfg5tpvmZOD72Mx5lzrt\nAdbR/5F2oyU8gG0+5tINP0B3PBFTtzKa1Y3tk6dhlfYYBT6FdY5nYbu/Zp0zzJ7oB82axB+ls4ZV\nPyNl+sxh9oRLrzRrEr+TfrH6TN8TfuIzE0tw/JVa24C7vbq8ix7cnmsWVsEVHY7rZuKzGHgIuIP0\nB2sE+BA2Y9yf7X4+8ALyb98xBfg4cFnO617XOvflXvkPaN9F80fAVYFig2lwLTaTH+wDsMt5vm57\n0KrP7aQ/zDNa9Tk5oy6x/QDd8URM3Tpp1iS2T5aGVdpjIvA72nduvYf0bQaG3RO91qxJ/DIa1vmM\ndOozh90TLr3QrEl8KNYvVp+Z5YmsnZtvBL7lHbOP9vuLHQ5c6p1XOQs6E8v8flPhnH3Ymv5jgF96\nz83BhuiegGV3U4BvAHcC24FfVKxfGWZg250fge1fkOzoOBf7lbEMu1HbDuwGZy6fzYn5dMwgq4FF\nWN0XYNt4J2wCntH6+6rW62zHdsT2l+79kzGzNI0NpsEG5/jljE1oa9Iea7FZ/P7W57TOfRS7huzS\nb36A+m0QU7cizUJ4IiFLw6rtcTSwkPYv+V3Ac7COLWHYPdFLzZrGX0ixhnU/I3l9ZsKweyKhF5qF\n8FyefjH6zIQ8T/ich32+voDdgHUjthu1e2ntla36tVEl8ZmHbRp0LtUSH7CsbElG+WOYULtIN8jf\nKr5GFfJuu/Ed5++7K8R7GHuPSfZ5kPSvkLtIb6r0UOtf9/rqfCzTTe6Z0jS2y8nYh2I37dl/nfZY\nhC2J/G3OuUuw7P5AxnP95geo1wbd0C1Ls1CxizSs0h4LMJ3dbSz2Y5d8XMaDJ6A3mjWNX0bD0P0m\njA9P9EqzkN8dWYTuMxOyPPEI6SRsP3YZbi6WaI3SntSBJUZ7c+pZirxhujKchm04FIvjSd+sLCZ5\nw7ZNOQRbZfCqCLHBMuul2AfBX0VRhQm0Dx/eRtoXVwOvzTk/th+gu56IqVsozXzKaFiW47Bf6C7X\nAx/wysaLJwZBM5+yGtYlr88cdk8MsmYuob/zivrMIk90lbXY7OzbqC/ardgqhxhMxob8ukWsxGcL\ntk17aJYDlzj/fyM2/Fi0QVQRm7B9Eja0HruBDzK2WuB4bIlo0YhiTD9Adz0RQ7fQmvl00rAKE7Ff\n2u6Ewh20LwceD54YJM18ymjYhKw+czx4YpA1cwn9nZfXZ5bxRFdYhC1Xg2aJz7GY6DG23+42MRKf\nC7GOMyE1IasBl2HbiCdsxoYOO62YyGM6NryYPPYAL8Yml00AfoJNiCtiWPwQS7fQmvkUaViHOxib\nZDkJ+Atjy3bHiycGTTOfIg2b4veZ48UTg6yZS8jvvLw+s6wnohN6mO508pd3DgojmAlC3rvpYqzD\n3NZ6bCd93bUJC7Hh3KXACdjkv9cHiDsFm0C3D/tVMw97L68pef6g+yGmbrE088nSsA5nY5M352K/\n5q50nhsvnhg0zXyKNGxCVp85XjyRMGiauYT8zivqM6t4ohGdtpHehGWsyWSnS7HZ8zdhk4/qcBLp\nVQqDwnps0uJy4F7gx4S5s+/5pH8Vfpv8icN1mIpt+jQLq/eeADHn0j5cmdT3zgoxBtkPsXWLoZlP\nloZV9HM5GtssbCftkwyfVjHmIHti0DTzydOwLnl95njyBAyWZi6hv/OK+syqnohG7GE6IYQQQoiu\nkbfDY8IBbLRnPza5OVmtMD1yvYQQQgghglP2jqkxh+mEEEIIIYQQQgghhBBCCCGEEEIIIYQQQggh\nhBCC/wPS77xfXVkDTQAAAABJRU5ErkJggg==\n",
245 "png": "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\nhBCC/wPS77xfXVkDTQAAAABJRU5ErkJggg==\n",
167 "text": "\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u27580\u27e9\n\u239d 1 2 3 4\u23a0 \u239d 2 3 4 0\u23a0 \u239d 3 4 0 1\u23a0 \u239d 4 0 1 2\u23a0 \n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 4"
246 "prompt_number": 9,
247 "text": [
248 "\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u27580\u27e9",
249 "\u239d 1 2 3 4\u23a0 \u239d 2 3 4 0\u23a0 \u239d 3 4 0 1\u23a0 \u239d 4 0 1 2\u23a0 ",
250 "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",
251 " 4"
252 ]
168 }
253 }
169 ],
254 ],
170 "collapsed": false,
255 "prompt_number": 9
171 "prompt_number": 9,
172 "input": "zero = Rational(1,4)*(1+M0)*(1+M1)*(1+M2)*(1+M3)*IntQubit(0, 5); zero\n"
173 },
256 },
174 {
257 {
175 "cell_type": "code",
258 "cell_type": "code",
259 "collapsed": false,
260 "input": [
261 "qapply(4*zero)"
262 ],
176 "language": "python",
263 "language": "python",
177 "outputs": [
264 "outputs": [
178 {
265 {
266 "latex": [
267 "$${\\left|0\\right\\rangle } + {\\left|3\\right\\rangle } - {\\left|5\\right\\rangle } + {\\left|6\\right\\rangle } - {\\left|9\\right\\rangle } - {\\left|10\\right\\rangle } + {\\left|12\\right\\rangle } - {\\left|15\\right\\rangle } + {\\left|17\\right\\rangle } - {\\left|18\\right\\rangle } - {\\left|20\\right\\rangle } - {\\left|23\\right\\rangle } + {\\left|24\\right\\rangle } - {\\left|27\\right\\rangle } - {\\left|29\\right\\rangle } - {\\left|30\\right\\rangle }$$"
268 ],
179 "output_type": "pyout",
269 "output_type": "pyout",
180 "latex": "$${\\left|0\\right\\rangle } + {\\left|3\\right\\rangle } - {\\left|5\\right\\rangle } + {\\left|6\\right\\rangle } - {\\left|9\\right\\rangle } - {\\left|10\\right\\rangle } + {\\left|12\\right\\rangle } - {\\left|15\\right\\rangle } + {\\left|17\\right\\rangle } - {\\left|18\\right\\rangle } - {\\left|20\\right\\rangle } - {\\left|23\\right\\rangle } + {\\left|24\\right\\rangle } - {\\left|27\\right\\rangle } - {\\left|29\\right\\rangle } - {\\left|30\\right\\rangle }$$",
181 "prompt_number": 10,
182 "png": "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\n",
270 "png": "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\n",
183 "text": "\u27580\u27e9 + \u27583\u27e9 - \u27585\u27e9 + \u27586\u27e9 - \u27589\u27e9 - \u275810\u27e9 + \u275812\u27e9 - \u275815\u27e9 + \u275817\u27e9 - \u275818\u27e9 - \u275820\u27e9 - \u275823\u27e9 +\n \u275824\u27e9 - \u275827\u27e9 - \u275829\u27e9 - \u275830\u27e9"
271 "prompt_number": 10,
272 "text": [
273 "\u27580\u27e9 + \u27583\u27e9 - \u27585\u27e9 + \u27586\u27e9 - \u27589\u27e9 - \u275810\u27e9 + \u275812\u27e9 - \u275815\u27e9 + \u275817\u27e9 - \u275818\u27e9 - \u275820\u27e9 - \u275823\u27e9 +",
274 " \u275824\u27e9 - \u275827\u27e9 - \u275829\u27e9 - \u275830\u27e9"
275 ]
184 }
276 }
185 ],
277 ],
186 "collapsed": false,
278 "prompt_number": 10
187 "prompt_number": 10,
188 "input": "qapply(4*zero)\n"
189 },
279 },
190 {
280 {
191 "cell_type": "code",
281 "cell_type": "code",
282 "collapsed": false,
283 "input": [
284 "one = Rational(1,4)*(1+M0)*(1+M1)*(1+M2)*(1+M3)*IntQubit(2**5-1, 5); one"
285 ],
192 "language": "python",
286 "language": "python",
193 "outputs": [
287 "outputs": [
194 {
288 {
289 "latex": [
290 "$$\\frac{1}{4} \\left(1 + Z_{1} X_{2} X_{3} Z_{4}\\right) \\left(1 + Z_{2} X_{3} X_{4} Z_{0}\\right) \\left(1 + Z_{3} X_{4} X_{0} Z_{1}\\right) \\left(1 + Z_{4} X_{0} X_{1} Z_{2}\\right) {\\left|31\\right\\rangle }$$"
291 ],
195 "output_type": "pyout",
292 "output_type": "pyout",
196 "latex": "$$\\frac{1}{4} \\left(1 + Z_{1} X_{2} X_{3} Z_{4}\\right) \\left(1 + Z_{2} X_{3} X_{4} Z_{0}\\right) \\left(1 + Z_{3} X_{4} X_{0} Z_{1}\\right) \\left(1 + Z_{4} X_{0} X_{1} Z_{2}\\right) {\\left|31\\right\\rangle }$$",
197 "prompt_number": 11,
198 "png": "iVBORw0KGgoAAAANSUhEUgAAAkgAAAAiCAYAAACk7ia6AAAABHNCSVQICAgIfAhkiAAACuxJREFU\neJztnWusXFUZhp/Tnp7SlkILhdqKFUqF1kopCohYUQEbjKhgVGq1tGBVIhYbEVS8i3hBQY2ikIAx\nSLygGJQitBpFVFJBFBMpAopK5GJELUIFKXr88c3O2bNm3/das+fyPsmkp3tmf7Nmve+s+fa6bRBC\nCCGEEJWZDYw2XQghhBBCiF5gKnAUcA+wb7NFEUIIIYQIz6QCrzkJmAnsF7gsQgghhBB9xzjqQRJC\nCCHEEFCkB0kIIYQQYqhQgiSEEEKIYeaEpIO9tCptDPg4cGaX3/fVwLqc1/wbm4s1XiDeCHAlMM05\n/gXg+tbfFwP7xJ77G3BKw7EjfNdHVZryA8gTLvKE3zoIrZk80R3kiQlC+2EMOBb4vnP8MOBEYG/g\nfuBy4Pc5cZL88i/gxcCPK5QN8DcH6fkJx3YBvgs86iF+WX6ECXc2sALYC0scR4Fzsc+9rmTM6cCL\ngJ2txyGYQSP2AnYA12Ci7N4jsaF+fawo+X695geQJ1zkCf+eCK2ZPBEeeWICH3WR5YldgXc6x94K\nXADsia22fw/wJLAqJUaeX87NKV8qI9gHrLuS7XjgtNj/l2AZ4U3AfdQz+uQK5+yOZZ1LE55bi33m\nj9Qo01WtGCud428G3lcjbqjYPurjFOANBd8vpB9AnvARW54I64mQfggVX56QJ+L4qossT7gJ0ijw\nIPDe2LExzAv3O+cW9cvpwNwC5WxjLfBl4JfAN4CNZQO0WA5c5hzbBZjS+vvbVDf6UuD8CuedBLw/\n4fgxwBPAVyuWJ2IlZo6rYsdOBD5WM26o2L7qYzNwdM5rQvoB5AlfseWJsJ4I6YdQ8eUJeSKOz7pI\n84SbIM0CHgd+47zuLqwna0rsWFG/zAbeUaKsXtlCdg9UHaMvBz5b4bxPYJUSZymwHRuLHKtYnogR\nbDx0JzAP23DzEtq7NXsptq/6OAC4m+wrs5B+AHlCnuikFz0R0g+h4ssT8kQcn3WR5omkIbb9sOG1\niGlYQrYlI36eXz5MA4vXjsUKlkUTCZLLPODPwB10Cl6Vd2HZ+hXA1/E7MT5kbKhXHxeQsjKA8H4A\neUKe6KRXPRFaM3kiHXnCf/y6dZHkiaQEyeUs4O/A/hmvyfPLEcDL8wrom0uAU3Ne03SCtCtwK/BX\n/O4avjeW1T4O7OYxbujYdetjFdZdmkRoP4A8IU900queCKlZ6PjyhDwRx0ddJHkiLUGa3Tp+Reuc\np+bELuKX86I/oq6k8QCPOC8FfpZTqCaZDHwTWIxlj3/0GPtJbLlkdE87n4SK7aM+7gRego3/uvS6\nH0CecJEnwnkipB9Cxpcn5Ik4vuoiyxMu/8S2JzgHGzb8CtaDVZXpWNLYNfYA/kv++GaTPUgXY2V0\nu/XmU2/cdxrwLWANljReWyNWN2P7qI/pwP+wMeU43fADyBPyRCe96ImQmoWOL0/IE3F81UWSJ4oM\nsU3ChvZux+4fm0SeX9YBzyhUSk8swbK8PIoY/Qjg0oTHd4Dfpjx3Rk7MaCz27QnPfY322fBlGMVm\n7x/U+v/tmHmeXjFet2L7rI97sSuBOD79APJEN2LLE2E8EVKz0PHlCXkiju+6cD1RJEEC2yhyHHhN\nyvN5fvG1UrAwRwIPFHhdEaPPBA5NeKzGREh6bt+MeK/FMtXPJTy3PzaumcRs8ie1fZH2rsszMOHO\nS345R2F7UJxOfhdh2dhg+zuswUz2CpIz+qr1cRydV4Bg+06scY759AM074mQuhXRrGpslzQNy9TH\ngcB6rO6np7zPoHuiFzSrE7+IhlXaiaw2c9A9EacpzerEh2z9QrSZrifcBGk18DDt+2OB9WKNAx9I\niZvll2cDr0p5LhiLscrLE67bQ2wrsLHGq0le1ncRtr9DnGi89h6yvzwfxfaViDML26X0ATqz6bWY\nMCNY9+RfgGd6ig0wA/gVtrvpGPATbKVAnCr1AfaD8CC2Q6vLfdgmb3G64QfojidC6lZEs6qxXdI0\nLFMf64AvYY3o8dhuvEnnDLInekGzOvHXka9h2e9IkTZzkD0RpynN6sTP0y9Um+l6wk2QzscSIXcP\nq5tbx49MiAnZfvkQDdx+bRZW4OU5r+tmgnQA8BBWme4XcAT4NPAfOmf3nwy8jPTbrkwFPo9NGEvi\nMpK7/26kfVfTnwMXeooNpsGl2MoFsC/KttjzVeuDVnl+SueXfmarPIcnlCW0H6A7ngipW55mdWK7\nJGlYpj5GgT/RvpPu3XTeHmLQPdG0ZnXiF9Gwynckr80cdE/EaUKzOvEhW79QbWaSJ9wE6TnAVton\ncu/Ter8bSU8S0/yyG7ZNQBtls6XjsEzyrhLnbMcmTh0I3OY8twfWNfg0LFucCnwPuAXYBPy6ZPmK\nMBPbdnxPbP+HaOfMOdhVy1KsojdjN7CLc3lKzOdiRloJLMLKPp/2Lc83AM9r/X1h6302YTuUu0sa\nH2PCVHVjg2mwPvb6ZUxMzKtTH6uxVQvulvW0zn0CG+OO02t+gOp1EFK3LM18eCIiScOy9bEQWEB7\nMrANeCHWAEYMuiea1Kxu/AVka1j1O5LWZkYMuicimtDMh+fS9AvRZkakeSLOrcAHsbt73IbNo9qI\n7Q5+Ktb7GFHEL69rfY42yiRIc7EldKsolyABXId9aJedmKDb6Ky4h0u+RxnSbpfyw9jfvysR7x/Y\nZ7yu9f9xOrPUO7Ab+cV5qPVvfPx3HpY5R/fEqRs7zuHYl+dO2q8mqtTHImyp6B9Szl2MZfI7Ep7r\nNT9AtTrohm5JmvmKnaVhmfqYj+kc397jEWyoKc4weAKa0axu/CIa+m43YTg80ZRmPn87kvDdZkYk\neeJROpO1zdiu2QuBp2A9Vo8llKeIX67Fhvsqk9Y9WISjgevrvHkOBwOfCRjfJa27uC6TsFUVrw8Q\nGyxTX4J9YdxVI2WYTHt35A10+uIi4E0p54f2A3TXEyF186WZSxENi3IQdsUf50rgk86xYfFEP2jm\nUlTDqqS1mYPuiX7WLI7v37ysNjPLEz3Jamw2+g1UF3cLtqojBGNYV2O3CJUgnYttr++bZcCZsf+/\nDev2LLIRVxIbgHdj3ZbrsSvlTzGxOuJgbOlsVg9lSD9Adz0RQjffmrnkaViGUexKLD7uv5n2ZdLD\n4Il+0syliIZ1SGozh8ET/axZHN+/eWltZhFP9BSLsGV8UC9BehZmjhDbpnebEAnSaVgDG9ExYawG\n52BjthFnY12WeStE0piBjTVHj3uBV2IT6SYDv8Am9mUxKH4IpZtvzVyyNKzCzUxMFp2C3RMpWs48\nLJ7oN81csjSsi9tmDosn+lmzOD5/89LazKKe6Bl8dw8eQ/qy135hBDOLz3tzbcQa1qtbj010jgvX\nYQHWjbwEOASblPYWD3GnYhMBt2NXSXOxz/LGguf3ux9C6hZKM5ckDatwAjYJdQ52dRhffjssnug3\nzVyyNKxDUps5LJ6I6DfN4vj8zctqM8t4oivkbf+9AcuAo0lbZ2Gzv6/BJlFV4VA6V2X0C2uxyZfL\nsPu+bMXPnaBPpvMq8wekT4CuwjTgBdjy2a3YlUxd5tDeTRqV95YSMfrZD6F1C6GZS5KGZfSLsxDb\nbO0m2lfKHFYyZj97ot80c0nTsCppbeYweQL6S7M4vn/zstrMsp5onNDdg0IIIYQQPUfaZkoRO7De\no0ewSdrR6owZgcslhBBCCNEYRe+wG7J7UAghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIQaG/wNQ\n49kSjUC+pQAAAABJRU5ErkJggg==\n",
293 "png": "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\n49kSjUC+pQAAAABJRU5ErkJggg==\n",
199 "text": "\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u275831\u27e9\n\u239d 1 2 3 4\u23a0 \u239d 2 3 4 0\u23a0 \u239d 3 4 0 1\u23a0 \u239d 4 0 1 2\u23a0 \n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 4"
294 "prompt_number": 11,
295 "text": [
296 "\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u275831\u27e9",
297 "\u239d 1 2 3 4\u23a0 \u239d 2 3 4 0\u23a0 \u239d 3 4 0 1\u23a0 \u239d 4 0 1 2\u23a0 ",
298 "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",
299 " 4"
300 ]
200 }
301 }
201 ],
302 ],
202 "collapsed": false,
303 "prompt_number": 11
203 "prompt_number": 11,
204 "input": "one = Rational(1,4)*(1+M0)*(1+M1)*(1+M2)*(1+M3)*IntQubit(2**5-1, 5); one\n"
205 },
304 },
206 {
305 {
207 "cell_type": "code",
306 "cell_type": "code",
307 "collapsed": false,
308 "input": [
309 "qapply(4*one)"
310 ],
208 "language": "python",
311 "language": "python",
209 "outputs": [
312 "outputs": [
210 {
313 {
314 "latex": [
315 "$$- {\\left|1\\right\\rangle } - {\\left|2\\right\\rangle } - {\\left|4\\right\\rangle } + {\\left|7\\right\\rangle } - {\\left|8\\right\\rangle } - {\\left|11\\right\\rangle } - {\\left|13\\right\\rangle } + {\\left|14\\right\\rangle } - {\\left|16\\right\\rangle } + {\\left|19\\right\\rangle } - {\\left|21\\right\\rangle } - {\\left|22\\right\\rangle } + {\\left|25\\right\\rangle } - {\\left|26\\right\\rangle } + {\\left|28\\right\\rangle } + {\\left|31\\right\\rangle }$$"
316 ],
211 "output_type": "pyout",
317 "output_type": "pyout",
212 "latex": "$$- {\\left|1\\right\\rangle } - {\\left|2\\right\\rangle } - {\\left|4\\right\\rangle } + {\\left|7\\right\\rangle } - {\\left|8\\right\\rangle } - {\\left|11\\right\\rangle } - {\\left|13\\right\\rangle } + {\\left|14\\right\\rangle } - {\\left|16\\right\\rangle } + {\\left|19\\right\\rangle } - {\\left|21\\right\\rangle } - {\\left|22\\right\\rangle } + {\\left|25\\right\\rangle } - {\\left|26\\right\\rangle } + {\\left|28\\right\\rangle } + {\\left|31\\right\\rangle }$$",
213 "prompt_number": 12,
214 "png": "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\n",
318 "png": "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\n",
215 "text": "-\u27581\u27e9 - \u27582\u27e9 - \u27584\u27e9 + \u27587\u27e9 - \u27588\u27e9 - \u275811\u27e9 - \u275813\u27e9 + \u275814\u27e9 - \u275816\u27e9 + \u275819\u27e9 - \u275821\u27e9 - \u275822\u27e9 \n+ \u275825\u27e9 - \u275826\u27e9 + \u275828\u27e9 + \u275831\u27e9"
319 "prompt_number": 12,
320 "text": [
321 "-\u27581\u27e9 - \u27582\u27e9 - \u27584\u27e9 + \u27587\u27e9 - \u27588\u27e9 - \u275811\u27e9 - \u275813\u27e9 + \u275814\u27e9 - \u275816\u27e9 + \u275819\u27e9 - \u275821\u27e9 - \u275822\u27e9 ",
322 "+ \u275825\u27e9 - \u275826\u27e9 + \u275828\u27e9 + \u275831\u27e9"
323 ]
216 }
324 }
217 ],
325 ],
218 "collapsed": false,
326 "prompt_number": 12
219 "prompt_number": 12,
220 "input": "qapply(4*one)\n"
221 },
327 },
222 {
328 {
223 "source": "<h2>The encoding circuit</h2>",
329 "cell_type": "markdown",
224 "cell_type": "markdown"
330 "source": [
331 "<h2>The encoding circuit</h2>"
332 ]
225 },
333 },
226 {
334 {
227 "cell_type": "code",
335 "cell_type": "code",
336 "collapsed": true,
337 "input": [
338 "encoding_circuit = H(3)*H(4)*CNOT(2,0)*CNOT(3,0)*CNOT(4,0)*H(1)*H(4)*\\",
339 " CNOT(2,1)*CNOT(4,1)*H(2)*CNOT(3,2)*CNOT(4,2)*H(3)*\\",
340 " H(4)*CNOT(4, 3)*Z(4)*H(4)*Z(4)"
341 ],
228 "language": "python",
342 "language": "python",
229 "outputs": [],
343 "outputs": [],
230 "collapsed": true,
344 "prompt_number": 13
231 "prompt_number": 13,
232 "input": "encoding_circuit = H(3)*H(4)*CNOT(2,0)*CNOT(3,0)*CNOT(4,0)*H(1)*H(4)*\\\n CNOT(2,1)*CNOT(4,1)*H(2)*CNOT(3,2)*CNOT(4,2)*H(3)*\\\n H(4)*CNOT(4, 3)*Z(4)*H(4)*Z(4)\n"
233 },
345 },
234 {
346 {
235 "cell_type": "code",
347 "cell_type": "code",
348 "collapsed": false,
349 "input": [
350 "circuit_plot(encoding_circuit, nqubits=5, scale=0.5)"
351 ],
236 "language": "python",
352 "language": "python",
237 "outputs": [
353 "outputs": [
238 {
354 {
239 "output_type": "pyout",
355 "output_type": "pyout",
240 "prompt_number": 14,
356 "prompt_number": 14,
241 "text": "&lt;sympy.physics.quantum.circuitplot.CircuitPlot object at 0x38a6950&gt;"
357 "text": [
358 "&lt;sympy.physics.quantum.circuitplot.CircuitPlot object at 0x38a6950&gt;"
359 ]
242 },
360 },
243 {
361 {
244 "output_type": "display_data",
362 "output_type": "display_data",
245 "png": "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\nPol+/frhq6++0jvW/dtY9YnXUPBWVCIiqtWVK1fQvXt3pKamolu3bjXKtU0bZGZmYtiwYfj111+h\nUql0jpcOUGQtAAACtklEQVSdnY2hQ4ciIyMD7dq10zne3r178fzzz+P333+v8RTR2iQnJyMiIgIZ\nGRka+6kt3oYNG/Df//4X2dnZXI/4F7xyQUREtXriiSfw2WefYcSIETh//rxOdX7++WcEBwdjw4YN\neiUWANCjRw+88cYbGD58OK5evapTnaNHj2L69OnYtm2bXokFAAQEBGDMmDEICgrS+a6Pr7/+Gm+9\n9Ra2bNnCxEITQUREpIN169aJVq1aidWrV4vbt28/+P2f/5SUlJSIlStXCmdnZ7F582aDY6nVahEV\nFSXatWsnvvjiC3H37l2N8QoKCkRUVJRwdnYWycnJBserrq4W8+fPF56enmLnzp2iqqpKY7zLly+L\nRYsWidatW4uMjAyD41k7JhdERKSztLQ0ERwcLFQqlZg3b55ISEgQAMSXX34p5syZI5ycnMT48eNF\nZmamLPH27dsnhgwZIlxcXMSbb74pNm/eLACI+Ph4MW3aNPHYY4+J6dOnizNnzsgSLzExUfTv31+0\nbdtWvPfee2LLli0CgNi4caMYO3ascHJyEhEREeLixYuyxLNWXHNBRER6y8nJwfr163Hu3Dls2bIF\nkyZNgpeXF2bNmoU2bdrIHu/8+fOIjY3FhQsXsHXrVkyePBm9evXCzJkz0aJFC9njnTp1CnFxcbh8\n+TK2bduGKVOmoH///pg6dSocHR1lj2dtmFwQERGRrLigk4iIiGTF5IKIiIhkxeSCiIiIZMXkgoiI\niGTF5IKIiIhkxeSCiIiIZMXkgoiIiGTF5IKIiIhkxeSCiIiIZMXkgoiIiGTF5IKIiIhkxeSCiIiI\nZMXkgoiIiGTF5IKIiIhkxeSCiIiIZMXkgoiIiGTF5IKIiIhkxeSCiIiIZMXkgoiIiGTF5IKIiIhk\nxeSCiIiIZMXkgoiIiGTF5IKIiIhk9X8OQhhdOtBzlgAAAABJRU5ErkJggg==\n"
363 "png": "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\nPol+/frhq6++0jvW/dtY9YnXUPBWVCIiqtWVK1fQvXt3pKamolu3bjXKtU0bZGZmYtiwYfj111+h\nUql0jpcOUGQtAAACtklEQVSdnY2hQ4ciIyMD7dq10zne3r178fzzz+P333+v8RTR2iQnJyMiIgIZ\nGRka+6kt3oYNG/Df//4X2dnZXI/4F7xyQUREtXriiSfw2WefYcSIETh//rxOdX7++WcEBwdjw4YN\neiUWANCjRw+88cYbGD58OK5evapTnaNHj2L69OnYtm2bXokFAAQEBGDMmDEICgrS+a6Pr7/+Gm+9\n9Ra2bNnCxEITQUREpIN169aJVq1aidWrV4vbt28/+P2f/5SUlJSIlStXCmdnZ7F582aDY6nVahEV\nFSXatWsnvvjiC3H37l2N8QoKCkRUVJRwdnYWycnJBserrq4W8+fPF56enmLnzp2iqqpKY7zLly+L\nRYsWidatW4uMjAyD41k7JhdERKSztLQ0ERwcLFQqlZg3b55ISEgQAMSXX34p5syZI5ycnMT48eNF\nZmamLPH27dsnhgwZIlxcXMSbb74pNm/eLACI+Ph4MW3aNPHYY4+J6dOnizNnzsgSLzExUfTv31+0\nbdtWvPfee2LLli0CgNi4caMYO3ascHJyEhEREeLixYuyxLNWXHNBRER6y8nJwfr163Hu3Dls2bIF\nkyZNgpeXF2bNmoU2bdrIHu/8+fOIjY3FhQsXsHXrVkyePBm9evXCzJkz0aJFC9njnTp1CnFxcbh8\n+TK2bduGKVOmoH///pg6dSocHR1lj2dtmFwQERGRrLigk4iIiGTF5IKIiIhkxeSCiIiIZMXkgoiI\niGTF5IKIiIhkxeSCiIiIZMXkgoiIiGTF5IKIiIhkxeSCiIiIZMXkgoiIiGTF5IKIiIhkxeSCiIiI\nZMXkgoiIiGTF5IKIiIhkxeSCiIiIZMXkgoiIiGTF5IKIiIhkxeSCiIiIZMXkgoiIiGTF5IKIiIhk\nxeSCiIiIZMXkgoiIiGTF5IKIiIhk9X8OQhhdOtBzlgAAAABJRU5ErkJggg==\n"
246 }
364 }
247 ],
365 ],
248 "collapsed": false,
366 "prompt_number": 14
249 "prompt_number": 14,
250 "input": "circuit_plot(encoding_circuit, nqubits=5, scale=0.5)"
251 },
367 },
252 {
368 {
253 "cell_type": "code",
369 "cell_type": "code",
370 "collapsed": false,
371 "input": [
372 "represent(4*encoding_circuit, nqubits=5)"
373 ],
254 "language": "python",
374 "language": "python",
255 "outputs": [
375 "outputs": [
256 {
376 {
377 "latex": [
378 "$$\\left(\\begin{smallmatrix}1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0\\\\0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1\\\\0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1\\\\1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0\\\\0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1\\\\-1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0\\\\1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0\\\\0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1\\\\0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1\\\\-1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0\\\\-1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0\\\\0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1\\\\1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0\\\\0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1\\\\0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1\\\\-1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0\\\\0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1\\\\1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0\\\\-1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0\\\\0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1\\\\-1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0\\\\0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1\\\\0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1\\\\-1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0\\\\1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0\\\\0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1\\\\0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1\\\\-1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0\\\\0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1\\\\-1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0\\\\-1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0\\\\0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1\\end{smallmatrix}\\right)$$"
379 ],
257 "output_type": "pyout",
380 "output_type": "pyout",
258 "latex": "$$\\left(\\begin{smallmatrix}1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0\\\\0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1\\\\0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1\\\\1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0\\\\0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1\\\\-1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0\\\\1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0\\\\0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1\\\\0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1\\\\-1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0\\\\-1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0\\\\0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1\\\\1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0\\\\0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1\\\\0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1\\\\-1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0\\\\0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1\\\\1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0\\\\-1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0\\\\0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1\\\\-1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0\\\\0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1\\\\0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1\\\\-1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0\\\\1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0\\\\0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1\\\\0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1\\\\-1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0\\\\0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1\\\\-1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0\\\\-1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0\\\\0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1\\end{smallmatrix}\\right)$$",
259 "prompt_number": 15,
381 "prompt_number": 15,
260 "text": "\u23a11 0 1 0 1 0 1 0 0 -1 0 -1 0 -1 0 -1 0 -1 0 -\n\u23a2 \n\u23a20 1 0 1 0 1 0 1 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0\n\u23a2 \n\u23a20 1 0 -1 0 1 0 -1 -1 0 1 0 -1 0 1 0 -1 0 1 0\n\u23a2 \n\u23a21 0 -1 0 1 0 -1 0 0 -1 0 1 0 -1 0 1 0 -1 0 1\n\u23a2 \n\u23a20 -1 0 -1 0 1 0 1 1 0 1 0 -1 0 -1 0 -1 0 -1 0\n\u23a2 \n\u23a2-1 0 -1 0 1 0 1 0 0 1 0 1 0 -1 0 -1 0 -1 0 -\n\u23a2 \n\u23a21 0 -1 0 -1 0 1 0 0 -1 0 1 0 1 0 -1 0 1 0 -\n\u23a2 \n\u23a20 1 0 -1 0 -1 0 1 -1 0 1 0 1 0 -1 0 1 0 -1 0\n\u23a2 \n\u23a20 -1 0 -1 0 -1 0 -1 1 0 1 0 1 0 1 0 -1 0 -1 0\n\u23a2 \n\u23a2-1 0 -1 0 -1 0 -1 0 0 1 0 1 0 1 0 1 0 -1 0 -\n\u23a2 \n\u23a2-1 0 1 0 -1 0 1 0 0 1 0 -1 0 1 0 -1 0 -1 0 1\n\u23a2 \n\u23a20 -1 0 1 0 -1 0 1 1 0 -1 0 1 0 -1 0 -1 0 1 0\n\u23a2 \n\u23a21 0 1 0 -1 0 -1 0 0 -1 0 -1 0 1 0 1 0 -1 0 -\n\u23a2 \n\u23a20 1 0 1 0 -1 0 -1 -1 0 -1 0 1 0 1 0 -1 0 -1 0\n\u23a2 \n\u23a20 -1 0 1 0 1 0 -1 1 0 -1 0 -1 0 1 0 1 0 -1 0\n\u23a2 \n\u23a2-1 0 1 0 1 0 -1 0 0 1 0 -1 0 -1 0 1 0 1 0 -\n\u23a2 \n\u23a20 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 -1 0 -1 0\n\u23a2 \n\u23a21 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 -1 0 -\n\u23a2 \n\u23a2-1 0 1 0 -1 0 1 0 0 -1 0 1 0 -1 0 1 0 1 0 -\n\u23a2 \n\u23a20 -1 0 1 0 -1 0 1 -1 0 1 0 -1 0 1 0 1 0 -1 0\n\u23a2 \n\u23a2-1 0 -1 0 1 0 1 0 0 -1 0 -1 0 1 0 1 0 -1 0 -\n\u23a2 \n\u23a20 -1 0 -1 0 1 0 1 -1 0 -1 0 1 0 1 0 -1 0 -1 0\n\u23a2 \n\u23a20 -1 0 1 0 1 0 -1 -1 0 1 0 1 0 -1 0 -1 0 1 0\n\u23a2 \n\u23a2-1 0 1 0 1 0 -1 0 0 -1 0 1 0 1 0 -1 0 -1 0 1\n\u23a2 \n\u23a21 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1\n\u23a2 \n\u23a20 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0\n\u23a2 \n\u23a20 -1 0 1 0 -1 0 1 -1 0 1 0 -1 0 1 0 -1 0 1 0\n\u23a2 \n\u23a2-1 0 1 0 -1 0 1 0 0 -1 0 1 0 -1 0 1 0 -1 0 1\n\u23a2 \n\u23a20 -1 0 -1 0 1 0 1 -1 0 -1 0 1 0 1 0 1 0 1 0\n\u23a2 \n\u23a2-1 0 -1 0 1 0 1 0 0 -1 0 -1 0 1 0 1 0 1 0 1\n\u23a2 \n\u23a2-1 0 1 0 1 0 -1 0 0 -1 0 1 0 1 0 -1 0 1 0 -\n\u23a2 \n\u23a30 -1 0 1 0 1 0 -1 -1 0 1 0 1 0 -1 0 1 0 -1 0\n\n1 0 -1 0 -1 -1 0 -1 0 -1 0 -1 0 \u23a4\n \u23a5\n -1 0 -1 0 0 -1 0 -1 0 -1 0 -1\u23a5\n \u23a5\n -1 0 1 0 0 -1 0 1 0 -1 0 1 \u23a5\n \u23a5\n 0 -1 0 1 -1 0 1 0 -1 0 1 0 \u23a5\n \u23a5\n 1 0 1 0 0 -1 0 -1 0 1 0 1 \u23a5\n \u23a5\n1 0 1 0 1 -1 0 -1 0 1 0 1 0 \u23a5\n \u23a5\n1 0 -1 0 1 1 0 -1 0 -1 0 1 0 \u23a5\n \u23a5\n -1 0 1 0 0 1 0 -1 0 -1 0 1 \u23a5\n \u23a5\n -1 0 -1 0 0 -1 0 -1 0 -1 0 -1\u23a5\n \u23a5\n1 0 -1 0 -1 -1 0 -1 0 -1 0 -1 0 \u23a5\n \u23a5\n 0 -1 0 1 -1 0 1 0 -1 0 1 0 \u23a5\n \u23a5\n -1 0 1 0 0 -1 0 1 0 -1 0 1 \u23a5\n \u23a5\n1 0 1 0 1 -1 0 -1 0 1 0 1 0 \u23a5\n \u23a5\n 1 0 1 0 0 -1 0 -1 0 1 0 1 \u23a5\n \u23a5\n -1 0 1 0 0 1 0 -1 0 -1 0 1 \u23a5\n \u23a5\n1 0 -1 0 1 1 0 -1 0 -1 0 1 0 \u23a5\n \u23a5\n -1 0 -1 0 0 1 0 1 0 1 0 1 \u23a5\n \u23a5\n1 0 -1 0 -1 1 0 1 0 1 0 1 0 \u23a5\n \u23a5\n1 0 1 0 -1 -1 0 1 0 -1 0 1 0 \u23a5\n \u23a5\n 1 0 -1 0 0 -1 0 1 0 -1 0 1 \u23a5\n \u23a5\n1 0 1 0 1 1 0 1 0 -1 0 -1 0 \u23a5\n \u23a5\n 1 0 1 0 0 1 0 1 0 -1 0 -1\u23a5\n \u23a5\n 1 0 -1 0 0 1 0 -1 0 -1 0 1 \u23a5\n \u23a5\n 0 1 0 -1 1 0 -1 0 -1 0 1 0 \u23a5\n \u23a5\n 0 1 0 1 -1 0 -1 0 -1 0 -1 0 \u23a5\n \u23a5\n 1 0 1 0 0 -1 0 -1 0 -1 0 -1\u23a5\n \u23a5\n -1 0 1 0 0 1 0 -1 0 1 0 -1\u23a5\n \u23a5\n 0 -1 0 1 1 0 -1 0 1 0 -1 0 \u23a5\n \u23a5\n -1 0 -1 0 0 -1 0 -1 0 1 0 1 \u23a5\n \u23a5\n 0 -1 0 -1 -1 0 -1 0 1 0 1 0 \u23a5\n \u23a5\n1 0 -1 0 1 -1 0 1 0 1 0 -1 0 \u23a5\n \u23a5\n -1 0 1 0 0 -1 0 1 0 1 0 -1\u23a6"
382 "text": [
383 "\u23a11 0 1 0 1 0 1 0 0 -1 0 -1 0 -1 0 -1 0 -1 0 -",
384 "\u23a2 ",
385 "\u23a20 1 0 1 0 1 0 1 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0",
386 "\u23a2 ",
387 "\u23a20 1 0 -1 0 1 0 -1 -1 0 1 0 -1 0 1 0 -1 0 1 0",
388 "\u23a2 ",
389 "\u23a21 0 -1 0 1 0 -1 0 0 -1 0 1 0 -1 0 1 0 -1 0 1",
390 "\u23a2 ",
391 "\u23a20 -1 0 -1 0 1 0 1 1 0 1 0 -1 0 -1 0 -1 0 -1 0",
392 "\u23a2 ",
393 "\u23a2-1 0 -1 0 1 0 1 0 0 1 0 1 0 -1 0 -1 0 -1 0 -",
394 "\u23a2 ",
395 "\u23a21 0 -1 0 -1 0 1 0 0 -1 0 1 0 1 0 -1 0 1 0 -",
396 "\u23a2 ",
397 "\u23a20 1 0 -1 0 -1 0 1 -1 0 1 0 1 0 -1 0 1 0 -1 0",
398 "\u23a2 ",
399 "\u23a20 -1 0 -1 0 -1 0 -1 1 0 1 0 1 0 1 0 -1 0 -1 0",
400 "\u23a2 ",
401 "\u23a2-1 0 -1 0 -1 0 -1 0 0 1 0 1 0 1 0 1 0 -1 0 -",
402 "\u23a2 ",
403 "\u23a2-1 0 1 0 -1 0 1 0 0 1 0 -1 0 1 0 -1 0 -1 0 1",
404 "\u23a2 ",
405 "\u23a20 -1 0 1 0 -1 0 1 1 0 -1 0 1 0 -1 0 -1 0 1 0",
406 "\u23a2 ",
407 "\u23a21 0 1 0 -1 0 -1 0 0 -1 0 -1 0 1 0 1 0 -1 0 -",
408 "\u23a2 ",
409 "\u23a20 1 0 1 0 -1 0 -1 -1 0 -1 0 1 0 1 0 -1 0 -1 0",
410 "\u23a2 ",
411 "\u23a20 -1 0 1 0 1 0 -1 1 0 -1 0 -1 0 1 0 1 0 -1 0",
412 "\u23a2 ",
413 "\u23a2-1 0 1 0 1 0 -1 0 0 1 0 -1 0 -1 0 1 0 1 0 -",
414 "\u23a2 ",
415 "\u23a20 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 -1 0 -1 0",
416 "\u23a2 ",
417 "\u23a21 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 -1 0 -",
418 "\u23a2 ",
419 "\u23a2-1 0 1 0 -1 0 1 0 0 -1 0 1 0 -1 0 1 0 1 0 -",
420 "\u23a2 ",
421 "\u23a20 -1 0 1 0 -1 0 1 -1 0 1 0 -1 0 1 0 1 0 -1 0",
422 "\u23a2 ",
423 "\u23a2-1 0 -1 0 1 0 1 0 0 -1 0 -1 0 1 0 1 0 -1 0 -",
424 "\u23a2 ",
425 "\u23a20 -1 0 -1 0 1 0 1 -1 0 -1 0 1 0 1 0 -1 0 -1 0",
426 "\u23a2 ",
427 "\u23a20 -1 0 1 0 1 0 -1 -1 0 1 0 1 0 -1 0 -1 0 1 0",
428 "\u23a2 ",
429 "\u23a2-1 0 1 0 1 0 -1 0 0 -1 0 1 0 1 0 -1 0 -1 0 1",
430 "\u23a2 ",
431 "\u23a21 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1",
432 "\u23a2 ",
433 "\u23a20 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0",
434 "\u23a2 ",
435 "\u23a20 -1 0 1 0 -1 0 1 -1 0 1 0 -1 0 1 0 -1 0 1 0",
436 "\u23a2 ",
437 "\u23a2-1 0 1 0 -1 0 1 0 0 -1 0 1 0 -1 0 1 0 -1 0 1",
438 "\u23a2 ",
439 "\u23a20 -1 0 -1 0 1 0 1 -1 0 -1 0 1 0 1 0 1 0 1 0",
440 "\u23a2 ",
441 "\u23a2-1 0 -1 0 1 0 1 0 0 -1 0 -1 0 1 0 1 0 1 0 1",
442 "\u23a2 ",
443 "\u23a2-1 0 1 0 1 0 -1 0 0 -1 0 1 0 1 0 -1 0 1 0 -",
444 "\u23a2 ",
445 "\u23a30 -1 0 1 0 1 0 -1 -1 0 1 0 1 0 -1 0 1 0 -1 0",
446 "",
447 "1 0 -1 0 -1 -1 0 -1 0 -1 0 -1 0 \u23a4",
448 " \u23a5",
449 " -1 0 -1 0 0 -1 0 -1 0 -1 0 -1\u23a5",
450 " \u23a5",
451 " -1 0 1 0 0 -1 0 1 0 -1 0 1 \u23a5",
452 " \u23a5",
453 " 0 -1 0 1 -1 0 1 0 -1 0 1 0 \u23a5",
454 " \u23a5",
455 " 1 0 1 0 0 -1 0 -1 0 1 0 1 \u23a5",
456 " \u23a5",
457 "1 0 1 0 1 -1 0 -1 0 1 0 1 0 \u23a5",
458 " \u23a5",
459 "1 0 -1 0 1 1 0 -1 0 -1 0 1 0 \u23a5",
460 " \u23a5",
461 " -1 0 1 0 0 1 0 -1 0 -1 0 1 \u23a5",
462 " \u23a5",
463 " -1 0 -1 0 0 -1 0 -1 0 -1 0 -1\u23a5",
464 " \u23a5",
465 "1 0 -1 0 -1 -1 0 -1 0 -1 0 -1 0 \u23a5",
466 " \u23a5",
467 " 0 -1 0 1 -1 0 1 0 -1 0 1 0 \u23a5",
468 " \u23a5",
469 " -1 0 1 0 0 -1 0 1 0 -1 0 1 \u23a5",
470 " \u23a5",
471 "1 0 1 0 1 -1 0 -1 0 1 0 1 0 \u23a5",
472 " \u23a5",
473 " 1 0 1 0 0 -1 0 -1 0 1 0 1 \u23a5",
474 " \u23a5",
475 " -1 0 1 0 0 1 0 -1 0 -1 0 1 \u23a5",
476 " \u23a5",
477 "1 0 -1 0 1 1 0 -1 0 -1 0 1 0 \u23a5",
478 " \u23a5",
479 " -1 0 -1 0 0 1 0 1 0 1 0 1 \u23a5",
480 " \u23a5",
481 "1 0 -1 0 -1 1 0 1 0 1 0 1 0 \u23a5",
482 " \u23a5",
483 "1 0 1 0 -1 -1 0 1 0 -1 0 1 0 \u23a5",
484 " \u23a5",
485 " 1 0 -1 0 0 -1 0 1 0 -1 0 1 \u23a5",
486 " \u23a5",
487 "1 0 1 0 1 1 0 1 0 -1 0 -1 0 \u23a5",
488 " \u23a5",
489 " 1 0 1 0 0 1 0 1 0 -1 0 -1\u23a5",
490 " \u23a5",
491 " 1 0 -1 0 0 1 0 -1 0 -1 0 1 \u23a5",
492 " \u23a5",
493 " 0 1 0 -1 1 0 -1 0 -1 0 1 0 \u23a5",
494 " \u23a5",
495 " 0 1 0 1 -1 0 -1 0 -1 0 -1 0 \u23a5",
496 " \u23a5",
497 " 1 0 1 0 0 -1 0 -1 0 -1 0 -1\u23a5",
498 " \u23a5",
499 " -1 0 1 0 0 1 0 -1 0 1 0 -1\u23a5",
500 " \u23a5",
501 " 0 -1 0 1 1 0 -1 0 1 0 -1 0 \u23a5",
502 " \u23a5",
503 " -1 0 -1 0 0 -1 0 -1 0 1 0 1 \u23a5",
504 " \u23a5",
505 " 0 -1 0 -1 -1 0 -1 0 1 0 1 0 \u23a5",
506 " \u23a5",
507 "1 0 -1 0 1 -1 0 1 0 1 0 -1 0 \u23a5",
508 " \u23a5",
509 " -1 0 1 0 0 -1 0 1 0 1 0 -1\u23a6"
510 ]
261 }
511 }
262 ],
512 ],
263 "collapsed": false,
513 "prompt_number": 15
264 "prompt_number": 15,
265 "input": "represent(4*encoding_circuit, nqubits=5)"
266 }
514 }
267 ]
515 ]
268 }
516 }
@@ -1,162 +1,348 b''
1 {
1 {
2 "nbformat": 2,
3 "metadata": {
2 "metadata": {
4 "name": "qft"
3 "name": "qft"
5 },
4 },
5 "nbformat": 2,
6 "worksheets": [
6 "worksheets": [
7 {
7 {
8 "cells": [
8 "cells": [
9 {
9 {
10 "source": "<h1>Quantum Fourier Transform</h1>",
10 "cell_type": "markdown",
11 "cell_type": "markdown"
11 "source": [
12 "<h1>Quantum Fourier Transform</h1>"
13 ]
12 },
14 },
13 {
15 {
14 "cell_type": "code",
16 "cell_type": "code",
17 "collapsed": true,
18 "input": [
19 "%load_ext sympyprinting"
20 ],
15 "language": "python",
21 "language": "python",
16 "outputs": [],
22 "outputs": [],
17 "collapsed": true,
23 "prompt_number": 1
18 "prompt_number": 1,
19 "input": "%load_ext sympyprinting"
20 },
24 },
21 {
25 {
22 "cell_type": "code",
26 "cell_type": "code",
27 "collapsed": true,
28 "input": [
29 "from sympy import sqrt, symbols, Rational",
30 "from sympy import expand, Eq, Symbol, simplify, exp, sin",
31 "from sympy.physics.quantum import *",
32 "from sympy.physics.quantum.qubit import *",
33 "from sympy.physics.quantum.gate import *",
34 "from sympy.physics.quantum.grover import *",
35 "from sympy.physics.quantum.qft import QFT, IQFT, Fourier",
36 "from sympy.physics.quantum.circuitplot import circuit_plot"
37 ],
23 "language": "python",
38 "language": "python",
24 "outputs": [],
39 "outputs": [],
25 "collapsed": true,
40 "prompt_number": 2
26 "prompt_number": 2,
27 "input": "from sympy import sqrt, symbols, Rational\nfrom sympy import expand, Eq, Symbol, simplify, exp, sin\nfrom sympy.physics.quantum import *\nfrom sympy.physics.quantum.qubit import *\nfrom sympy.physics.quantum.gate import *\nfrom sympy.physics.quantum.grover import *\nfrom sympy.physics.quantum.qft import QFT, IQFT, Fourier\nfrom sympy.physics.quantum.circuitplot import circuit_plot"
28 },
41 },
29 {
42 {
30 "source": "QFT is useful for a quantum algorithm for factoring numbers which is exponentially faster than what is thought to be possible on a classical machine.<br>\nThe transform does a DFT on the state of a quantum system<br>\nThere is a simple decomposition of the QFT in terms of a few elementary gates.",
43 "cell_type": "markdown",
31 "cell_type": "markdown"
44 "source": [
45 "QFT is useful for a quantum algorithm for factoring numbers which is exponentially faster than what is thought to be possible on a classical machine.<br>",
46 "The transform does a DFT on the state of a quantum system<br>",
47 "There is a simple decomposition of the QFT in terms of a few elementary gates."
48 ]
32 },
49 },
33 {
50 {
34 "source": "<h2>QFT Gate and Circuit</h2>",
51 "cell_type": "markdown",
35 "cell_type": "markdown"
52 "source": [
53 "<h2>QFT Gate and Circuit</h2>"
54 ]
36 },
55 },
37 {
56 {
38 "source": "Build a 3 qubit QFT and decompose it into primitive gates.",
57 "cell_type": "markdown",
39 "cell_type": "markdown"
58 "source": [
59 "Build a 3 qubit QFT and decompose it into primitive gates."
60 ]
40 },
61 },
41 {
62 {
42 "cell_type": "code",
63 "cell_type": "code",
64 "collapsed": false,
65 "input": [
66 "fourier = QFT(0,3).decompose(); fourier"
67 ],
43 "language": "python",
68 "language": "python",
44 "outputs": [
69 "outputs": [
45 {
70 {
71 "latex": [
72 "$$SWAP_{0,2} H_{0} C_{0}{\\left(S_{1}\\right)} H_{1} C_{0}{\\left(T_{2}\\right)} C_{1}{\\left(S_{2}\\right)} H_{2}$$"
73 ],
46 "output_type": "pyout",
74 "output_type": "pyout",
47 "latex": "$$SWAP_{0,2} H_{0} C_{0}{\\left(S_{1}\\right)} H_{1} C_{0}{\\left(T_{2}\\right)} C_{1}{\\left(S_{2}\\right)} H_{2}$$",
48 "prompt_number": 3,
49 "png": "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\n",
75 "png": "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\n",
50 "text": "SWAP \u22c5H \u22c5C \u239bS \u239e\u22c5H \u22c5C \u239bT \u239e\u22c5C \u239bS \u239e\u22c5H \n 0,2 0 0\u239d 1\u23a0 1 0\u239d 2\u23a0 1\u239d 2\u23a0 2"
76 "prompt_number": 3,
77 "text": [
78 "SWAP \u22c5H \u22c5C \u239bS \u239e\u22c5H \u22c5C \u239bT \u239e\u22c5C \u239bS \u239e\u22c5H ",
79 " 0,2 0 0\u239d 1\u23a0 1 0\u239d 2\u23a0 1\u239d 2\u23a0 2"
80 ]
51 }
81 }
52 ],
82 ],
53 "collapsed": false,
83 "prompt_number": 3
54 "prompt_number": 3,
55 "input": "fourier = QFT(0,3).decompose(); fourier\n"
56 },
84 },
57 {
85 {
58 "cell_type": "code",
86 "cell_type": "code",
87 "collapsed": false,
88 "input": [
89 "circuit_plot(fourier, nqubits=3)"
90 ],
59 "language": "python",
91 "language": "python",
60 "outputs": [
92 "outputs": [
61 {
93 {
62 "output_type": "pyout",
94 "output_type": "pyout",
63 "prompt_number": 4,
95 "prompt_number": 4,
64 "text": "&lt;sympy.physics.quantum.circuitplot.CircuitPlot object at 0x4992910&gt;"
96 "text": [
97 "&lt;sympy.physics.quantum.circuitplot.CircuitPlot object at 0x4992910&gt;"
98 ]
65 },
99 },
66 {
100 {
67 "output_type": "display_data",
101 "output_type": "display_data",
68 "png": "iVBORw0KGgoAAAANSUhEUgAAAa8AAADFCAYAAADjc32JAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEnhJREFUeJzt3X9MVfXjx/HXuZeuAiECSZlOizkXGjVrECEgQbq0WWHa\nomXpVpNpzbIflLVafxi12qzW/FSzH1t/kJm1Ya5mTn7IbentF7OoGFFiq8RMELho/DjfP5p8Y9yL\ngJd77vv6fGznn/PWw+vNkfvivM+5V8u2bVsAABjE5XQAAABGi/ICABiH8gIAGIfyAgAYh/ICABiH\n8gIAGIfyAgAYh/ICABiH8gIAGIfyAgAYh/ICABiH8gIAGIfyAgAYh/ICABiH8gIAGIfyAgAYh/IC\nABiH8gIAGIfyAgAYh/ICABiH8gIAGIfyAgAYh/ICABiH8gIAGIfyAgAYh/ICABgnKsorOTlZlmWN\n25acnOz0FAeEcq6RNC9pfM5jpM0RQGhYtm3bToc4W5ZlaTynMd7HH41QZomkeUnjkyfS5gggNKLi\nygsAcG6hvAAAxqG8AADGifryWrZsmdLT0+VyueTxeDRv3jytWbNGknTo0CEVFhZq+vTpcrlcSkxM\nVFZWlrZs2eJw6rHp7e3VK6+8opUrV6qkpETFxcV666231NXVpaVLlzodb1QOHjwol8slt9utOXPm\naPHixbr22msHzuN1112nxYsXKycnR/Hx8XK73ero6HA6NoBwsaPAmabxxRdf2JZl2Q888EDA8fLy\nctuyLPv9998f0/HDKVgWv99v33jjjfamTZsG7S8vL7dnz55tl5SUjPhYTvlvno0bN9orVqywOzs7\nB/Z9//33tmVZ9urVqwf9vYMHD9qTJ08+4zEBRI+ov/KSpNraWknSkiVLAo5XVVXJ7XZr0aJF4YwV\nUnfddZemTZumjRs3Dtr/2GOPqbOzU9dff71Dycbm66+/VkVFheLj4wf21dTUSJIWLlw46M9efvnl\nmj9/fljzAecKv98/ZF9/f7+6u7sdSPP/zonyqqmpkcfjUW5u7pCxnp4eeb1eZWRkKDEx0YF0Z6+9\nvV2VlZVasWJFwPGMjAwVFRWFOdXYffPNN8rPz5fb7R60//QvIfn5+YP29/X16YILLghbPuBc0dXV\npblz5w787En/Fte9996rp59+2sFk50B59ff3y+v1KjMzU7GxsUPGfT6f/H7/kBdEk9TV1amnp0eN\njY0Bx/Py8jRz5swwpxq7o0ePatWqVUP219bW6tJLL9W0adMG7e/p6Ql6VQ1g7OLj47V161YtX75c\ntbW1A8XV1NSkp556ytFsMY5+9TCor69Xe3u7CgoKAo5XVVVJkhYsWBDGVKGVnZ0tt9utDRs26Jdf\nftEtt9yia665RjEx/57eJ554wuGEoxNo+bapqUl//PGH7r777iFjEydO1G233RaOaMA5p6ioSBUV\nFVq+fLkyMzPV2dmpXbt26fzzz3c2WLCbYZKM2oJ56aWXbMuy7KysLPuGG24YsqWkpNgul8v+66+/\ngh7D6bmNZK4vvPCCPWHCBNuyLNuyLDs+Pt5et26d3dbWZsy8hjuPb775pm1Zlv32228H/TOmzJGN\nje3st6BXXrZBH6ljWVbQsZqaGsXExKiqqkpxcXGDxvr6+jRp0iSlp6crJSVl2K8RKd+PYHN9+OGH\ntXTpUlVUVKiqqkpffPGFtmzZoiNHjmj79u1Bjxcp85KGP4/B7neNRCTNETDNf5cKa2trNWXKFH3w\nwQeO32qJ6s82tG1bqampuuSSS+Tz+YaMHzhwQNnZ2SotLR32vV2R9Pl4I83S0NCgxYsX688//1RH\nR4c8Hs+YjxUuw+VJS0tTT0+PDh8+HLJjAhjef4tr165dSkhI0J49e1RSUuJ4gUX1AxsNDQ06duyY\n8vLyAo7X1dVJMvt+1/PPPx9w/5w5c3THHXdIMv/K47ffftOvv/4a9DwCGB8nT55UUlLSoHtcRUVF\neu+999Tc3Oxotqgur9NLTYEekZckr9craWxLUZGgs7NT1dXVQcdPnDihq6++WhMmTAhfqHFwNkuG\nAMYuLi5OL7744pCHMwoLCwM+ERxOUV1eNTU1sixr2PKaNWuWpk6dGuZkobFv3z7t2bMn4G9Ara2t\n2rFjh8rLyx1IFlqny8vkK2QAoRW15XXq1ClVV1crLS1NqampQ8br6+vV2tpq9Ccz7N27V2lpaSor\nK9MPP/wwsL+5uVk333yzysrKjH/B9/v9+uyzzzR58mSlp6c7HQdAhIi693m1tLRo5cqVOnz4sI4e\nParjx48rNzdXd955p0pLS7Vz506Vl5erqalJlmWpsrJSBQUFevbZZ5WTk+N0/FE5cuSI9u/fr2+/\n/Vbr169XW1ubUlJSFBsbq82bNys7O9vpiGNi27aKi4vV0dGh5uZmtbS0SJKysrI0efJk3XPPPbyv\nCzjHRfXThqYcfzT4n5SdPyZwroqkn6eoXTYEAEQvygsAYJyouec13KcznK2kpKRxO/ZYhGqukTYv\nKfTnMRLnCODsRUV5RcoabDiMZK6RtC49GiPNbOr8AIQOy4YAAONQXgAA41BeAADjUF4AAONQXgAA\n41BeAADjUF4AAONQXgAA41BeAADjUF4AAONQXgAA41BeAADjUF4AAONQXgAA41BeAADjUF4AAONQ\nXgAA41BeAADjUF4AAONQXgAA41BeAADjUF4AAONQXgAA41BeAADjUF4AAONQXgAA41BeAADjUF4A\nAONQXgAA41BeAADjUF4AAONQXgAA41BewDhLTk6WZVnjtiUnJzs9RUmhnWekzAmRy7Jt23Y6BELL\nsixF82k1bX7jnTdSvh+hzBEpc8JgkXReuPICABiH8gIAGIfyAhyybNkypaeny+VyyePxaN68eVqz\nZo0k6dChQyosLNT06dPlcrmUmJiorKwsbdmyxeHUY9fb26tXXnlFK1euVElJiYqLi/XWW2+pq6tL\nS5cudToeDEN5AQ758MMP9c4770iS1q1bp2+++Uavv/66JGnmzJnau3ev7rvvPknS1q1bdeDAAa1d\nu9apuGelu7tbt9xyizo7O/Xuu++qoqJCH330kVpbW3XVVVcpISHB6YgwDOUFOKi2tlaStGTJkoDj\nVVVVcrvdWrRoUThjhdxdd92ladOmaePGjYP2P/bYY+rs7NT111/vUDKYKsbpAAit1tZWSVJPT4/O\nO+88h9PgTGpqauTxeJSbmztkrKenR16vVxkZGUpMTHQgXWi0t7ersrJSu3btCjiekZGhoqKiMKeC\n6bjyihLd3d1avny5ZsyYIUmaMmWKtm/f7nAqDKe/v19er1eZmZmKjY0dMu7z+eT3+5Wfn+9AutCp\nq6tTT0+PGhsbA47n5eVp5syZYU4F01FeUeKhhx7Srl27dOrUKUn//ra7atUq/fTTTw4nQzD19fVq\nb29XQUFBwPGqqipJ0oIFC8KYKvSys7Pldru1YcMGPfLII/J6vert7R0Yf+KJJxxMB1PxJuUoER8f\nL7/fP2hfTEyMHn30UW3atMmhVOMjkt4oORLB8r788st68MEHlZmZGfATJXw+n44fP67W1lalpKSM\n+vjhNlyOF198UU8++aT++ecfSVJcXJxWrVqlTZs2BVwSjZQ5YbCIOi92EJLY2NhCtAVSXFxsn3fe\n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\n"
102 "png": "iVBORw0KGgoAAAANSUhEUgAAAa8AAADFCAYAAADjc32JAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEnhJREFUeJzt3X9MVfXjx/HXuZeuAiECSZlOizkXGjVrECEgQbq0WWHa\nomXpVpNpzbIflLVafxi12qzW/FSzH1t/kJm1Ya5mTn7IbentF7OoGFFiq8RMELho/DjfP5p8Y9yL\ngJd77vv6fGznn/PWw+vNkfvivM+5V8u2bVsAABjE5XQAAABGi/ICABiH8gIAGIfyAgAYh/ICABiH\n8gIAGIfyAgAYh/ICABiH8gIAGIfyAgAYh/ICABiH8gIAGIfyAgAYh/ICABiH8gIAGIfyAgAYh/IC\nABiH8gIAGIfyAgAYh/ICABiH8gIAGIfyAgAYh/ICABiH8gIAGIfyAgAYh/ICABgnKsorOTlZlmWN\n25acnOz0FAeEcq6RNC9pfM5jpM0RQGhYtm3bToc4W5ZlaTynMd7HH41QZomkeUnjkyfS5gggNKLi\nygsAcG6hvAAAxqG8AADGifryWrZsmdLT0+VyueTxeDRv3jytWbNGknTo0CEVFhZq+vTpcrlcSkxM\nVFZWlrZs2eJw6rHp7e3VK6+8opUrV6qkpETFxcV666231NXVpaVLlzodb1QOHjwol8slt9utOXPm\naPHixbr22msHzuN1112nxYsXKycnR/Hx8XK73ero6HA6NoBwsaPAmabxxRdf2JZl2Q888EDA8fLy\nctuyLPv9998f0/HDKVgWv99v33jjjfamTZsG7S8vL7dnz55tl5SUjPhYTvlvno0bN9orVqywOzs7\nB/Z9//33tmVZ9urVqwf9vYMHD9qTJ08+4zEBRI+ov/KSpNraWknSkiVLAo5XVVXJ7XZr0aJF4YwV\nUnfddZemTZumjRs3Dtr/2GOPqbOzU9dff71Dycbm66+/VkVFheLj4wf21dTUSJIWLlw46M9efvnl\nmj9/fljzAecKv98/ZF9/f7+6u7sdSPP/zonyqqmpkcfjUW5u7pCxnp4eeb1eZWRkKDEx0YF0Z6+9\nvV2VlZVasWJFwPGMjAwVFRWFOdXYffPNN8rPz5fb7R60//QvIfn5+YP29/X16YILLghbPuBc0dXV\npblz5w787En/Fte9996rp59+2sFk50B59ff3y+v1KjMzU7GxsUPGfT6f/H7/kBdEk9TV1amnp0eN\njY0Bx/Py8jRz5swwpxq7o0ePatWqVUP219bW6tJLL9W0adMG7e/p6Ql6VQ1g7OLj47V161YtX75c\ntbW1A8XV1NSkp556ytFsMY5+9TCor69Xe3u7CgoKAo5XVVVJkhYsWBDGVKGVnZ0tt9utDRs26Jdf\nftEtt9yia665RjEx/57eJ554wuGEoxNo+bapqUl//PGH7r777iFjEydO1G233RaOaMA5p6ioSBUV\nFVq+fLkyMzPV2dmpXbt26fzzz3c2WLCbYZKM2oJ56aWXbMuy7KysLPuGG24YsqWkpNgul8v+66+/\ngh7D6bmNZK4vvPCCPWHCBNuyLNuyLDs+Pt5et26d3dbWZsy8hjuPb775pm1Zlv32228H/TOmzJGN\nje3st6BXXrZBH6ljWVbQsZqaGsXExKiqqkpxcXGDxvr6+jRp0iSlp6crJSVl2K8RKd+PYHN9+OGH\ntXTpUlVUVKiqqkpffPGFtmzZoiNHjmj79u1Bjxcp85KGP4/B7neNRCTNETDNf5cKa2trNWXKFH3w\nwQeO32qJ6s82tG1bqampuuSSS+Tz+YaMHzhwQNnZ2SotLR32vV2R9Pl4I83S0NCgxYsX688//1RH\nR4c8Hs+YjxUuw+VJS0tTT0+PDh8+HLJjAhjef4tr165dSkhI0J49e1RSUuJ4gUX1AxsNDQ06duyY\n8vLyAo7X1dVJMvt+1/PPPx9w/5w5c3THHXdIMv/K47ffftOvv/4a9DwCGB8nT55UUlLSoHtcRUVF\neu+999Tc3Oxotqgur9NLTYEekZckr9craWxLUZGgs7NT1dXVQcdPnDihq6++WhMmTAhfqHFwNkuG\nAMYuLi5OL7744pCHMwoLCwM+ERxOUV1eNTU1sixr2PKaNWuWpk6dGuZkobFv3z7t2bMn4G9Ara2t\n2rFjh8rLyx1IFlqny8vkK2QAoRW15XXq1ClVV1crLS1NqampQ8br6+vV2tpq9Ccz7N27V2lpaSor\nK9MPP/wwsL+5uVk333yzysrKjH/B9/v9+uyzzzR58mSlp6c7HQdAhIi693m1tLRo5cqVOnz4sI4e\nParjx48rNzdXd955p0pLS7Vz506Vl5erqalJlmWpsrJSBQUFevbZZ5WTk+N0/FE5cuSI9u/fr2+/\n/Vbr169XW1ubUlJSFBsbq82bNys7O9vpiGNi27aKi4vV0dGh5uZmtbS0SJKysrI0efJk3XPPPbyv\nCzjHRfXThqYcfzT4n5SdPyZwroqkn6eoXTYEAEQvygsAYJyouec13KcznK2kpKRxO/ZYhGqukTYv\nKfTnMRLnCODsRUV5RcoabDiMZK6RtC49GiPNbOr8AIQOy4YAAONQXgAA41BeAADjUF4AAONQXgAA\n41BeAADjUF4AAONQXgAA41BeAADjUF4AAONQXgAA41BeAADjUF4AAONQXgAA41BeAADjUF4AAONQ\nXgAA41BeAADjUF4AAONQXgAA41BeAADjUF4AAONQXgAA41BeAADjUF4AAONQXgAA41BeAADjUF4A\nAONQXgAA41BeAADjUF4AAONQXgAA41BewDhLTk6WZVnjtiUnJzs9RUmhnWekzAmRy7Jt23Y6BELL\nsixF82k1bX7jnTdSvh+hzBEpc8JgkXReuPICABiH8gIAGIfyAhyybNkypaeny+VyyePxaN68eVqz\nZo0k6dChQyosLNT06dPlcrmUmJiorKwsbdmyxeHUY9fb26tXXnlFK1euVElJiYqLi/XWW2+pq6tL\nS5cudToeDEN5AQ758MMP9c4770iS1q1bp2+++Uavv/66JGnmzJnau3ev7rvvPknS1q1bdeDAAa1d\nu9apuGelu7tbt9xyizo7O/Xuu++qoqJCH330kVpbW3XVVVcpISHB6YgwDOUFOKi2tlaStGTJkoDj\nVVVVcrvdWrRoUThjhdxdd92ladOmaePGjYP2P/bYY+rs7NT111/vUDKYKsbpAAit1tZWSVJPT4/O\nO+88h9PgTGpqauTxeJSbmztkrKenR16vVxkZGUpMTHQgXWi0t7ersrJSu3btCjiekZGhoqKiMKeC\n6bjyihLd3d1avny5ZsyYIUmaMmWKtm/f7nAqDKe/v19er1eZmZmKjY0dMu7z+eT3+5Wfn+9AutCp\nq6tTT0+PGhsbA47n5eVp5syZYU4F01FeUeKhhx7Srl27dOrUKUn//ra7atUq/fTTTw4nQzD19fVq\nb29XQUFBwPGqqipJ0oIFC8KYKvSys7Pldru1YcMGPfLII/J6vert7R0Yf+KJJxxMB1PxJuUoER8f\nL7/fP2hfTEyMHn30UW3atMmhVOMjkt4oORLB8r788st68MEHlZmZGfATJXw+n44fP67W1lalpKSM\n+vjhNlyOF198UU8++aT++ecfSVJcXJxWrVqlTZs2BVwSjZQ5YbCIOi92EJLY2NhCtAVSXFxsn3fe\n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\n"
69 }
103 }
70 ],
104 ],
71 "collapsed": false,
105 "prompt_number": 4
72 "prompt_number": 4,
73 "input": "circuit_plot(fourier, nqubits=3)"
74 },
106 },
75 {
107 {
76 "source": "The QFT circuit can be represented in various symbolic forms.",
108 "cell_type": "markdown",
77 "cell_type": "markdown"
109 "source": [
110 "The QFT circuit can be represented in various symbolic forms."
111 ]
78 },
112 },
79 {
113 {
80 "cell_type": "code",
114 "cell_type": "code",
115 "collapsed": true,
116 "input": [
117 "m = represent(fourier, nqubits=3)"
118 ],
81 "language": "python",
119 "language": "python",
82 "outputs": [],
120 "outputs": [],
83 "collapsed": true,
121 "prompt_number": 5
84 "prompt_number": 5,
85 "input": "m = represent(fourier, nqubits=3)"
86 },
122 },
87 {
123 {
88 "cell_type": "code",
124 "cell_type": "code",
125 "collapsed": false,
126 "input": [
127 "m"
128 ],
89 "language": "python",
129 "language": "python",
90 "outputs": [
130 "outputs": [
91 {
131 {
132 "latex": [
133 "$$\\left(\\begin{smallmatrix}\\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2}\\\\\\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi}\\\\\\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath}\\\\\\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi}\\\\\\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2}\\\\\\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi}\\\\\\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath}\\\\\\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi}\\end{smallmatrix}\\right)$$"
134 ],
92 "output_type": "pyout",
135 "output_type": "pyout",
93 "latex": "$$\\left(\\begin{smallmatrix}\\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2}\\\\\\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi}\\\\\\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath}\\\\\\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi}\\\\\\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2}\\\\\\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi}\\\\\\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath}\\\\\\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi}\\end{smallmatrix}\\right)$$",
94 "prompt_number": 6,
136 "prompt_number": 6,
95 "text": "\u23a1 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n\u23a2\u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \n\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \n\u23a2 4 4 4 4 4 4 4 \n\u23a2 \n\u23a2 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \n\u23a2 \u2500\u2500\u2500 \u2500\u2500\u2500 \u2500\u2500\u2500 \n\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \n\u23a2\u2572\u2571 2 \u2572\u2571 2 \u22c5\u212f \u2572\u2571 2 \u22c5\u2148 \u2572\u2571 2 \u22c5\u2148\u22c5\u212f -\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u212f -\u2572\u2571 2 \u22c5\n\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u23a2 4 4 4 4 4 4 4 \n\u23a2 \n\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd\n\u23a2\u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148 \u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 \n\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\n\u23a2 4 4 4 4 4 4 4 \n\u23a2 \n\u23a2 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \n\u23a2 \u2500\u2500\u2500 \u2500\u2500\u2500 \u2500\u2500\u2500 \n\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \n\u23a2\u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148\u22c5\u212f -\u2572\u2571 2 \u22c5\u2148 \u2572\u2571 2 \u22c5\u212f -\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148\u22c5\u212f \u2572\u2571 2 \u22c5\u2148\n\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u23a2 4 4 4 4 4 4 4 \n\u23a2 \n\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n\u23a2\u2572\u2571 2 -\u2572\u2571 2 \u2572\u2571 2 -\u2572\u2571 2 \u2572\u2571 2 -\u2572\u2571 2 \u2572\u2571 2 \n\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \n\u23a2 4 4 4 4 4 4 4 \n\u23a2 \n\u23a2 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \n\u23a2 \u2500\u2500\u2500 \u2500\u2500\u2500 \u2500\u2500\u2500 \n\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \n\u23a2\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u212f \u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 \u22c5\u2148\u22c5\u212f -\u2572\u2571 2 \u2572\u2571 2 \u22c5\u212f -\u2572\u2571 2 \u22c5\n\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u23a2 4 4 4 4 4 4 4 \n\u23a2 \n\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd\n\u23a2\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148 \u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 \n\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\n\u23a2 4 4 4 4 4 4 4 \n\u23a2 \n\u23a2 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \n\u23a2 \u2500\u2500\u2500 \u2500\u2500\u2500 \u2500\u2500\u2500 \n\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \n\u23a2\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148\u22c5\u212f -\u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 \u22c5\u212f -\u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148\u22c5\u212f \u2572\u2571 2 \u22c5\u2148\n\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u23a3 4 4 4 4 4 4 4 \n\n \u23bd\u23bd\u23bd \u23a4\n \u2572\u2571 2 \u23a5\n \u2500\u2500\u2500\u2500\u2500 \u23a5\n 4 \u23a5\n \u23a5\n \u2148\u22c5\u03c0\u23a5\n \u2500\u2500\u2500\u23a5\n \u23bd\u23bd\u23bd 4 \u23a5\n\u2148 -\u2572\u2571 2 \u22c5\u2148\u22c5\u212f \u23a5\n\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u23a5\n 4 \u23a5\n \u23a5\n \u23bd\u23bd\u23bd \u23a5\n -\u2572\u2571 2 \u22c5\u2148 \u23a5\n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5\n 4 \u23a5\n \u23a5\n \u2148\u22c5\u03c0 \u23a5\n \u2500\u2500\u2500 \u23a5\n \u23bd\u23bd\u23bd 4 \u23a5\n -\u2572\u2571 2 \u22c5\u212f \u23a5\n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5\n 4 \u23a5\n \u23a5\n \u23bd\u23bd\u23bd \u23a5\n -\u2572\u2571 2 \u23a5\n \u2500\u2500\u2500\u2500\u2500\u2500 \u23a5\n 4 \u23a5\n \u23a5\n \u2148\u22c5\u03c0 \u23a5\n \u2500\u2500\u2500 \u23a5\n \u23bd\u23bd\u23bd 4 \u23a5\n\u2148 \u2572\u2571 2 \u22c5\u2148\u22c5\u212f \u23a5\n\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5\n 4 \u23a5\n \u23a5\n \u23bd\u23bd\u23bd \u23a5\n \u2572\u2571 2 \u22c5\u2148 \u23a5\n \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5\n 4 \u23a5\n \u23a5\n \u2148\u22c5\u03c0 \u23a5\n \u2500\u2500\u2500 \u23a5\n \u23bd\u23bd\u23bd 4 \u23a5\n \u2572\u2571 2 \u22c5\u212f \u23a5\n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5\n 4 \u23a6"
137 "text": [
138 "\u23a1 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ",
139 "\u23a2\u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 ",
140 "\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 ",
141 "\u23a2 4 4 4 4 4 4 4 ",
142 "\u23a2 ",
143 "\u23a2 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 ",
144 "\u23a2 \u2500\u2500\u2500 \u2500\u2500\u2500 \u2500\u2500\u2500 ",
145 "\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd ",
146 "\u23a2\u2572\u2571 2 \u2572\u2571 2 \u22c5\u212f \u2572\u2571 2 \u22c5\u2148 \u2572\u2571 2 \u22c5\u2148\u22c5\u212f -\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u212f -\u2572\u2571 2 \u22c5",
147 "\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500",
148 "\u23a2 4 4 4 4 4 4 4 ",
149 "\u23a2 ",
150 "\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd",
151 "\u23a2\u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148 \u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 ",
152 "\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500",
153 "\u23a2 4 4 4 4 4 4 4 ",
154 "\u23a2 ",
155 "\u23a2 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 ",
156 "\u23a2 \u2500\u2500\u2500 \u2500\u2500\u2500 \u2500\u2500\u2500 ",
157 "\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd ",
158 "\u23a2\u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148\u22c5\u212f -\u2572\u2571 2 \u22c5\u2148 \u2572\u2571 2 \u22c5\u212f -\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148\u22c5\u212f \u2572\u2571 2 \u22c5\u2148",
159 "\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500",
160 "\u23a2 4 4 4 4 4 4 4 ",
161 "\u23a2 ",
162 "\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ",
163 "\u23a2\u2572\u2571 2 -\u2572\u2571 2 \u2572\u2571 2 -\u2572\u2571 2 \u2572\u2571 2 -\u2572\u2571 2 \u2572\u2571 2 ",
164 "\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 ",
165 "\u23a2 4 4 4 4 4 4 4 ",
166 "\u23a2 ",
167 "\u23a2 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 ",
168 "\u23a2 \u2500\u2500\u2500 \u2500\u2500\u2500 \u2500\u2500\u2500 ",
169 "\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd ",
170 "\u23a2\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u212f \u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 \u22c5\u2148\u22c5\u212f -\u2572\u2571 2 \u2572\u2571 2 \u22c5\u212f -\u2572\u2571 2 \u22c5",
171 "\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500",
172 "\u23a2 4 4 4 4 4 4 4 ",
173 "\u23a2 ",
174 "\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd",
175 "\u23a2\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148 \u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 ",
176 "\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500",
177 "\u23a2 4 4 4 4 4 4 4 ",
178 "\u23a2 ",
179 "\u23a2 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 ",
180 "\u23a2 \u2500\u2500\u2500 \u2500\u2500\u2500 \u2500\u2500\u2500 ",
181 "\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd ",
182 "\u23a2\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148\u22c5\u212f -\u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 \u22c5\u212f -\u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148\u22c5\u212f \u2572\u2571 2 \u22c5\u2148",
183 "\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500",
184 "\u23a3 4 4 4 4 4 4 4 ",
185 "",
186 " \u23bd\u23bd\u23bd \u23a4",
187 " \u2572\u2571 2 \u23a5",
188 " \u2500\u2500\u2500\u2500\u2500 \u23a5",
189 " 4 \u23a5",
190 " \u23a5",
191 " \u2148\u22c5\u03c0\u23a5",
192 " \u2500\u2500\u2500\u23a5",
193 " \u23bd\u23bd\u23bd 4 \u23a5",
194 "\u2148 -\u2572\u2571 2 \u22c5\u2148\u22c5\u212f \u23a5",
195 "\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u23a5",
196 " 4 \u23a5",
197 " \u23a5",
198 " \u23bd\u23bd\u23bd \u23a5",
199 " -\u2572\u2571 2 \u22c5\u2148 \u23a5",
200 " \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5",
201 " 4 \u23a5",
202 " \u23a5",
203 " \u2148\u22c5\u03c0 \u23a5",
204 " \u2500\u2500\u2500 \u23a5",
205 " \u23bd\u23bd\u23bd 4 \u23a5",
206 " -\u2572\u2571 2 \u22c5\u212f \u23a5",
207 " \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5",
208 " 4 \u23a5",
209 " \u23a5",
210 " \u23bd\u23bd\u23bd \u23a5",
211 " -\u2572\u2571 2 \u23a5",
212 " \u2500\u2500\u2500\u2500\u2500\u2500 \u23a5",
213 " 4 \u23a5",
214 " \u23a5",
215 " \u2148\u22c5\u03c0 \u23a5",
216 " \u2500\u2500\u2500 \u23a5",
217 " \u23bd\u23bd\u23bd 4 \u23a5",
218 "\u2148 \u2572\u2571 2 \u22c5\u2148\u22c5\u212f \u23a5",
219 "\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5",
220 " 4 \u23a5",
221 " \u23a5",
222 " \u23bd\u23bd\u23bd \u23a5",
223 " \u2572\u2571 2 \u22c5\u2148 \u23a5",
224 " \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5",
225 " 4 \u23a5",
226 " \u23a5",
227 " \u2148\u22c5\u03c0 \u23a5",
228 " \u2500\u2500\u2500 \u23a5",
229 " \u23bd\u23bd\u23bd 4 \u23a5",
230 " \u2572\u2571 2 \u22c5\u212f \u23a5",
231 " \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5",
232 " 4 \u23a6"
233 ]
96 }
234 }
97 ],
235 ],
98 "collapsed": false,
236 "prompt_number": 6
99 "prompt_number": 6,
100 "input": "m"
101 },
237 },
102 {
238 {
103 "cell_type": "code",
239 "cell_type": "code",
240 "collapsed": false,
241 "input": [
242 "represent(Fourier(0,3), nqubits=3)*4/sqrt(2)"
243 ],
104 "language": "python",
244 "language": "python",
105 "outputs": [
245 "outputs": [
106 {
246 {
247 "latex": [
248 "$$\\left(\\begin{smallmatrix}1 & 1 & 1 & 1 & 1 & 1 & 1 & 1\\\\1 & \\omega & \\omega^{2} & \\omega^{3} & \\omega^{4} & \\omega^{5} & \\omega^{6} & \\omega^{7}\\\\1 & \\omega^{2} & \\omega^{4} & \\omega^{6} & 1 & \\omega^{2} & \\omega^{4} & \\omega^{6}\\\\1 & \\omega^{3} & \\omega^{6} & \\omega & \\omega^{4} & \\omega^{7} & \\omega^{2} & \\omega^{5}\\\\1 & \\omega^{4} & 1 & \\omega^{4} & 1 & \\omega^{4} & 1 & \\omega^{4}\\\\1 & \\omega^{5} & \\omega^{2} & \\omega^{7} & \\omega^{4} & \\omega & \\omega^{6} & \\omega^{3}\\\\1 & \\omega^{6} & \\omega^{4} & \\omega^{2} & 1 & \\omega^{6} & \\omega^{4} & \\omega^{2}\\\\1 & \\omega^{7} & \\omega^{6} & \\omega^{5} & \\omega^{4} & \\omega^{3} & \\omega^{2} & \\omega\\end{smallmatrix}\\right)$$"
249 ],
107 "output_type": "pyout",
250 "output_type": "pyout",
108 "latex": "$$\\left(\\begin{smallmatrix}1 & 1 & 1 & 1 & 1 & 1 & 1 & 1\\\\1 & \\omega & \\omega^{2} & \\omega^{3} & \\omega^{4} & \\omega^{5} & \\omega^{6} & \\omega^{7}\\\\1 & \\omega^{2} & \\omega^{4} & \\omega^{6} & 1 & \\omega^{2} & \\omega^{4} & \\omega^{6}\\\\1 & \\omega^{3} & \\omega^{6} & \\omega & \\omega^{4} & \\omega^{7} & \\omega^{2} & \\omega^{5}\\\\1 & \\omega^{4} & 1 & \\omega^{4} & 1 & \\omega^{4} & 1 & \\omega^{4}\\\\1 & \\omega^{5} & \\omega^{2} & \\omega^{7} & \\omega^{4} & \\omega & \\omega^{6} & \\omega^{3}\\\\1 & \\omega^{6} & \\omega^{4} & \\omega^{2} & 1 & \\omega^{6} & \\omega^{4} & \\omega^{2}\\\\1 & \\omega^{7} & \\omega^{6} & \\omega^{5} & \\omega^{4} & \\omega^{3} & \\omega^{2} & \\omega\\end{smallmatrix}\\right)$$",
109 "prompt_number": 7,
251 "prompt_number": 7,
110 "text": "\u23a11 1 1 1 1 1 1 1 \u23a4\n\u23a2 \u23a5\n\u23a2 2 3 4 5 6 7\u23a5\n\u23a21 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u23a5\n\u23a2 \u23a5\n\u23a2 2 4 6 2 4 6\u23a5\n\u23a21 \u03c9 \u03c9 \u03c9 1 \u03c9 \u03c9 \u03c9 \u23a5\n\u23a2 \u23a5\n\u23a2 3 6 4 7 2 5\u23a5\n\u23a21 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u23a5\n\u23a2 \u23a5\n\u23a2 4 4 4 4\u23a5\n\u23a21 \u03c9 1 \u03c9 1 \u03c9 1 \u03c9 \u23a5\n\u23a2 \u23a5\n\u23a2 5 2 7 4 6 3\u23a5\n\u23a21 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u23a5\n\u23a2 \u23a5\n\u23a2 6 4 2 6 4 2\u23a5\n\u23a21 \u03c9 \u03c9 \u03c9 1 \u03c9 \u03c9 \u03c9 \u23a5\n\u23a2 \u23a5\n\u23a2 7 6 5 4 3 2 \u23a5\n\u23a31 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u23a6"
252 "text": [
253 "\u23a11 1 1 1 1 1 1 1 \u23a4",
254 "\u23a2 \u23a5",
255 "\u23a2 2 3 4 5 6 7\u23a5",
256 "\u23a21 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u23a5",
257 "\u23a2 \u23a5",
258 "\u23a2 2 4 6 2 4 6\u23a5",
259 "\u23a21 \u03c9 \u03c9 \u03c9 1 \u03c9 \u03c9 \u03c9 \u23a5",
260 "\u23a2 \u23a5",
261 "\u23a2 3 6 4 7 2 5\u23a5",
262 "\u23a21 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u23a5",
263 "\u23a2 \u23a5",
264 "\u23a2 4 4 4 4\u23a5",
265 "\u23a21 \u03c9 1 \u03c9 1 \u03c9 1 \u03c9 \u23a5",
266 "\u23a2 \u23a5",
267 "\u23a2 5 2 7 4 6 3\u23a5",
268 "\u23a21 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u23a5",
269 "\u23a2 \u23a5",
270 "\u23a2 6 4 2 6 4 2\u23a5",
271 "\u23a21 \u03c9 \u03c9 \u03c9 1 \u03c9 \u03c9 \u03c9 \u23a5",
272 "\u23a2 \u23a5",
273 "\u23a2 7 6 5 4 3 2 \u23a5",
274 "\u23a31 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u23a6"
275 ]
111 }
276 }
112 ],
277 ],
113 "collapsed": false,
278 "prompt_number": 7
114 "prompt_number": 7,
115 "input": "represent(Fourier(0,3), nqubits=3)*4/sqrt(2)\n"
116 },
279 },
117 {
280 {
118 "source": "<h2>QFT in Action</h2>",
281 "cell_type": "markdown",
119 "cell_type": "markdown"
282 "source": [
283 "<h2>QFT in Action</h2>"
284 ]
120 },
285 },
121 {
286 {
122 "source": "Build a 3 qubit state to take the QFT of.",
287 "cell_type": "markdown",
123 "cell_type": "markdown"
288 "source": [
289 "Build a 3 qubit state to take the QFT of."
290 ]
124 },
291 },
125 {
292 {
126 "cell_type": "code",
293 "cell_type": "code",
294 "collapsed": false,
295 "input": [
296 "state = (Qubit('000') + Qubit('010') + Qubit('100') + Qubit('110'))/sqrt(4); state"
297 ],
127 "language": "python",
298 "language": "python",
128 "outputs": [
299 "outputs": [
129 {
300 {
301 "latex": [
302 "$$\\frac{1}{2} \\left({\\left|000\\right\\rangle } + {\\left|010\\right\\rangle } + {\\left|100\\right\\rangle } + {\\left|110\\right\\rangle }\\right)$$"
303 ],
130 "output_type": "pyout",
304 "output_type": "pyout",
131 "latex": "$$\\frac{1}{2} \\left({\\left|000\\right\\rangle } + {\\left|010\\right\\rangle } + {\\left|100\\right\\rangle } + {\\left|110\\right\\rangle }\\right)$$",
132 "prompt_number": 8,
133 "png": "iVBORw0KGgoAAAANSUhEUgAAAP4AAAAiCAYAAAB/amQFAAAABHNCSVQICAgIfAhkiAAABR5JREFU\neJztnFtoHFUYx3/bJNamphoraRvFVq2YQgQt+iBKKyqiguLlIYJQQX3wQbG+FC8g61MplGoror3g\nBXzwpYhI9UG0iohaBUWrBkGFWm94b1Mqac368M24k3Eu58yeMzuZ/X6w7M6Z/358/z2ZmXMNKIqi\nZDAM9Hc7CUVRymE+sAb4BljR3VQURXHBPAPNBDAEnOU5F0VRKkgLfeIrSi0weeIrilIzev3CPx24\nuNtJlEQveQX1m0mfReAmsBX40zKhKANIgoeAG4HJ2Pn5wL3AzcAFwBTwc0IcV7op4G5gbyE3dsT9\nmnoAaAAbgQ+A6RRNlb2GuPBhqpsrfk11RfyeA/yRn342nfbx+xFzpwTHzdj5PuAj4KHgeBHwCbDO\ns+4eYIm5jcI0I59Ncwu1TyK//2kpsavsNcSlj7r4NdUV9bsRufgL0wgS62RkfzNwbuS4GTt/G/AX\n0ioIWQccYXbyrnWnAvcbeohj22KyyW0EeBl4D/ia7D+MKnv14aMOfsuo32HgnYy4mdwOPIPccV4E\n1heIcT7wVKysGfncAD4DXopplgIzwAZPupBHKTbescdC27TMbQA4Mfi8mfQ/jCp7Bfc+6uK3rPq9\nBdgUD2rygzwP3AFcBNwKPG7wnTgbgJ0Z588ExoEPY+U/Ad8BV3nShbwGXJfpIJmFBb5jmtsx4G+H\n8ULK9ArufdTFb1n1uxu4nPZNBihnVL8PuAzpk6SxLHg/nHBuCljpSRfyPnBJRn4usc3NdbwyvdpQ\nh7r1gQu/vwA3RQvKuPDHgYNIsySNpcH7VMK5I7QHBF3rohwEzsjI0RVFcnMdryyvNtShbn3gwu8k\nch3+R3jhtzy8QkaB33LMLQjejyWcayFTGT50UUaAX3PydEGR3FzHK8urDXWoWx+48DsJLI8Kwt12\njU6zy2AYOJqj+TLj3EKkqeJDFzII/INZn6tTbHNzHa9MrzbUoW594MLvAdotB6Ccbba/kz8N+AVw\nnPbdLcog8KMnXcgEMmORRAPYlhLrPGBXQvkM8CDJLR3b3PKoslcb6lC3PnDhdzmxhTxlXPg/AGM5\nmmngK/7fDxtEVvrt86QLWQk8m5JbC9hObFQ04ELg6YTyGdJXTNnmlkeVvdpQh7r1gQu/q4DvowVl\nXPj7kabHMrKfZp8iU4ZR1gAnMHsq0LVuNbJGIYv9KeWHDb6bhGluruN1w6sNdahbH3Tqd4xY66WM\nUf0ZZG5xVY7uBeBqZncLrkfWL7/hUXcD8EqeCceY5uY6Xje82lCHuvVBp37PBl6PFpg88RcAdyFr\ngA8Az5G94SCJTcHrzQzNHuABZMHBVmQ24Eqkz+JLtwiZJjlu6adTTHLrB+5DBmXuDMp2I5sw9gJv\nW8brllfXPkx1VfdbVv1OAK8SWweQN5o/D3gCeATp12xBmhxrkea7DduAj2n3P5aQvOuqH2myHEWm\nIZKmMVzphpDf4JCpiRhvIauiTEjym5VbH3BtSqxvgc8Tyqvo1bUPU13V/ZZRv4sRH2uRQXZjxpE+\n0EhwPIoMiFxqEySS9A5i0wpznDK2fFaFXvIK9fC7BdknY80Q8BjSjAC5AbQwvxPGCffj1wXb5bVz\nmV7yCvXwu8JVoPXIZoGBPKGiKPVgDHgXae4ritIDjCL985OD417/X32KUnsWAw/Tbt6vBq7pXjqK\nonRK3nTeScjE/zTtHXejwBXI1j9FUeYgeQt4BpEFA1Fa6EWvKIqiKIqiKIqiKIqiKF3nX7rsUf7i\n3lIWAAAAAElFTkSuQmCC\n",
305 "png": "iVBORw0KGgoAAAANSUhEUgAAAP4AAAAiCAYAAAB/amQFAAAABHNCSVQICAgIfAhkiAAABR5JREFU\neJztnFtoHFUYx3/bJNamphoraRvFVq2YQgQt+iBKKyqiguLlIYJQQX3wQbG+FC8g61MplGoror3g\nBXzwpYhI9UG0iohaBUWrBkGFWm94b1Mqac368M24k3Eu58yeMzuZ/X6w7M6Z/358/z2ZmXMNKIqi\nZDAM9Hc7CUVRymE+sAb4BljR3VQURXHBPAPNBDAEnOU5F0VRKkgLfeIrSi0weeIrilIzev3CPx24\nuNtJlEQveQX1m0mfReAmsBX40zKhKANIgoeAG4HJ2Pn5wL3AzcAFwBTwc0IcV7op4G5gbyE3dsT9\nmnoAaAAbgQ+A6RRNlb2GuPBhqpsrfk11RfyeA/yRn342nfbx+xFzpwTHzdj5PuAj4KHgeBHwCbDO\ns+4eYIm5jcI0I59Ncwu1TyK//2kpsavsNcSlj7r4NdUV9bsRufgL0wgS62RkfzNwbuS4GTt/G/AX\n0ioIWQccYXbyrnWnAvcbeohj22KyyW0EeBl4D/ia7D+MKnv14aMOfsuo32HgnYy4mdwOPIPccV4E\n1heIcT7wVKysGfncAD4DXopplgIzwAZPupBHKTbescdC27TMbQA4Mfi8mfQ/jCp7Bfc+6uK3rPq9\nBdgUD2rygzwP3AFcBNwKPG7wnTgbgJ0Z588ExoEPY+U/Ad8BV3nShbwGXJfpIJmFBb5jmtsx4G+H\n8ULK9ArufdTFb1n1uxu4nPZNBihnVL8PuAzpk6SxLHg/nHBuCljpSRfyPnBJRn4usc3NdbwyvdpQ\nh7r1gQu/vwA3RQvKuPDHgYNIsySNpcH7VMK5I7QHBF3rohwEzsjI0RVFcnMdryyvNtShbn3gwu8k\nch3+R3jhtzy8QkaB33LMLQjejyWcayFTGT50UUaAX3PydEGR3FzHK8urDXWoWx+48DsJLI8Kwt12\njU6zy2AYOJqj+TLj3EKkqeJDFzII/INZn6tTbHNzHa9MrzbUoW594MLvAdotB6Ccbba/kz8N+AVw\nnPbdLcog8KMnXcgEMmORRAPYlhLrPGBXQvkM8CDJLR3b3PKoslcb6lC3PnDhdzmxhTxlXPg/AGM5\nmmngK/7fDxtEVvrt86QLWQk8m5JbC9hObFQ04ELg6YTyGdJXTNnmlkeVvdpQh7r1gQu/q4DvowVl\nXPj7kabHMrKfZp8iU4ZR1gAnMHsq0LVuNbJGIYv9KeWHDb6bhGluruN1w6sNdahbH3Tqd4xY66WM\nUf0ZZG5xVY7uBeBqZncLrkfWL7/hUXcD8EqeCceY5uY6Xje82lCHuvVBp37PBl6PFpg88RcAdyFr\ngA8Az5G94SCJTcHrzQzNHuABZMHBVmQ24Eqkz+JLtwiZJjlu6adTTHLrB+5DBmXuDMp2I5sw9gJv\nW8brllfXPkx1VfdbVv1OAK8SWweQN5o/D3gCeATp12xBmhxrkea7DduAj2n3P5aQvOuqH2myHEWm\nIZKmMVzphpDf4JCpiRhvIauiTEjym5VbH3BtSqxvgc8Tyqvo1bUPU13V/ZZRv4sRH2uRQXZjxpE+\n0EhwPIoMiFxqEySS9A5i0wpznDK2fFaFXvIK9fC7BdknY80Q8BjSjAC5AbQwvxPGCffj1wXb5bVz\nmV7yCvXwu8JVoPXIZoGBPKGiKPVgDHgXae4ritIDjCL985OD417/X32KUnsWAw/Tbt6vBq7pXjqK\nonRK3nTeScjE/zTtHXejwBXI1j9FUeYgeQt4BpEFA1Fa6EWvKIqiKIqiKIqiKIqiKF3nX7rsUf7i\n3lIWAAAAAElFTkSuQmCC\n",
134 "text": "\u2758000\u27e9 + \u2758010\u27e9 + \u2758100\u27e9 + \u2758110\u27e9\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 2"
306 "prompt_number": 8,
307 "text": [
308 "\u2758000\u27e9 + \u2758010\u27e9 + \u2758100\u27e9 + \u2758110\u27e9",
309 "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",
310 " 2"
311 ]
135 }
312 }
136 ],
313 ],
137 "collapsed": false,
314 "prompt_number": 8
138 "prompt_number": 8,
139 "input": "state = (Qubit('000') + Qubit('010') + Qubit('100') + Qubit('110'))/sqrt(4); state\n"
140 },
315 },
141 {
316 {
142 "source": "Perform the QFT.",
317 "cell_type": "markdown",
143 "cell_type": "markdown"
318 "source": [
319 "Perform the QFT."
320 ]
144 },
321 },
145 {
322 {
146 "cell_type": "code",
323 "cell_type": "code",
324 "collapsed": false,
325 "input": [
326 "qapply(fourier*state)"
327 ],
147 "language": "python",
328 "language": "python",
148 "outputs": [
329 "outputs": [
149 {
330 {
331 "latex": [
332 "$$\\frac{1}{2} \\sqrt{2} {\\left|000\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|100\\right\\rangle }$$"
333 ],
150 "output_type": "pyout",
334 "output_type": "pyout",
151 "latex": "$$\\frac{1}{2} \\sqrt{2} {\\left|000\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|100\\right\\rangle }$$",
152 "prompt_number": 9,
153 "png": "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\nMHDVAAAAAElFTkSuQmCC\n",
335 "png": "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\nMHDVAAAAAElFTkSuQmCC\n",
154 "text": "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n\u2572\u2571 2 \u22c5\u2758000\u27e9 \u2572\u2571 2 \u22c5\u2758100\u27e9\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 2 2"
336 "prompt_number": 9,
337 "text": [
338 "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ",
339 "\u2572\u2571 2 \u22c5\u2758000\u27e9 \u2572\u2571 2 \u22c5\u2758100\u27e9",
340 "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",
341 " 2 2"
342 ]
155 }
343 }
156 ],
344 ],
157 "collapsed": false,
345 "prompt_number": 9
158 "prompt_number": 9,
159 "input": "qapply(fourier*state)\n"
160 }
346 }
161 ]
347 ]
162 }
348 }
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
General Comments 0
You need to be logged in to leave comments. Login now