{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Decomposition of the Toffoli gate in terms of CNOT and single-qubit rotations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Copyright (C) 2011 and later, Paul D. Nation & Robert J. Johansson" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebooks demonstrates how a toffoli gate can be rewritten in terms of CNOT gates and single qubit gates, and verifies the equivalence of the two gate sequences by comparing their matrix representations. For more information about the toffoli decomposition, see Nielsen & Chuang, Sec. 4.3, p178.\n", "\n", "\n", "**Note: The circuit image visualizations require [ImageMagick](https://imagemagick.org/index.php) for display.**\n", "\n", "ImageMagick can be easily installed with the command conda install imagemagick if you have conda installed.\n", "Otherwise, please follow the installation instructions on the ImageMagick documentation." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from qutip import *\n", "from qutip_qip.operations import *\n", "from qutip_qip.circuit import QubitCircuit, Gate" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "q = QubitCircuit(3, reverse_states=False)\n", "q.add_gate(\"TOFFOLI\", controls=[0, 2], targets=[1])" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q.png" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "Quantum object: dims = [[2, 2, 2], [2, 2, 2]], shape = (8, 8), type = oper, isherm = True\\begin{equation*}\\left(\\begin{array}{*{11}c}1.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 1.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 1.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 1.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 1.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 1.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 1.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 1.0 & 0.0 & 0.0\\\\\\end{array}\\right)\\end{equation*}" ], "text/plain": [ "Quantum object: dims = [[2, 2, 2], [2, 2, 2]], shape = (8, 8), type = oper, isherm = True\n", "Qobj data =\n", "[[1. 0. 0. 0. 0. 0. 0. 0.]\n", " [0. 1. 0. 0. 0. 0. 0. 0.]\n", " [0. 0. 1. 0. 0. 0. 0. 0.]\n", " [0. 0. 0. 1. 0. 0. 0. 0.]\n", " [0. 0. 0. 0. 1. 0. 0. 0.]\n", " [0. 0. 0. 0. 0. 0. 0. 1.]\n", " [0. 0. 0. 0. 0. 0. 1. 0.]\n", " [0. 0. 0. 0. 0. 1. 0. 0.]]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "U = gate_sequence_product(q.propagators())\n", "\n", "U.tidyup()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "q2 = q.resolve_gates()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABzIAAACSCAQAAACEEURXAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAAGQAAABkAA+Wxd0AAAAHdElNRQflBRkSFgKCmBQRAAAKeHpUWHRSYXcgcHJvZmlsZSB0eXBlIGljYwAAWIWdl22SZKkNRf+zCi+BTwktBwSK8P434ENWd0+33TNjOyuIzHoPhJCu7hXpn+7pH3zqUEn5fVbJPz7167ccudq1jtq115rHHDZWzX/2SVKkadPcy8gjd//TmX/xCXZ9Hv1w57R6/h9DH4/+x/lLugxt0r758u0E6omDZa3aP/8XnV8v6lQlQvn78/XNTulSZf/xfPfvzxPh/ITx63+fPxboz8+P/2Ho5+eRfzbUycyXqzV/7TCzY+j3z/9kfvr1zN8/tfbyDiwmwvtJ+puECMdV4Y2MmrV9h0a33lJvTCJKbxrLXMbvo/x3ptN/2v5vTf/6+dv06zv6/JYlPh0/yJqxkYkKb9j+efTXcWi15VYakP1diUQbD8zlu0eliPvf1dL3z+/mSaz6OVqb8RWHZr+fWM3e99b5mVfmWf8+72Oo9m/IjfmJxRYPED/Ikvxi8Uek8jP4FsUDI8MwVC6m2isLBkVL0jJ1k9v+WtlZ9HbqLBo8GHg3WPOwJ/MRDil5R1N9RQc8CdrEg4mBdxLDgGHAMLAwsHi4MLDrOySDNc4aZ41vDD3mOCw6GGBevvy+++M1TMPY5OX9KeOQmsYwRuRSB4P3DY9Km4zLUXkIsRWyXnC/YKMIi4V3yju8LhMjeFyMOXhboNaCp2UXDG1+4GJxvg/fh+/L9+U7WBCL4mwMh4Y741AvwghCO8lUYXA0qpnBS3avykNlIdmr8+ZqTCTHdWFks5gNq29yMnJ9OSIEFei0l/6WN+AVklXyo9rGLtQbI3KDd5rwTvFJL4Djf+N/jDcC3zb/u+Z2Goaw3K7nFka2hcJpmfphHApr594nCEAXSHfH447BPp36XqCCd3javafcDxOIyYNJjwvUTh7F8yAboy2gA9zHzIOjD6AygMjAq7EYG+lxxhkJbPGDNH/+OKJUzY/IBU+E7ImsLLrBnmexk2VFFn84LFluo9DgnKwpK5hQdtd24IzIVD4Y7VnZWakxJdC6eX4gLjbVmFDrBr+RJ1Uwu+Q5VgLMN084ZOLuXAtg8z+L5tU8AaMBXgN4xjGNjUx6NrVsk98g3gi4eaRs7GIsWKXkxbEWni0gsTjSomwWEFhkaBGLhZqseHnmD0Ld0MWGk7ZQtJu620ze+5UP3wR+k0EvQLCu7EDBh2cH3Q62fGn2V2YA1zF63l9Fsk9/pbbyIS6HiQfIH2fC4TfxuMDhgr5L9i7Huhr52qYcJV9CcO+lLPEoOH8A84AaAlQHsYrdUOPIcV95E6VKBjqMK5xfcdk2bvP86FtYKOTE4LsHfHtKmV7KIlpupdzJ4bRQV6X2Uar0QumUulqpzriQ+SP0ykDXCuIIATAWmPYBEQxKU0qn8Ho3RHqVPnfp60AOlz0hh1LLaHRCQwqyAVnsVMY+hVO9ait0CEVYLOJFZhTZFUd5Fqso1KC9FJVBr2FF1y1gq2homQVDFHqZvJxzlbkCYuc3Cz+Uw5FMdjFOahvonkNj0suqqyxCs1Sho1uARiqLgOJ42W2XzTE3Bjee7LPKYyAgUHzwrbs48XH34gT4QFqHKj76KMwSHUsrB2O3SLl4d4nJtV4ugLrXSpCNaLeE8JvnsaPEXfVDpcSewqvAPIE6SAOyI1UQ4OTQbL+Ipt/Kqlqr1jpGrZOfK2o9B81ZFd6qcFVt1mvzmmqLx5ZRez90Eo7G7drPetVVB5OHMJD64YxAyetTc8bU17xVuZP84pF2q6pUGQb0OOp26mxB8wdsFo6cXu2JLUYJPKJ7KmxC8eAgbcxio0X6oeOARGrdTaBlq5uJIKI+avNm1eVWx6AfhTO9HuJyVOph43PBJaC53VPFMzhcKzVTOSBcvmpYqcFRImCuNmAvim9RvWdTB0C5kz5CVDbfURu+pValtWob3u+Nma1Bzk2jtT1bI2UdX+mRWrfb+pl0Mq0N+HlM+jOvbcShODQ1UYK/bpNriEVv+kTDvOnRNktvNCBtTm/T52tWPkkyNrLNwQO6w8zSnhpHRVmiceK2BViu1fadZFQbbV9zjuS3tVNro1oaOG0wTLso0mXTiyLBJIn8lBZMoFlqcSvK2KjZ/ijykQ+hBYVCRS8HpRd/UCpcr3sQUCUe7KSHrhaJ6shhpx3tc3Uq/JEGUkZDDSmPc+nSa389oazdJZA2oqS6gR0Sh2BNJLtTyH1Cj0blmBDTZZ1OhrxoX3o6jvQN/Dfx3hjeeE39dZLafa8OpDqzUj9GMo73SxNw5Xag8KWVtMrEssd5Qg9hKxex/ageqkAKoYNBYQ5AMCqXGlCnA1ob5BFhXYOAjd6xSmPZz6bK5hjKQZ1qgVcFaZVlgy55EIyhVBIqnsYEglPPmL6HwTImBuEheVnHYtlajBhjE7VtjIvNxoDE/Mg4eHt0pnHcBtQ0rvi4+wwoHwUvAwGg1cIJLqwIG844/MubBY3iWCWi1bjkoOCPswV0SUNb+ku6denXQA9bGUV+VYTflKBQ5YKsixoYZg6FLaizzOvyLjVitsTiIWVy9KBHUNnsvBffEfip4otrK+J+6DHONqFW5cqW66CBiAdHk4DTaccQevqWS24AfLGh9AgkmGpeOEIH2YgE9QdC+9fd0skSZEPnrsQmvXOpwOwSXD9pgnQ3BAah4Lo+mWx1qU3ahgtrcbEksTQ5XeF33dQRvKo+MeRPVbjfUEP6+tcLBV4mwA50MF3j0mV1LrtrvpZiolGz+IFEMkwHAUeHEjRNqhT9PBOsz34pdhaNtemOXnQrgeGW9c5kMbE4pxhkcKdB2mb4GndSlmkuXxOpn8Rw7vDpAmPw7EBdhzUnYt5Pcu6MhmwafTO9G+0a3QbSQvNZ1kyGfEDay9DyVywGl0A59FSToqNOxggbbp8yJL1GB2UE04iDze42N47VnvAum4UDgmnrAGq4fq8wZNCcOR5qB4ShQobu2V0XtBwOui2CFk9ob89MdAiKtAr0zjBZEDSFz0ApO1VFmVOAc43FXrQqBGCBGVB2F16tiZBM2uMFwTLFaGZ8LUQfRVmbMtvXkHRfTid4Or0IWn7RjovsP/zi0X53O0qSrmulTRuyy0GwOorvMH0j9utyQurUqOTS9piL/gy/1TbEBujmxhtKm/I+3Gbgo20shqX32gNLlx8PZ2W77dfw7ENrywmgcTgtUH6UNIKmklYyXzoKURqHlmCZQPWQBIikHS4DtP3QrY++ORlo6Fz9nRtHfw0J+GjH53ZHP9jLaFCmE4vksIVvbrFYcg7iKJbDZwiH+H2326YeHIDbzMmbtq05h6ENbXG4LR3Y/iA3iTgafkBE/Z5xiNYYRw4sjj3icKYgixdsCg0xeSddZ8Um9jS/3EJ8LtqvnA4zkHA/tDwnaA9icbNBLvPmcee64/Q3Axk7GyfbhbsuMnJ7OFUIzedzxSRd+OICACSRNmA7PRbYPyQUUl0X0oRcNvGGWi997z3mdAnzktcbKF84ffSYie57RKFfKBH0MoSkWEBJ0REQdAe2hnvPDZET8pJGozmZMwEdrQ4loAGzpFi08ls1yCeFMomgxaFGbt9xj8ORlG1E+hftkQTIS62KtQAAG9VJREFUeNrt3V+oJOl53/HfEwYknFmNaiQ2Y/biLLWyFXQRZVIDycXCxNAHE3wj25RsbJKbhZ51fBdIuiGQK1/0SQi5MMSavgkEAvI0cULAmHCa2APGxuF0ZFm+Mavp7FwsjGQzpZWGgIjJm4v+V91dXf3vrXqrT38/yzJz5pxTXfW8/+qpeustc8JtZv9b3639Q7+kf+1+K/SRAwAAAAjhTugdQMW+6y7r/kjr6aPQhw0AAAAgjL8RegcAAAAAALcHSSYAAAAAwBvP02XtsSK9CXg8D/S7Lgv4+beCxW68+/cskoj5eWtAu/9D93HoKAAAcLvYu3pfrwLuwF1l7nnoKOAwvp/J/FDSy4DH81hv9F8Dfn7DWaTO9K+Zhm5U+DMd9Us20VZ3/pOxG0sus471STPPWvh2L30cOggAANwy7+vXFTLJu5CCfj6O4DvJfKmhG4Y7HOsFvZ/SeC5T15weuZFF6ljbPVn9CUs12pwwWqQo9+UzPZIk9dVZpJ44Q+HbfcjrrAAA3E6v9NwFPMOzllqhQ4BD8UzmmbFEmRtJLtOV2pas/UC7NFlIF3c5rT37m8uUFWwJAAAAwBkiyTw3Lc2SyHSSbuZZolHpbyez37BYYy3ueA6Vhj4wAAAAAE1AknlupmmktZRq/Q2arVmSaT27sRd2bTd2bb3pv8W5tDLJ3/F0I1V+J9NSe23OXnDP9BBED8Ah6DtQB+oZcPv4fiYTTdfS2HqSYndZ8N1okkZaqoHrWtv1reOu5t+dT5a1VMO136yURXqqSFKsZ3ovWPROFNEDcAj6DtSBegbcRnfsqWKP2/uSXirgAiD6+7q01wE/f+aO3gm62ubCw/wXlkiTB7jt2tpufRXZZFJ6biBZorHFyr+wZPr6Eos1XlscKP/1VysohfvzNDa239df1x/InXxJ3w29C4Wqjl7odl9FjTs0Es2sAeXe0Sehd+HI/f+hfhR6J7y50CcN6uHoeY/XxPp5X1Iz+szZ/jS/njW7lr2lz1XUj9/X94Me2U/plxpyf7vZNWCToCPKnfX1RY9hPX0U6lAkSX8SdpXL5rHrpS8XT2TO14m1lkbzN13mn8hsuyfWWiSPuec1W4otlZRYbx7v/J3Mb/svBYvmA2LmfiZYOE9U1dEL3u4rqHEA6HlRD+pZcwVf3fUj/XbI1W1xDJ7JPC+LRDHRSLLEUrXUmb89c86i6R3uReeSajD5i+u7ruu6riLXnZ/aV/yeTJdpcjnkR/J6WeQ8ED0Ah6DvQB3m9SyjngG3B0nm2bDEemoptknaOFJkqTI30JXG86tEg3lS2Z7e88xNUshPkbXYepL1JluzeMuqtB64vu7rm/onbhA6kqeI6AE4BH0H6uD6+nl9U+9Rz4Dbg4V/zoYbaaTFlINLJRq7sSWKXd+mryZxI5vd0+y7THJDmz6TaelyGunG6ua2Nr/LWekRZPZSbwKH8WQRPQCHoO9ALd7opat4ThSAOnEn80y5zA3d2GKlSuw6d79yMLk3Oevq3Wzhn6T0+mLsKr+TCQAAAOAUcCfzrLmxVh6ndgPr2Gj1aqKVvqDEeuKhbAAAAACSuJOJNe6q4KU2kfqbft6iydRaAAAAAOBOJgqsT31145KfzqpeWRYAAADA6eBOJgAAAADAG5JMAAAAAIA3TJe97b5o17V/5oW+E/qwAQAAAIRBknnLuYeh9wAAAADAOWG6LAAAAADAG5JMAAAAAIA3JJkAAAAAAG9IMgEAAAAA3pBkAgAAAAC8IckEAAAAAHhDkgkAAAAA8IYkEwAAAADgDUkmAAAAAMAbkkwAAAAAgDckmQAAAAAAb0gyAQAAAADekGQCAAAAALwhyQQAAAAAeEOSCQAAAADwhiQTAAAAAOANSSYAAAAAwBuSTAAAAACANySZAAAAAABvSDIBAAAAAN6QZAIAAAAAvCHJBAAAAAB4Q5IJAAAAAPCGJBMAAAAA4A1JJgAAAADAG5JMAAAAAIA3JJkAAAAAAG9IMgEAAAAA3pBkAgAAAAC8IckEAAAAAHhDkgkAAAAA8IYkEwAAAADgDUkmAAAAAMAbkkwAAAAAgDckmQAAAAAAb0gyAQAAAADekGQCAAAAALy5E3oHAKBJ7O+qo5e1f+xX3T/yeAzv6n29qmQ/H+gP3cf1hOSU2a/qe7V/6AmWjT1WpDeh90IS0dvVXWXueegj30+F/eG+TjB6t439Z31U+4de6Bs+y91+raJj8F4/STIBIO+Lkoa1f+ql1629r19XNacyj/WWfquOgJy4f6n/VvtnPpb0cegD39OHUoBLOkWI3m4upIr6lupU1x/u6xSjd9u8E2AE+0CR1+39C/12JfvpvX6SZALAspeu9iTTXnvd3Cs9d91K9rMX4CrwKfqkmviXsV5D7tbs46WG9be2IkRvN9ZSK/Rh762y/nBfJxm92+ZHAcb3lucZB9+taHz3Xj95JhMAAAAA4A1JJgAczeJ9vmeR+Z08AwAAKlA2vq9/l/F9oTFJJkUInJ/92n2Ilm+R9ab/dSzZ+FMdZSUbac+3NZ2K4jK1m9eHNSHe54wLFbsp7zV2+w2it+t3zzVS+9cyord29CdQ13YZ4beM79MR/vTG9zoiXvEzmUvzewduNP2XtacIrKN+6Yba6s626IaSy6xjfVde7ACC8N3uLVIy+d36W77L1DWnR25kkTrWdk8KjjfVaPM+WTR55N/akjK71sD1JfXVUU1PCVmkzvSvmYZutOGnCkqDntaPXUpgS2toL2qLxW5cX9lYSy19qJ+3/6K+Gzc+TsXCRu9X9Vf67ycSvUCRslhtfU0PTNU/ZVpZLQsbvZ/VF/Wf6nhGd318Lx7hT2F832WELx/fZyP8KY7vdUS84iTTDW2k17rvMsk61tPX3XBSGZcOfqcilCyVlFlHmevXWYQA9uG53QfrvKf7kShzI8lldqXX1i/oxNuubG3YVH3JYsWuK5n0VH3JZZZZsmlA8OuoRJme1oNjT2RmbWHqmR5JqqFsLNJTRerrP2ikn9C1DapdPuX4E75GRu8zpxK9YJHqKdWVfkOJRupYW0+qPO2tppYFj96/rSd6heN7tj7Cn8r4vsMIXz6+S6n6Jzu+Vx7xyqfLumzyv+SuFM2mja1ob7n2kk4z8MQN3NBdKZFcpmzz5DUAIflr9xYrdn03UF+96ZbrbvmLoTOdDEbLLFH5UDIZaiJ1LJLcQLNJNUOldR3CYhjVldqF8dtQGvS0fmwtgfLWkC6uQtu8NdVQNs80cpduoB/rlevrkSLrNTpOxYjezK7nWrVGynqK9Mj19Uo/dgN3qZGeNTxOZx29Wza+bxnht47vkxH+RMf36iNe7zOZWdGbYnYsQklKl0JRYxECONhx7T5o5z3ZD80mBKWFb7NszY7EenZjL+zabux6djpp8eRpDjdy5jLJUmXTqUEj1TeYHpMo09P6cNyJzPyauMUa554PqrRsrKPMXS2+dpm6Sg95Vq22OBVrUvSqbfM+TpdrjpTFStXN32VxV8qsc/gWa4hTsXOJ3rJTH9+3jfCl4/tshD/h8b3iiNeYZFqiZHqdJ7LUWvZs+sDpTkUoSRroxnrWm2yl1iIEcJBj233gznuyp5H1rKe2uyyc/hJN9tRSDdwjXblLDdzlfGJcuvIkRO6pHc+vZy5zRKJMT+vFEScyuTFQs6eXJioum1QrE68mV8qbEKdijY9et+ITaA+ny7VHqq2rtYl8T5oRp2JnH718LBbj+/IIn4thgy++TpSP8OXj++oIf3Lje9URv2OJ10Bc6O76P1pPUibpvVljcAPJOko01HIRdq3t+tbJX//LFeHkxvxYg+nX63t+Tw+tumjt48EJvti5+UfwFf2fhpRvsZ9q9Ivqq4tete1+oqzz9tvuH+pe7igSaTKg2LW1XdFCBpPjmRxdorHFyi/wEeeX+7De9MmTifzJwVvm8yXIS8cgqaWx9STFG54uKS+NfLw/05g+duGB3nh+1fXx7q98XV4C5fGftwVLNVz7zQXf498DJdPtXcy3/H39M/O5tMhq37FTnIo1LHpvF0Tv/+pr4aO3vc8tjdRdXXjtq76m7nR7D3Nbfjtgf3hILWtW9H6y0uhNjnJtfF8a4ecx3NYqp8rGd98xe2vpOLaN8OXj+9IIXzK+++5dlo7hyPG9yvqpO2p5TTLfLTrZXFvvarkB71iEFqnnnlhXHV3bpFqvdwQP9Hl9wWeADvQZvau/CL0TR/qyPtaPQ+/Eivck/UTonSjxVX079C6UqC56Fbb7iZLOW5I+r7/nsd1f6LO5rxYTUebLOliizI0li1wmLV31brsn1lrs3/I0FUs1cgOLpemx5fvez8ln136R/+LoRDkf78/rQSP62OWj/YE+Db0TK5aSzCNPZGZjYKzx2l2L5bLx2Q6ku/M6+a403/LbXmvqUt+xa5wka2t52u7QDYmen9PlLZG6q3e9HsPb+gfTv13ktnw3YH+YLJLEgnp2CtH7m9VFLxeJ1VQ6f9TzGB558bWKmC1fAFwb4Xcf35dH+NLx3Xfv8rmlfThufK+yfurOUjZ7NOsdcPdr1yJMNZyuoxTN74Ws+os6FnBGKHUsb357VRe9Stu9tnTekvTS55EtLdA+n4giKVFXskSRMj3VpbWl5auxFk1PSPJPSFzltjt2I0mJm83FyA+mn/hceXLlGIoS5UiJG1pruuZcaWksxft7tMFdrDx7V1QCLY1my2fseKGipdhSSYn15qWQLxuv7UCydFYnF59nLUVea+py31EQp6VIzePkNr0cgejtED2V97nlkXql516PIcpFpzWPWVpvf7gpThvqWdOj164wertZnnZ6+MXXKmK23DevjvC/pv+58/ieG+G3jO++e5f8MRw7vldYP+te+GeLXBEupFoUWDT/23j6J4ATt6XdTzrvgaRkfu2zppZvifXUUjydPjJSZKkyjRRrpMW12sF8z9vTf8kNALNr2hbrmW7MmdPiqZRaFjjX8jA6kiyxSKlGdiNpZYmIwtKgpz3WegmkaqmjtQU6CuI/bwuu77qu67qKXHd+wlJl2QwLFhBpV1pr1+IkbYpUEaK3W/TK+9yaIzVaf8rXOqryQpb/Wta06A0O2VRVylplyPF9wwj/x/uM77MR/qTH90ojXnGSaS3rSUoXc3ytpUSJtaytePrvOxWh5AaT60OWauTGtRYhgD34bPchO283cl133z2ZnipcKtPIjV02HX6mE37caD6hqu+uJDecLfhhae7Oy9jdd+bMmXtv+k9pHacCGxJlub5iDd1wetWypDToaY9TXAJuoCuN59eMd7pQIUkWW0+y3mRrFZdNd3U5fGuX3EOsJE7SUqQGW+6pND16UUOiV9rn1hsp11dkS4mSJUtP6IWMU7FmRU/LFzOqjN70E9bG94IRPh/Dpl58LR7h/3TX8T0/wp/u+F55xJ3X/9RT64Dfejb9M5r+Gc+/kypd+slErdl31VHi5/P571T+o3ybGb2q2/3K7621fL9HppZ6W36irY7aeprb38LPL9/O4vednHTttUQ2HIOiSQ+qSJE6Sp1msSwpjaV40wZ3LIEN5TkvgSQf/c3x36ct+C8btfRCncmWFamnm9n+efuEDfs8i9NqpGZx2hTdhkcv9vwJB0bvmD53e/+491FEulFP0WTL6uhFBSVR2h8eV8vONXpbfmsew2NaZRUx2zbW7jq+l4/wK+O7596l+BgOGd+rrp/NmC47mGTh83uWi0dSF7ObJ98ZueH8u7Hj+jpwunZu9ysa0PLdleLFhC43UGJrT4hb6ZJq1qv2avOG/c6mPWhbHUWKrTVfAGBzaTQg3rfHpAQsVqrErnPXkzfFP2hbcEM9Umwv9IF+UzeSe7S2pEmlcZq+BzAfqUHZ2ocNjd6H+sY0euPjt+ojes3qc13mHkm60W/qA3uhWI/qeurbUy1rRvS+oQ/rjd4W8xg2q1XuYpfxvXyEP6HxveKI36k/DAWBGVjHRuuDV/OKEIAvh7T7JrR8ixRbe/ocyexYrgpedxypX7KNfl2n60XWF3zbWBrB430bufFqVIvjH74tuGz1bY/1Wo3UpnpapCnRyy0AU7Ndo9eASHVD9jPH1LKmRC+/8E8TNLeuldt5fC8Z4U9nfK8+4s24kzm5brCusUUI4Hj7tvtmtHyXua7rrz5btX4t0I0337dwWV33NPY4roLSaEK8z0Vha2h4WwhhQ69RhOitOc0+t3571DKit8Fp1rVdx/eyEf5Uxvc6It6IO5nSpiLc+NMZ6x0Cp2+/dk/Lr1ZBoky8a1R0oaLkp8+2bHad3EX0Co+cPncnu08hJHobj5661iCFpVF5xBtyJxMAAAAAcBs05k4mAMCTu7qw/V+gvYsL3Q19cCfhrYriX+YUy+aeHlrofZggert5qHuhD3tv1fWH+zrF6KF57ldUn73XT5JMAMj7a/3C8vvtavG3vW4t02dVzSD0Wf2/OsJx8j6pKP5lPnuCk83+UrG+EHonJBG9Xd3TX4Y+7L1V1x/u6xSjd9u8Y9e1f+aFvuN1ez+sqD57r58kmQCQ4/5APx16H44+hud6Hnofzpv7xdB7cBrcvwq9B6eM6O2G/hAL7iuh98DDMfxM6D3YFc9kAgAAAAC8IckEAAAAAHhDkgkAAAAA8IYkEwAAAADgDUkmAAAAAMAbkkwAAAAAgDckmQAAAAAAb0gyAQAAAADekGQCAAAAALwhyQQAAAAAeEOSCQAAAADwhiQTAAAAAOANSSYAAAAAwBuSTAAAAACANySZAAAAAABvSDIBAAAAAN6QZAIAAAAAvCHJBAAAAAB4Q5IJAAAAAPCGJBMAAAAA4A1JJgAAAADAG5JMAAAAAIA3JJkAAAAAAG9IMgEAAAAA3pBkAgAAAAC8IckEAAAAAHhDkgkAAAAA8IYkEwAAAADgDUkmAAAAAMAbkkwAAAAAgDckmQAAAAAAb0gyAQAAAADekGQCAAAAALwhyQQAAAAAeEOSCQAAAADwhiQTAAAAAOANSSYAAAAAwJs7oXegyeyxPtTL2j/2HfePQx/5+bF/rlifht4LSdKFvuGeh94JoB72e/p26H2YoucFAMAbkswykaRh7Z/6G6EP+yzFGutboXdCkvSBotC7ANTm7QB9bDF6XgAAvCHJLPNGL13tJ0DWCX3YZ+lTfav+si5iLb0JvQ9AbV43o93R8wIA4BPPZAIAAAAAvCHJ9Mzi/b5rkTE58kSVl/Vuv0H5A/vZv93R8gAAqBvTZXdmkWbTqTIN3ajwZzrql26kre50W8lkkpjLrGN9l4U+OuR5Kesi0/KXJIvdmPIH8ra3vIPaHS0PAICacSdzZy5zXXU0cF31ldrT9Z+wVKOykxaLJku6WFupIru2tiSpL54F2soi69mN/qm+OY9bhY4v6+JjWFrS59n0z1rKv87oAYfa1vIOaXdhWx4AAOeJJHMPlihzI8llulLbkrUfaG9ZwiJVX7JYseu7gfrqSZLLlBVsCzmW6FrSpf69fllP1LLrqqe6HV3WRdLFPZhFqld9+VtiN6o1esChtrS8Q9pdsJYHAMD5IsncR2u+2H46ORHKs0SjLb+fuJGkSB2LJDdQZC1J0lBp6ENrMov0TE9cd3IHw43d1zXU02O3usWxZV0kmW3HYo21uB9Tdfk/1VXN0QMOVdLyDmx34VoeAABniyRzH9NTHGsp1eXad1uLEyDr2Y29sGu7sWvrTf8tnpzcuJEzl0mWKps+lzkS19PLdDRYPtl0V4qs2tPDncu6SFn5T7aevx9TbflbT0M3qDl6wKHKWl5rW5LZpJYHSJbaa3X0H7lnjipZqt9Rx15Qz9AsLPyzj5bG1pMUu8uC70azUxlLNXBda7u+ddzV/PvpyoIVuaUoxPTFMqkerf3blVINDtjWrnYs6yLbyt/StdfPV1n+rYIkueroAYcqa3ml7a5xLQ9nzyI9VSTpJ/VM74XeG9xWFump3pIUU8/QLHes43WYfaw/D3o8X9bFdAqqDxf5LyyR3GRt2Gtru/UVDpPZCYwbSJZobLHGue/HLveV9TTIbSN/6vSl2RX4wL6sj/Xj0DshaTLBePK3x7ny/SXzuTLkUs3dvaytreWXIwzdsLz8LdZ4bemS/NcX+sBjHZa+XHf0AvAds8N9Vd8OvQsH+Dv6s2Cf/U7+iy0tL1kkiRW0PHrezS70A30aeidKNLXdXczPr2L7d40q1b8l6Xuhd2LFPX1eL0PvRImm1rKq69nF8Zs4ygM9bkjf3NwaUCboiHJHQ69J5oXehDoUSdIrjfUtb1t7uHQas3hWKLdWobU0WaRCKxO52u6JtRanMMtPE1mqkRtYLE0Tz3wZvNYhS1v49+d6FXoXpn5lHpEL/a9p+d7VL3qN03LN3bms3abXKWwu/5ZiSyUl1tNwOnkvX/4/8FqHi6OnSqNXP98xO9xLfRR6Fw7wnYCnm/9w6auCllfcx1bQ8uh5N3ugN4HbeLmmtru7+uXp336o3w29Myt7psaV6F3dbWDdX2hqLcvXsx9VUM8e6oB3E3v0Rh83pG9ubg0oE3REueMOW0hhA2sF7rY+1bcOWn2w+GikL+S+XJysJOpKlriRpUrUknITXye/GU0bZX4Ri/n0LWtp7EaSkvmzcvnr6a/9HcHtYN+fvbbAWrPytVT/w2ecVmruHmVduLWS8p+dHFvHLbaUL3+vdViy72s8vZNTV/Tq5zlmR2jGXpwQW36NyFrLU7x7uzuy5dHznq7Glpw90VNJmZ5Qu05eg0uwynq2ciZcvzd62ZDW04y9OCks/LMTS6ynluLplLyRIkuVSW6gK42npywDLSbstaeVMfcQ9myilsV6phtz5rRYmMJrqn/rDAveZ9ep6pnCvcu6SEn5S5LF1pOsN/mMisu/r/WJJpVFDzhUccvbq901q+UBcn3d16Xec/S4qBD1DM3Ewj87cSONclfSL5VM7g5Zotj1LXEjyY1y1+T7LpPc0KZPBlmam2A51v2VzbMISynXtZvl57Ps6Xy6m/9P27esi5SUvyS5sbq5z6i0/F3f0vqiBxyquOXt1e4a1fIASXIZ9z9QPeoZmog7mQdwmRu6sWSxUiV2Pb9qPpgtPjK7dj5f6icpvb4U+520fAtdKrVnk8W5LbUbZYvJx9XaXtbFvzX9sxnl//VQ0QMONWl5+7W7xrU8AADOlu87mff00EIeT62rYLnx8nNCbmAdG62tXygrXVrJers9bXTOXKZLa6uj9/Vz+iN1678Pt2tZFwld/jVEL3y7vxvy41GVY9pd+JYHACfvrte3Nuzvoe6FDgEO5TvJHCsO/IjwX4X8cHe1vIrsVKRNKyHKoskEL2zj+pujGGR/isu6SAPKv+LohW/3tKEzsUe7a0TLA4CTlklbn4av0r2lV1LhpHhOMt2/CX1AoRVNv3IlDcRlnB6fql2n2t3+8qfdoz67T3G9/S0PAKrlnut56H3AqeKZTAAAAACANySZAAAAAABveIVJmTCPO78V+rDPUuilaxZYxAbn5H7QJSXy6HkBAPDm/wONT1aihcR3uwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMS0wNS0yNVQxODoyMjowMiswMDowMIdRiJcAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjEtMDUtMjVUMTg6MjI6MDIrMDA6MDD2DDArAAAALXRFWHRpY2M6Y29weXJpZ2h0AENvcHlyaWdodCBBcnRpZmV4IFNvZnR3YXJlIDIwMTEIusW0AAAAMXRFWHRpY2M6ZGVzY3JpcHRpb24AQXJ0aWZleCBTb2Z0d2FyZSBzUkdCIElDQyBQcm9maWxlEwwBhgAAABN0RVh0cGRmOlZlcnNpb24AUERGLTEuNVM2WsEAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q2.png" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "Quantum object: dims = [[2, 2, 2], [2, 2, 2]], shape = (8, 8), type = oper, isherm = True\\begin{equation*}\\left(\\begin{array}{*{11}c}1.000 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 1.000 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 1.000 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 1.000 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 1.000 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 1.000\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 1.000 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 1.000 & 0.0 & 0.0\\\\\\end{array}\\right)\\end{equation*}" ], "text/plain": [ "Quantum object: dims = [[2, 2, 2], [2, 2, 2]], shape = (8, 8), type = oper, isherm = True\n", "Qobj data =\n", "[[1. 0. 0. 0. 0. 0. 0. 0.]\n", " [0. 1. 0. 0. 0. 0. 0. 0.]\n", " [0. 0. 1. 0. 0. 0. 0. 0.]\n", " [0. 0. 0. 1. 0. 0. 0. 0.]\n", " [0. 0. 0. 0. 1. 0. 0. 0.]\n", " [0. 0. 0. 0. 0. 0. 0. 1.]\n", " [0. 0. 0. 0. 0. 0. 1. 0.]\n", " [0. 0. 0. 0. 0. 1. 0. 0.]]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "U2 = gate_sequence_product(q2.propagators())\n", "\n", "U2.tidyup()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "U == U2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Versions" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
SoftwareVersion
QuTiP4.7.0+f635fb8
Numpy1.20.2
SciPy1.6.3
matplotlib3.4.1
Cython0.29.23
Number of CPUs12
BLAS InfoGeneric
IPython7.21.0
Python3.9.4 | packaged by conda-forge | (default, May 10 2021, 22:10:34) [MSC v.1916 64 bit (AMD64)]
OSnt [win32]
Tue May 25 20:22:02 2021 W. Europe Daylight Time
" ], "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from qutip.ipynbtools import version_table\n", "version_table()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.4" } }, "nbformat": 4, "nbformat_minor": 1 }