##// 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
decompose.ipynb
280 lines | 53.9 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": "decompose"
},
Brian E. Granger
Converting notebooks to JSON format.
r4634 "worksheets": [
{
"cells": [
{
"source": "<h1>Gate Decomposition</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": "<h2>Example 1</h2>",
"cell_type": "markdown"
},
{
"source": "Create a symbolic controlled-Y gate",
"cell_type": "markdown"
},
{
"cell_type": "code",
"language": "python",
"outputs": [
{
"output_type": "pyout",
"latex": "$$C_{1}{\\left(Y_{0}\\right)}$$",
"prompt_number": 3,
"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",
"text": "C \u239bY \u239e\n 1\u239d 0\u23a0"
}
],
"collapsed": false,
"prompt_number": 3,
"input": "CY10 = CGate(1, Y(0)); CY10\n"
},
{
"source": "Decompose it into elementary gates and plot it",
"cell_type": "markdown"
},
{
"cell_type": "code",
"language": "python",
"outputs": [
{
"output_type": "pyout",
"latex": "$$S_{0} CNOT_{1,0} S_{0} Z_{0}$$",
"prompt_number": 4,
"png": "iVBORw0KGgoAAAANSUhEUgAAAIgAAAAcCAYAAAC6TfcHAAAABHNCSVQICAgIfAhkiAAABglJREFU\naIHtmn+slmMYxz9v5zjntJLTcaIiTURpxPphNVFMdljlN/1hTNootBSlmjIRE6ZVSGTTVKsIbf04\n8zNkRs2vP9CEqCX9GFEn6fjjez/e+zzv/fx4n/d5S/V+t7Oz576u+7qv+3vfz31f1/W8UEIJCVEO\n3A3MBxYCy4BhQAtgeQJ7/YApwErgXeA94FGgJdAaWGTpDgbWAL8CjUbPjxHAFiPfB3wGVPt0WgJj\nje9zgaVm/GEOvT+MrR+AVca/v03bx6bfGmCHaesbc975Ig3eK8j6+Q+wEXgLzWEl8IuRjUrqZHPj\nzCSgmdV+P/CNcTwuWqPJrgduBNpYsv7ACuBD4FlH34VowX4DKh3yY4FNQEeHbLCRDafpHNoA3wKv\nW+1DgU+BdpZeJbDXtNuoQeR3cIxZKNLi/VK0MaaSy1tfYA+wBMgkdXQx8HyAbDNwW0w7A9BurUeL\n6cI9aDdf62svQ4RMMPKbHH1PBJ50tF8GbAW6BYx5trE5wjwvMLZs9DM60xz9l1MAuSFIi/engdsd\n7Z3Ry7YWqMrbO4Pj0JE9MEC+Cjg1hp1TgJ3AG8AxIXpd0W4/3tfeAxiPFm4f8JGj73XAlb62/sBf\nwPUR/m0BvkMbd55DPhFtkDqHbH6E7SRIi3fQ9ejnvBbNdwNNT/G8cQUiZmSAfFIMG2XA+2jCUZOq\nRPGDH6PJ3vMLjU/dfTozaLqxeqBYYnEMH9cAB9Ap09shXw3sB1o5ZLfEsJ8v0uAdFKvc4GurQi/Y\nduCMRN5ZqEXENADTgQsIPwFcGIUm64or/KgArnK0z7fGvSjA3iu+51VG75IY4242urUOWTnaaK6N\nWyykwbsLGfTC7EXXZiq4FznaaP52A7PIzRKCUG/6dU44fobcgOxrtGheLFMDzLTkXc2YPxIdH1Qb\n3Q0B8t5G7opviolCeXdhOjophxbsnQ9dgAfJXhWNKPKNQhlayN8LGLsbMNnXdidNA8shKCvyMNzI\nF8SwP8jovhwgH2vk/vjmYCAp7y6MNP0npONaMLoBP6G6QFT0e45xam1M26478Q4UbNpohd6oL83z\nE0B7S/6YGfeRGGO+Y3RdVxsosD5AbuB8sJEP734MQleWPyvKAJcndWh8iGwa2tHNI2y0RlnJ0hjj\n1QHXONpfwk3IHLSw/ci9grx0eVzEmD2N3qIAeQbVOb6KsJMm0uDdRg/0Mq1E8ZSNgcBdeXln0NIY\nDMIsVFH00AdNbAyKsO17fz3wfYwxnwloD1q889DiLkebxUYvI1sdMl5z4AOU4gadDt4JODvEjoeL\ngYdi6IVxlSbvoKLhFuBz3LWnZeQWFqNsAnqb9wOnOWQnoMLTAPNcgyp73u6cDtxn6Y9GJPdxDYQy\nl6cC5KcDDwf0A5HVSG6qWYYqpA2IdD/KgTdR2blXiH0v1vGnija6Ag+gzTY3RA+iuUqT92oUzP8M\nnOywNwB3ZTjM5n94HBVSlgBnWe2d0KKMsdomAi9azxeixbExBdiFUk6vbFwOnA88R3CGM4/wbwQ3\nowXs5JB1QKX5GTQtVfcCXkXpXlhGkEEnUCNugv2YSvQGieIqLd4rgLdRgnCuz4c2KIhvQOsS2z/7\nfmqLFq87KtVWo8LKHnS/25XMLmghPGxGC94C+NO0TQG+QJnGNFRy3wmsM5Pe7XN0Mnp7a82YQ8h+\nU7CxyOi5rrBNZoLDgRdQoFlpxp5D8FE+08ypHdlFWm3mVY8C4KSI4iot3sehE2Ib2XpRGdpoNea5\nEXgtT/8SYQX6gOThJDN4e7f6EYs4J0iaXBWD91CbzVw9YmCjMeKhhfm/I6G9IxlpclUM3kNtJt0g\n61AA5aEtOtr2JrR3JCNNrorBe6jNpBvkE7KRNejzelDKerShiqZFvjS5KgbvoTbLEhrdij5P16GU\nry2qYDYktHe4oT1wK0qFz0Q8bkNBeE/0660VqB6RJlfF4D3UZqE/esmgL477CrRzuKGCbGbgYRfZ\no74j+oRQb8nT5KoYvB+ta3lIcDWH/jtOKkgag5QQjCp0umw/1I6U8P9EhuSxXQkllFBCCSWUUEIJ\nwL9xjqSsQYpqzQAAAABJRU5ErkJggg==\n",
"text": "S \u22c5CNOT \u22c5S \u22c5Z \n 0 1,0 0 0"
}
],
"collapsed": false,
"prompt_number": 4,
"input": "CY10.decompose()\n"
},
{
"cell_type": "code",
"language": "python",
"outputs": [
{
"output_type": "pyout",
"prompt_number": 5,
"text": "&lt;sympy.physics.quantum.circuitplot.CircuitPlot object at 0x2c85f10&gt;"
},
{
"output_type": "display_data",
"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"
}
],
"collapsed": false,
"prompt_number": 5,
"input": "circuit_plot(CY10.decompose(), nqubits=2)"
},
{
"source": "<h2>Example 2</h2>",
"cell_type": "markdown"
},
{
"source": "Create a controlled-Z gate",
"cell_type": "markdown"
},
{
"cell_type": "code",
"language": "python",
"outputs": [
{
"output_type": "pyout",
"latex": "$$C_{0}{\\left(Z_{1}\\right)}$$",
"prompt_number": 6,
"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",
"text": "C \u239bZ \u239e\n 0\u239d 1\u23a0"
}
],
"collapsed": false,
"prompt_number": 6,
"input": "CZ01 = CGate(0, Z(1)); CZ01\n"
},
{
"source": "Decompose and plot it",
"cell_type": "markdown"
},
{
"cell_type": "code",
"language": "python",
"outputs": [
{
"output_type": "pyout",
"latex": "$$H_{1} CNOT_{0,1} H_{1}$$",
"prompt_number": 7,
"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",
"text": "H \u22c5CNOT \u22c5H \n 1 0,1 1"
}
],
"collapsed": false,
"prompt_number": 7,
"input": "CZ01.decompose()\n"
},
{
"cell_type": "code",
"language": "python",
"outputs": [
{
"output_type": "pyout",
"prompt_number": 8,
"text": "&lt;sympy.physics.quantum.circuitplot.CircuitPlot object at 0x472d550&gt;"
},
{
"output_type": "display_data",
"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"
}
],
"collapsed": false,
"prompt_number": 8,
"input": "circuit_plot(CZ01.decompose(), nqubits=2)"
},
{
"source": "<h2>Example 3</h2>",
"cell_type": "markdown"
},
{
"source": "Create a SWAP gate",
"cell_type": "markdown"
},
{
"cell_type": "code",
"language": "python",
"outputs": [
{
"output_type": "pyout",
"latex": "$$SWAP_{1,0}$$",
"prompt_number": 9,
"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",
"text": "SWAP \n 1,0"
}
],
"collapsed": false,
"prompt_number": 9,
"input": "SWAP10 = SWAP(1, 0); SWAP10\n"
},
{
"source": "Decompose and plot it",
"cell_type": "markdown"
},
{
"cell_type": "code",
"language": "python",
"outputs": [
{
"output_type": "pyout",
"latex": "$$CNOT_{1,0} CNOT_{0,1} CNOT_{1,0}$$",
"prompt_number": 10,
"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",
"text": "CNOT \u22c5CNOT \u22c5CNOT \n 1,0 0,1 1,0"
}
],
"collapsed": false,
"prompt_number": 10,
"input": "SWAP10.decompose()"
},
{
"cell_type": "code",
"language": "python",
"outputs": [
{
"output_type": "pyout",
"prompt_number": 11,
"text": "&lt;sympy.physics.quantum.circuitplot.CircuitPlot object at 0x7f082c973650&gt;"
},
{
"output_type": "display_data",
"png": "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\n"
}
],
"collapsed": false,
"prompt_number": 11,
"input": "circuit_plot(SWAP10.decompose(), nqubits=2)"
},
{
"source": "<h2>All together now</h2>",
"cell_type": "markdown"
},
{
"cell_type": "code",
"language": "python",
"outputs": [],
"collapsed": true,
"prompt_number": 12,
"input": "gates = [CGate(1,Y(0)), CGate(0,Z(1)), SWAP(1, 0)]"
},
{
"cell_type": "code",
"language": "python",
"outputs": [
{
"output_type": "display_data",
"latex": "$$C_{1}{\\left(Y_{0}\\right)} = S_{0} CNOT_{1,0} S_{0} Z_{0}$$",
"png": "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\nYII=\n",
"text": "C \u239bY \u239e = S \u22c5CNOT \u22c5S \u22c5Z \n 1\u239d 0\u23a0 0 1,0 0 0"
},
{
"output_type": "display_data",
"latex": "$$C_{0}{\\left(Z_{1}\\right)} = H_{1} CNOT_{0,1} H_{1}$$",
"png": "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\n",
"text": "C \u239bZ \u239e = H \u22c5CNOT \u22c5H \n 0\u239d 1\u23a0 1 0,1 1"
},
{
"output_type": "display_data",
"latex": "$$SWAP_{1,0} = CNOT_{1,0} CNOT_{0,1} CNOT_{1,0}$$",
"png": "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\n",
"text": "SWAP = CNOT \u22c5CNOT \u22c5CNOT \n 1,0 1,0 0,1 1,0"
},
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAJ8AAACOCAYAAAAvkdreAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAABEJJREFUeJzt3b1LI1sAhvF3khvBxIuaQm1sbQSxEPETsRMEsRELC8FG\nrNMIFnaCNlYWVhbRyk7/A238rASxEwvFlEYiGNDZQtx7ZW8W767ua2aeH0yTxMOZ8DBnnIFMEIZh\nUdLfAv6wIAzD0D0JxFPCPQHEF/HBhvhgQ3ywIT7YEB9siA82xAcb4oMN8cGG+GBDfLAhPtgQH2yI\nDzbEBxvigw3xwYb4YEN8sCE+2BAfbIgPNsQHG+KDDfHBhvhgQ3ywIT7YEB9siA82xAcb4oNN7OIr\nFos6OzvT/f29eyqxF5v4wjDUwsKCmpub1d/fr+bmZi0uLopfBfaJzW8yb21taXZ2VqVS6ftrmUxG\nGxsbmpiYMM4svmITX09Pjw4PD394fWBgQPv7+4YZoWJ8QRD86bkgZiqe84VhGKlteXlZtbW1b/Yx\nnU5rdXXVPre4brFZdh8fHzU6OqqDgwOVSiVlMhkNDAxoZ2dHNTU17unFUmzik16O5icnJ+ru7tbx\n8bG6urrcU4q1WMX3KggCxXC3v5zYXOfD10N8sCE+2BAfbIgPNsQHG+KDDfHBhvhgQ3ywIT7YEB9s\niA82xAcb4oMN8cGG+GBDfLAhPtgQH2yIDzbEBxvigw3xwYb4YEN8sCE+2BAfbIgPNsQHG+KDDfHB\nhvhgQ3ywIT7YEB9siA82xAcb4oMN8cEmMvFls1kFQfCuTdK7P5vNZs17Fl2ReQLRZz1ViKcVfZ7I\nHPlQfSIZ3+npqfr7+1VTU6NEIqG6ujoNDw/r4eHhzecKhYKy2awSiYSSyaQ6Ozt1e3trmnUMhRHx\nX7uSz+fDIAjC6enpin+Xz+fD3t7e8Pr6+t3j4mNE+pzv4eFBTU1NSqVSKhQKPzxX9/LyUvPz89rc\n3FQqlXr3uPgYkVx2X6XTaY2Pj+vu7k67u7tv3isWi8rlclpfX68YHj5XpOOTpKmpKUnS1tbW99ee\nnp40NzenlZUVNTQ0uKYWe5FedqWX0FpaWnR/f69CoaD6+nrlcjmNjY1paGjol8fF74v8kS+ZTGpy\nclLlclnb29taW1tTe3v7u8LD54p8fNI/S+/S0pJubm40MzNjnhGknyy7r7ehqkml5fH5+VnpdFod\nHR06Ojr6X2NW4/dQLf6q9Ea1nef8LJLz83OVy2WNjIz80tjV9l1Ui1gsu3t7e5LEed4XE5v4UqmU\n+vr63FPBv8TiUktra6taW1t1eHj4YePi90X2yHd1daWhoSG1tbWpUCjo4uJCg4ODby42wyvyR76v\nOi4ifOTD10d8sCE+2BAfbCre4ahGn3ErrLGx8cPHxIvIxMd/pNWHZRc2xAcb4oMN8cGG+GBDfLAh\nPtgQH2yIDzbEBxvigw3xwYb4YEN8sCE+2BAfbIgPNsQHG+KDDfHBhvhgQ3ywIT7YEB9siA82xAcb\n4oMN8cGG+GBDfLAhPtgQH2yIDzbEB5tvYBYsxI+4hMwAAAAASUVORK5CYII=\n"
},
{
"output_type": "display_data",
"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"
},
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAJ8AAACOCAYAAAAvkdreAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAABIRJREFUeJzt3TFIlH8cx/HP81fUQ27wwEnBG10cmqJAkUQSG1R0CgJ1\nbShwcWlpctVBaAkicRDU6eBwMEQUPUQaagkUxHBoSDyQ8BB+DVJhon/Ls48+z/sFz/Ic/Pg++uae\n5/EBnyiEUJSUFvCPRSGE4B4CyfSfewAkF/HBhvhgQ3ywIT7YEB9siA82xAcb4oMN8cGG+GBDfLAh\nPtgQH2yIDzbEBxvigw3xwYb4YEN8sCE+2BAfbIgPNsQHG+KDDfHBJlbxZTIZRVFU1i2TybgPK7Zi\n9b9aoihSuQ/nOtbEiVh98+F2IT7YVLoH+Be+fPmixsZGHR8fq7KyUtlsVtlsVhUVFZKkQqGg/f19\nzc7Oqq+vzzxtgoQYOe9wXr9+Haqrq8PExEQ4Pj4+9dn8/HyoqKgIz549+6M1cXWx+smeF0p/f3/I\n5XJn9q+trYVUKhV6e3v/eE1cXezvdkulkh4+fKh3796d2r+9va179+4pm81qaWlJNTU1l14T5RH7\n+HZ3d/Xp0yd1dHT83Pf161fdv39fpVJJ6+vrqq+v/6M1UR6xj+93R0dH6uzs1MePH7WysqLm5uYr\nr4m/k4i73R9CCBoaGlKhUFA+n//f8HDNzrsYlHQrt4uMjo6GKIrC27dvL31R7D6eWG+X/i3cAhfF\n9+rVqxBFUXj58uWp/d++fQuLi4t/tSauJhFPOPL5vJ4+farBwUG9ePHi1GfT09M6ODgwTZZssb/h\neP/+vdra2nT37l3l8/mfTzV+aG1t1cLCglKp1KXXRHnE+pvv8+fPevTokZqamjQ3N3cmvOnpaWUy\nmXPDw/WKbXzFYlHd3d0KISiXyymd/vV6ub29PY2NjenJkyfq6ekxTplssT3tDg8P682bN2poaFBD\nQ4Okk6cdW1tbKhaLkqSqqirt7u7yR2aT2MZ3k9fEidiednHzER9siA82sXu2G0VRWderq6sr63r4\nJVbxXfbGgJuIm4HTLmyIDzbEBxvigw3xwYb4YEN8sCE+2BAfbIgPNsQHG+KDDfHBhvhgQ3ywIT7Y\nEB9siA82xAcb4oMN8cGG+GBDfLAhPtgQH2yIDzbEBxvigw3xwYb4YEN8sCE+2BAfbIgPNsQHG+KD\nDfHBhvhgQ3ywSVR8IQQVCgVJ0sbGhnkaJCa+o6MjdXZ26sGDB5Kk9vZ2dXV1qVQqmSdLrsTENz4+\nrtXVVR0eHkqSDg8Ptby8rMnJSfNkyRWr9+1epKWlRR8+fDiz/86dO9rc3DRMhHPjK/cL9IDfnXva\nDSHEapuamlJtbe2pY6ytrdXMzIx9tqRuibnme/z4sZ4/f65UKqV0Oq1UKqWRkRENDAy4R0usxFzz\n/VAsFrWzs6NsNqt0Ou0eJ9ESFx9ujsScdnHzEB9siA82xAcb4oMN8cGG+GBDfLAhPtgQH2yIDzbE\nBxvigw3xwYb4YEN8sCE+2BAfbIgPNsQHG+KDDfHBhvhgQ3ywIT7YEB9siA82xAcb4oMN8cGG+GBD\nfLAhPtgQH2yIDzbEBxvigw3xwYb4YEN8sCE+2BAfbL4DB1vr/IQMFOAAAAAASUVORK5CYII=\n"
},
{
"output_type": "display_data",
"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"
},
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAJ8AAACOCAYAAAAvkdreAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAAzxJREFUeJzt3TFOKmEYRuF3yC2xtTU0asMG2IATXQchMS7H0LgBCxNj\nAgRbtkCDcTZAYXOxNDO3gsTC1uP1P085NF8mh3++aaDquu5vkqNI36zquq6jh1CZevQAKpfxCWN8\nwhifMMYnjPEJY3zCGJ8wxieM8QljfMIYnzDGJ4zxCWN8whifMMYnjPEJY3zCGJ8wxieM8QljfMIY\nnzDGJ4zxCWN8whifMMYnjPEJY3zCGJ8wxidMMfFtNpu0bfvpWtu2eXl5gSZSET+L23Vd6rrOYDDI\ndDpNr9dL27YZj8fZbreZzWb0iEUq4uSrqioPDw9Zr9e5vr7Ox8dHxuNxmqbJ/f09PV6xijj59na7\nXeq6ztvbW46Pj7NYLNLv9+mxivVlfFVVffcsKsyfrz74bQfifsdrmiar1Sqj0SjD4fCwA+r7FXHX\nu67LZDJJ0zSZz+dJkuVymfV6nZubG3i6chURX1VVuby8zHw+P+x4R0dHWS6Xubi4gKcrV1EvHHtV\nVf26teJ/VMTJp5/J+IQxPmGMTxjjE8b4hDE+YYxPGOMTxviEMT5hjE8Y4xPG+IQxPmGMTxjjE8b4\nhDE+YYxPGOMTxviEMT5hjE8Y4xPG+IQxPmGMTxjjE8b4hDE+YYxPGOMTxviEMT5hjE8Y4xPG+IQx\nPmGMTxjjE8b4hDE+YYxPGOMTxviEMT5hionv8fEx7+/vn67tdrs8PT1BE6mI+Lquy2KxyNXV1SHA\n3W6Xuq7z/PwMT1euYv5pvG3bjMfjNE2T1WqV0WiU4XCY6XSaXq+I7+CPU8xd7/V6ubu7y8nJSZLk\n/Pzc8GBfnnxVVX33LCrMn68++G1P4/2ONxwOc3t7m8lkkqZpMp/P0+/36fGKVMTO13Vd6rrOYDA4\nPGr3O+B2u81sNqNHLFIR8SXJZrPJ6enppx2vbdu8vr7m7OwMnKxcxcSnn8dXPWGMTxjjE8b4hDE+\nYYxPGOMTxviEMT5hjE8Y4xPG+IQxPmGMTxjjE8b4hDE+YYxPGOMTxviEMT5hjE8Y4xPG+IQxPmGM\nTxjjE8b4hDE+YYxPGOMTxviEMT5hjE8Y4xPG+IQxPmGMTxjjE8b4hDE+YYxPmH8MEtVxVFn5TgAA\nAABJRU5ErkJggg==\n"
},
{
"output_type": "display_data",
"png": "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\n"
}
],
"collapsed": false,
"prompt_number": 16,
"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) "
}
]
}
]
}