##// END OF EJS Templates
Merge pull request #830 from minrk/stream...
Merge pull request #830 from minrk/stream Several improvements to stdout/stderr handling and visual layout of cells. Now stdout and stderr are kept contiguous (in a single div) if they are being written to continuously, and stderr is shown with a light red background to help distinguish from stdout. Further, input cells now have a light gray background to help distinguish them from plain stdout areas.

File last commit:

r4637:d919e2ec
r4906:ca814f85 merge
Show More
qft.ipynb
163 lines | 35.6 KiB | text/plain | TextLexer
Brian E. Granger
Converting notebooks to JSON format.
r4634 {
"nbformat": 2,
Brian E. Granger
Implemented metadata for notebook format.
r4637 "metadata": {
"name": "qft"
},
Brian E. Granger
Converting notebooks to JSON format.
r4634 "worksheets": [
{
"cells": [
{
"source": "<h1>Quantum Fourier Transform</h1>",
"cell_type": "markdown"
},
{
"cell_type": "code",
"language": "python",
"outputs": [],
"collapsed": true,
"prompt_number": 1,
"input": "%load_ext sympyprinting"
},
{
"cell_type": "code",
"language": "python",
"outputs": [],
"collapsed": true,
"prompt_number": 2,
"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"
},
{
"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.",
"cell_type": "markdown"
},
{
"source": "<h2>QFT Gate and Circuit</h2>",
"cell_type": "markdown"
},
{
"source": "Build a 3 qubit QFT and decompose it into primitive gates.",
"cell_type": "markdown"
},
{
"cell_type": "code",
"language": "python",
"outputs": [
{
"output_type": "pyout",
"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}$$",
"prompt_number": 3,
"png": "iVBORw0KGgoAAAANSUhEUgAAATkAAAAcCAYAAAAa98jAAAAABHNCSVQICAgIfAhkiAAACalJREFU\neJztnHuQHEUdxz/hLrkLgQsQElFEy0RLNFaImkJDAokaA1Ee4qM0RhEIFiIiVUTUmBBBSkERleKp\nqMhDpPRQeYg5iWRNIB6CKAU+UiLxULF4nAoJCBhy/vH7jTs7293TM7O7c3PpT9XW3u6v9/fr/t5v\nu6cfsxAIBAI7Kd3Ax4FrgOuAHwPLgUnAT4F1wLPACLAdGAR2189+GhhS2wjwW+CYmO9jgUfVtg34\ngkd9fgQc77CPBwaAB9Tvv4FbgbXARuBB4GbgtR6xstKjsR/U2M8A9wDnqn02sAF4TO3/BO4ElmaI\nMRk4DvgGcIfGWwcsVvtStbcSVw7c3AL/Y0W3VVq/p5HvwVpgi773KPAzfdyr791WMF5Ep3NiLOTD\n/5mIVHo1sEvs/ZXAZqSBAF/UYN80+JihtustMQ4Efgns5lGfd6qvNR5lD9eypybeH48kwzPAmz38\n5OEdGnulxX6B2hdk9LsYGTTOB+YiyQaSXN8Gvgw8B7w8g89TUuy+OWDipYgWvlRJN2jW7j7gxJh/\nqHd8SR1WA1cafGbVrNM5MRbyoYEfAJdbbA8DJ+jfKzTYRYZyr1bbTRY/nwemedRlEnC/+rrEo3zU\n8c402PZT27UefvJwvvo/wGK/F9gKdHn66wYuRa6Y328p0wv8GfiLdy1lZHxjShnfHLBxKXCQZ32q\nohs0azcTuNBQbgCZ4fQl3j8I6QBN+GhWVk5UOR+amIyMAIst9gHgZfr3sdg7ucvUtslgew1y2evD\nuYiAI8APPcoPAsPAOIPtlepnvWfsrNwNPG6JPQXYgUxlfPmcfsb2v4j4lj58eB/wqZQyWXLAxhTg\nD8B0jzpVQTcwa3cmzQNqN/Il/LXBx1HAeyz+fTQrIyeqng9NvB3pCE622FfH/j4Scye3CLnKexK5\nlE1yMTJ9TONVyAgyHmmYqcOMMwn4L3CjxX6M1ne5R+ys7I6M3LbpeTTl/oynv/nqzzUNiFiF37pE\nD/Ab6munNrLkgIsPIIOdiyroBnbtTOvEByJ1/qrBdgjuL7pLs7Jyosr5YGRvDfIsMq+fj71Dmkdz\nJ9eDzN0nIIuvjyU+czTwNs+63EI9IYaRBUkXb9X6fNJg60JGki2kf8nzsERj29Y1LlT7PA9fuyBT\nje3I1Wcai5ARLo0PYb7qTpIlB9L4I269q6Ab+GsH8Amkzkd7lk9i0qzMnKhqPjg5nfrOabQDejGw\nR6Lc/jR3cmuAI/TvuxFxosvOHszrFyaWAWfHXv8e2b1ycbbWJzn33xfZCepHLr3bwTka+3bkUjr5\n2IrUf4KHrwPU1w0trmM/8C7Psr45kMY64CSHvQq6QTbtbkRmHr4daBKTZmXnRBXzIZX9gbOQLdvn\nNHB/osw0Gju5GTROFQfUvqe+XoHfKNSHbA3vGnvvNvXl6qQ2AM8ju72X6eMKbccij7hF2AT8C/c6\ngu/RgZORtn62NVUDpF5PAC/M8BmfHEjjIuA7Dvto1w2yaTcOOdpwf4F4Js1GQ05ULR8yMRN4CFnv\n6o29301jJ3cTjYuw16p9BiLkWZ7xLgDenXjve+rL1kn2IsdD7vKM0Up2Rf7pP7HYo7XLMz39XaXl\nfUbYfWkcDGxMRQYAU/L4YMuBNE4BahZbFXSDbNrNwv8kgA2TZqMtJ6qQD0DjeReQQ7wmfgd8VwPE\nBdmOjAQgndKQlo14XJ+nAKcBX/Go02xkwfQEGi9T56p9H8vn3oBMh2seMVrNXGSNYqPFPl+ff+Hp\nb0ifH/YoewaSGGnsg/yvRlLKZc2BNDYj56RMVEE38NcOZGMB5GonLybNysqJKucD0NjJ7QYsdJTt\nQ04f/yfx/jCykLiG5kvpYX1egjTuCdyMQzrCBcBhiUe0lmfr5KLkqjn8vxjZKj8J+BqyoJrGHGTk\nOA85TGw62xfFvt3iYx6SdIOedanpc9rdGQu17HYPnxNIP1eUJwemIyfgbWzDfuA7j26uuDV9zqob\nFNcuIq2T88knk2Y1fc7TNjDrldaurPmQt20RRfLBJzZLEGFmGGzTgEeANxlsdyELkqZzbx9DevpB\nmq8aTSxHFjhNvBfznQwR6zAfvozzc0QMkDW6tLn9VGQhNGI18CeaR64aMlXuMfjoUVvyH+eqy0SN\ns57GU/Rx5iBrjvG6uHxGB6Fd6y9ZcmAyosd1uNefjqfx6j5Ojey6ueLm1Q2KaxfxD62DCd98MmmW\nt20uvdLalSUfirQtokb2fMgSm/PU0I/crRAxHemkVlgqthbZ+TQJvxQR8WDLZ+MchszxbSPLW9TX\nOQZbH/AUsptr4/XA32Ovu5FzfK4zS4dqmajjjHaT46PpHshIdofDxwj1++986/Ii5Oq3H/knRkxF\nbiFaRePAkeZzPJKwCy31hHw5cDjuTu5LyACUJI9uPnGz6gat0Q7kjoER7AvrPvkEds3ytC3CpFda\nu7LkQ9G2FckH39hcDeyF9My3Ildoa5Eb4123Y1yO/ST0AvXr4nWIkNHW9CCNHeZEZPQaVvuT+nqW\nPjYCf1XbVqSnX2aIs4zmTYkHcC/k9lI/DgPSWe9ARr7ZGutv1G/O3oicHgc5eHwnslM0gox665Fk\n8a3LC5BDj7cg9/leidzyYrpnz8fnJuAjlrZCvhxI6+RuQNaIIoro5hs3i25QTLs5yM33G6ivb23T\n1wPAS2JlXfkUJ6lZnKxti7Dp5cqJLPmQt22tyAff2GOeU2lesLwP9y+bJLkeuTd2NNQlj88zMJ/C\nL0JaJ7eZ+jSwk3GzUJZ2tnxqh2Y2vdrRLuhs25yxfdbJxgpbaN5FmoScafLhROTEuW23qZN1yevz\nKmS9KcuWfxFmIT95ZbqHczRRhna2fOq0Zu3IiTLb1hR7Z+rk7qFxx6UL2UF7yOOzR+rzCiT59yqx\nLkV8DiHTHJ+frCpKF3IoeyV+Ry/KpNPa2fKpDM1anRNltq3V39NKMoQcFQCZt8e3omchC7tJDqZx\nvv9B4BVtrks7ffYBv0La2wps06DTgK+3KEaWuHnplHaufGqnZi69WpUTZbUtLfZOxSHIztdxyH13\ns2O27yMLyHFmIpsZI7HH07TmCthVl3b73Bv5YcUidAMfRW7j24bs7EWL0fshJ/7bMVNwxS1CJ7Rz\n5VO7NPPVq2hOlNE2n9i5b/GpOj3I2b44XchOzhWx93ppvgH5eZp/WaXVdemEz6JxxyE7fXGeQpKt\nG9nd2lHAf564raCd2rnyqV2aZdGrSE6U0Taf2IEEHy67AoFAINAujsB+T10gEAhUHtutMoFAIBAI\nBAKBQCAQCAQCgUAgEAgEPPkfTF7L9pqXFtoAAAAASUVORK5CYII=\n",
"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"
}
],
"collapsed": false,
"prompt_number": 3,
"input": "fourier = QFT(0,3).decompose(); fourier\n"
},
{
"cell_type": "code",
"language": "python",
"outputs": [
{
"output_type": "pyout",
"prompt_number": 4,
"text": "&lt;sympy.physics.quantum.circuitplot.CircuitPlot object at 0x4992910&gt;"
},
{
"output_type": "display_data",
"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"
}
],
"collapsed": false,
"prompt_number": 4,
"input": "circuit_plot(fourier, nqubits=3)"
},
{
"source": "The QFT circuit can be represented in various symbolic forms.",
"cell_type": "markdown"
},
{
"cell_type": "code",
"language": "python",
"outputs": [],
"collapsed": true,
"prompt_number": 5,
"input": "m = represent(fourier, nqubits=3)"
},
{
"cell_type": "code",
"language": "python",
"outputs": [
{
"output_type": "pyout",
"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)$$",
"prompt_number": 6,
"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"
}
],
"collapsed": false,
"prompt_number": 6,
"input": "m"
},
{
"cell_type": "code",
"language": "python",
"outputs": [
{
"output_type": "pyout",
"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)$$",
"prompt_number": 7,
"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"
}
],
"collapsed": false,
"prompt_number": 7,
"input": "represent(Fourier(0,3), nqubits=3)*4/sqrt(2)\n"
},
{
"source": "<h2>QFT in Action</h2>",
"cell_type": "markdown"
},
{
"source": "Build a 3 qubit state to take the QFT of.",
"cell_type": "markdown"
},
{
"cell_type": "code",
"language": "python",
"outputs": [
{
"output_type": "pyout",
"latex": "$$\\frac{1}{2} \\left({\\left|000\\right\\rangle } + {\\left|010\\right\\rangle } + {\\left|100\\right\\rangle } + {\\left|110\\right\\rangle }\\right)$$",
"prompt_number": 8,
"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",
"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"
}
],
"collapsed": false,
"prompt_number": 8,
"input": "state = (Qubit('000') + Qubit('010') + Qubit('100') + Qubit('110'))/sqrt(4); state\n"
},
{
"source": "Perform the QFT.",
"cell_type": "markdown"
},
{
"cell_type": "code",
"language": "python",
"outputs": [
{
"output_type": "pyout",
"latex": "$$\\frac{1}{2} \\sqrt{2} {\\left|000\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|100\\right\\rangle }$$",
"prompt_number": 9,
"png": "iVBORw0KGgoAAAANSUhEUgAAANAAAAAkCAYAAAD4p7R7AAAABHNCSVQICAgIfAhkiAAABZBJREFU\neJzt3HuoZVUdwPHPHW/jndEcLa1rTtofaQY5QxSpo85cSwJj1ATFB8rIdKuxmogJ0nxOYY3+4SP6\nJ6lImIEoRhKNfCGoJCgOgoMjgX/I0EMlFYuRolFuf/zOxnP23edxz9mPc6/rC5vDXfu3915nf89e\ne63f2vuSSCQSiUQTTDRdgT7MlbCPcf+OS53j8LcS9rPoPZ6AqZqPuRsfqvmYS5nksGSWDRCzGpdj\nD6arrU4Hn8V+vFnjMZcqyWGDnIu1ojv1iRqPu0vc/hOjkxxWxOQAMQ9WXov5nIS38fcGjr0USQ7H\ngDpbr1/ixJqO9X4iOSyZQcZAdfNxMdB9qemKlMSmpivQAEvNIV08DtKFq5vv4/Ye69dgVgyMn8X9\n2FcQt7b1+Xyu/Ep8QQxsX8G9+GfB9mXFfUBkv/b3+E5LjX4OGd1jxplYj592WT82Huu4/R8j0p7d\nOB/34XMim7QD/8EFBbEzraWdG/FnLG/9fZUQs6LCuMNxTddvVC/j4JDRPRLzQufg3/hVl+OMjcfl\n4uR/atgdDMgtOKvLusPwAo7KlT+Ed0Tr0M6MzhO/Cv/CJW1ly/A67qwwDm4SLdhCWam8eZtxcMjo\nHuF7eFxk+eYUX0Bj43ET7hYtxm9ala+CI/BAj/XrxYz2JbnyLeIkzubKZ3Se+GuFoPyk3m91ZorK\njoNTCuo9CJtx2RDb5RkXh4zusZ1J3S+gcfJYCj8Qt8puXIOv9Fh/tjhZT+bKN7bK78qVz+g88Y/g\n5S7HncOnK4rL+ElBbD9mccUQ21XFqA4Z3WM7vS6gWjzWkYWbxHYxGPyW4lvglDixf+qxn8dxnvnZ\nkE+2PrsNMjOmcaCg/O3W5wkVxWW8aL6MxUJZDhnd46DU4rGOC+gdcdVeh4/g4oKYzaJr0Ys5/NH8\n1uJSvKF/12HaeyelnazsyIriMnbjoj51HFfKcsjoHgelFo/ZBTRXwdLOQZH+ewBbc+smcaH+mZsi\nLhCpx2+LQV8vJsUPIc9E2/oq4jLWiMFzVVThsN1jVQ5ZmMdBqcXjsrbgspcifo7T8Pm2ssvwe7zb\nZZtuHCsGxt/B7waIL5pjILJC8FpFcRnnKa91LaIKh0Uey3TIwj0OSi0e655IfUz0IbeKPvCEmMDa\nuMD9TOEPol/+iwG32YszCspXtj5fqSiO6AYcUNzSwTdFC55ntfhRFiUSdrWWuinLIcN5HJQmPNbC\n1fivmHD7KrYtcPsJ0VLlB6Gn5/6e0Zm92SL62Hl24n9iPqCKOGLg3eup5CnRF88v20S3pmjdoT32\nVzWjOmR4j+30ysI14bEWDsdbuF5kbA7rHT6PW/G1XNlq3JArm9F54tcpnkj8B35dYRwxuTgM45bG\nzhjVIcN7bKfXBVSLxyYeJj2Ae/BDPKM4A9KNb4j+94T4cc3i67gZf+mz7R48LVr0jHX4KG6rMG4D\nnuhTt8XGKA4ZzWM7h7Q+i9LqY+PxGNHS7MCPdd7ShuVE8QzTQl71PVVkgrpli07JxW9oLe1Miz78\nTjEbv1f03/OUGfcjw7/PX9YdaFwcUo7HL4vEw3Otbd4VD3/+TDwNkVG5x35iJ0XW5bviS1/X2vFa\n0T8chY+J2+SgTOPkHuufEnXMyFqlgwWxK0QLs1/vf1xSRtwR4oc2DLNirDFKsmCcHFKOx2wcWMQ+\n85035nEN/uq9gdPRrR1/caE7SgzFZvG/DEYhOWyQKfFuR/ZY92px8tc1VqP3F2U8jZ0cjhHb8ajx\nfJM1MRjbJYeNcBoe1jlISywuksOGOBl3iJeyluGDzVYnMQTJYUMcL1J7WcbudHypueokhiA5rIh+\naewPi3fF2yeqjsRn8GpVlUqUSnJYIf0uoFXmT2zNiVx9YnGQHCYSiUQikUgkEolEohT+D0ZODNW4\nMHDVAAAAAElFTkSuQmCC\n",
"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"
}
],
"collapsed": false,
"prompt_number": 9,
"input": "qapply(fourier*state)\n"
}
]
}
]
}