{ "cells": [ { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import matplotlib.pyplot as plt\n", "from IPython.display import set_matplotlib_formats\n", "import numpy as np\n", "import qcgpu\n", "\n", "set_matplotlib_formats('png', 'pdf')\n", "plt.style.use('ggplot')" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "num_qubits = 2\n", "\n", "state = qcgpu.State(num_qubits)\n", "h = qcgpu.gate.h()\n", "x = qcgpu.gate.x()\n", "y = qcgpu.gate.y()\n", "z = qcgpu.gate.z()\n", "\n", "state.apply_gate(h, 0)\n", "state.apply_gate(y, 0)\n", "state.apply_gate(z, 1)\n", "state.apply_gate(y, 0)\n", "state.apply_controlled_gate(x, 0, 1)\n", "state.apply_gate(x, 1)\n", "state.apply_gate(y, 0)\n", "state.apply_gate(z, 1)\n", "state.apply_gate(y, 1)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "scrolled": true }, "outputs": [ { "data": { "application/pdf": "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NjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNDIgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyMyA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTIgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxMiA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA1CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5ODIgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjE1IDAgb2JqCjw8IC9BIDE2IDAgUiAvUCAxNyAwIFIgL2EgMTggMCBSIC9iIDE5IDAgUiAvZCAyMCAwIFIgL2UgMjEgMCBSCi9maXZlIDIyIDAgUiAvZm91ciAyMyAwIFIgL2kgMjQgMCBSIC9sIDI1IDAgUiAvbSAyNiAwIFIgL28gMjcgMCBSCi9vbmUgMjggMCBSIC9wIDI5IDAgUiAvcGVyaW9kIDMwIDAgUiAvciAzMSAwIFIgL3MgMzIgMCBSIC9zcGFjZSAzMyAwIFIKL3QgMzQgMCBSIC90aHJlZSAzNSAwIFIgL3R3byAzNiAwIFIgL3UgMzcgMCBSIC95IDM4IDAgUiAvemVybyAzOSAwIFIgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL0YxIDE0IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PiA+PgplbmRvYmoKNSAwIG9iago8PCA+PgplbmRvYmoKNiAwIG9iago8PCA+PgplbmRvYmoKNyAwIG9iago8PCA+PgplbmRvYmoKMiAwIG9iago8PCAvQ291bnQgMSAvS2lkcyBbIDEwIDAgUiBdIC9UeXBlIC9QYWdlcyA+PgplbmRvYmoKNDAgMCBvYmoKPDwgL0NyZWF0aW9uRGF0ZSAoRDoyMDE4MDkxNjIzNTMyMCswMScwMCcpCi9DcmVhdG9yIChtYXRwbG90bGliIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcpCi9Qcm9kdWNlciAobWF0cGxvdGxpYiBwZGYgYmFja2VuZCAyLjIuMykgPj4KZW5kb2JqCnhyZWYKMCA0MQowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTYgMDAwMDAgbiAKMDAwMDAwOTUwNCAwMDAwMCBuIAowMDAwMDA5MzEwIDAwMDAwIG4gCjAwMDAwMDkzNDIgMDAwMDAgbiAKMDAwMDAwOTQ0MSAwMDAwMCBuIAowMDAwMDA5NDYyIDAwMDAwIG4gCjAwMDAwMDk0ODMgMDAwMDAgbiAKMDAwMDAwMDA2NSAwMDAwMCBuIAowMDAwMDAwMzk2IDAwMDAwIG4gCjAwMDAwMDAyMDggMDAwMDAgbiAKMDAwMDAwMTI3OSAwMDAwMCBuIAowMDAwMDA3OTY5IDAwMDAwIG4gCjAwMDAwMDc3NjkgMDAwMDAgbiAKMDAwMDAwNzMzNiAwMDAwMCBuIAowMDAwMDA5MDIyIDAwMDAwIG4gCjAwMDAwMDEyOTkgMDAwMDAgbiAKMDAwMDAwMTQ1OSAwMDAwMCBuIAowMDAwMDAxNjk3IDAwMDAwIG4gCjAwMDAwMDIwNzQgMDAwMDAgbiAKMDAwMDAwMjM4NCAwMDAwMCBuIAowMDAwMDAyNjg0IDAwMDAwIG4gCjAwMDAwMDMwMDIgMDAwMDAgbiAKMDAwMDAwMzMyMiAwMDAwMCBuIAowMDAwMDAzNDg0IDAwMDAwIG4gCjAwMDAwMDM2MjQgMDAwMDAgbiAKMDAwMDAwMzc0MSAwMDAwMCBuIAowMDAwMDA0MDY5IDAwMDAwIG4gCjAwMDAwMDQzNTYgMDAwMDAgbiAKMDAwMDAwNDUwOCAwMDAwMCBuIAowMDAwMDA0ODE3IDAwMDAwIG4gCjAwMDAwMDQ5MzggMDAwMDAgbiAKMDAwMDAwNTE2OCAwMDAwMCBuIAowMDAwMDA1NTczIDAwMDAwIG4gCjAwMDAwMDU2NjIgMDAwMDAgbiAKMDAwMDAwNTg2NiAwMDAwMCBuIAowMDAwMDA2Mjc3IDAwMDAwIG4gCjAwMDAwMDY1OTggMDAwMDAgbiAKMDAwMDAwNjg0MiAwMDAwMCBuIAowMDAwMDA3MDUzIDAwMDAwIG4gCjAwMDAwMDk1NjQgMDAwMDAgbiAKdHJhaWxlcgo8PCAvSW5mbyA0MCAwIFIgL1Jvb3QgMSAwIFIgL1NpemUgNDEgPj4Kc3RhcnR4cmVmCjk3MTgKJSVFT0YK\n", "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "labels = map(\n", " lambda i: np.binary_repr(i, state.num_qubits), \n", " range(0, 2**state.num_qubits)\n", ")\n", "\n", "y_pos = np.arange(len(labels))\n", "performance = list(state.probabilities())\n", " \n", "plt.bar(y_pos, performance, align='center')\n", "plt.xticks(y_pos, labels)\n", "plt.ylabel('Amplitude')\n", "plt.title('Probability Amplitudes')\n", " \n", "plt.show()\n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.15rc1" } }, "nbformat": 4, "nbformat_minor": 2 }