{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Runtime Cythonize in QuTiP\n", "\n", "![QuTiP logo](./images/qutip_logo-sml.png)\n", "\n", "## Prepared for EuroSciPy 2019\n", "\n", "![EuroSciPy_logo](./images/EuroSciPy_logo-sml.png)\n", "\n", "Alex Pitchford (alex.pitchford@gmail.com)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Two types of time-dependent dynamics solving\n", "\n", "* 'function' type and 'string' type\n", "* pros and cons to both\n", "* string type is a key differentiating feature of QuTiP\n", "* recently much improved\n", "* scope for further enhancement" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Ordinary differential equation\n", "\n", "of the form\n", "\n", "$$ \\frac{\\textrm{d} x}{\\textrm{d} t} = L(t) \\; x $$\n", "\n", "* $x$ -- vector:\n", " - state $\\newcommand{\\ket}[1]{\\left|{#1}\\right\\rangle} \\ket{\\psi}$ \n", " - or vectorised density matrix $\\vec{\\rho}$\n", "\n", "* or $x$ -- matrix:\n", " - unitary transformation $U$ \n", " - or dynamical map $M$\n", "\n", "* and $L$ -- sparse matrix that drives the dynamics.\n", " - In Python these are `Qobj`\n", " - wrapper to `fast_csr_matrix` -- custom to QuTiP.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Time dependent dynamics generator\n", "\n", "$$ L(t) = L_0 + g_1(t) \\, L_1 + g_2(t) \\, L_2 + \\ldots $$\n", "\n", " * $L(t)$ defined in Python as list of matrices \n", " * and (optionally) time-dependent functions\n", "\n", "```\n", "L = [L0, [L1, g1], [L2, g2] ....]\n", "```\n", "\n", " * `L` -- `Qobj`\n", " * `g` -- Python function, e.g. `def g(t, args): return np.cos(args['w']*t)`\n", " * or string e.g. `\"cos(w*t)\"`\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Function vs string type time-dependence\n", "\n", "| Python function | string type |\n", "| :-: | :-: |\n", "| Python interpreter | Compiled C++ |\n", "| slower execution | Compile time overhead |\n", "\n", "*Note:* C++ compiler required at runtime for string type. Non-standard in MS Windows" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### String type compilation\n", "\n", "1. Dynamic generation of Cython code `.pyx` file\n", " - right hand side of ODE `cqobjevo_compiled_coeff_.pyx`\n", "2. Dynamic Python to import time-dependent `QobjEvo`\n", " - `exec(compile('from ' + filename + ' import CompiledStrCoeff, locals()))`\n", " - Triggers compilation\n", "3. Temporary file `.pyx` deleted\n", "4. Compiled C++ time-dependent `QobjEvo` can be reused" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example - control coupled qubits\n", "\n", "![quant_optim_ctrl](./images/quant_optim_ctrl.png)\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Unitary dynamics - Schrödinger's equation\n", "\n", "$$ \\frac{\\textrm{d} \\ket{\\psi}}{\\textrm{d} t} = -\\textrm{i} \\, H(t) \\, \\ket{\\psi} $$\n", "\n", "$H(t)$ -- combined Hamiltonian of the system\n", "\n", "$$ H(t) = \\omega_1 \\, H_{\\textrm{d}}^{(1)} + \\omega_2 \\, H_{\\textrm{d}}^{(2)} + \\omega_{\\textrm{i}} \\, H_{\\textrm{i}} + g_1(t) \\, H_{\\textrm{c}}^{(1)} + g_2(t) \\, H_{\\textrm{c}}^{(2)} $$\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "You are in the installation directory. Change directories before running QuTiP.\n" ] } ], "source": [ "# Imports and utility functions\n", "\n", "import time\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from qutip.sesolve import sesolve\n", "from qutip.solver import Options, solver_safe\n", "from qutip import sigmax, sigmay, sigmaz, identity, tensor, basis, Bloch\n", "\n", "def timing_val(func):\n", " def wrapper(*arg, **kw):\n", " '''source: http://www.daniweb.com/code/snippet368.html'''\n", " t1 = time.time()\n", " res = func(*arg, **kw)\n", " t2 = time.time()\n", " return res, (t2 - t1), func.__name__\n", " return wrapper\n", "\n", "def plot_exp(tlist, expects, lbls, title):\n", " fig = plt.figure()\n", " ax = fig.add_subplot(111)\n", " for i, e in enumerate(expects):#\n", "\n", " ax.plot(tlist, e, label=lbls[i])\n", "\n", " ax.set_xlabel(r\"$t$\")\n", " ax.set_title(title)\n", " ax.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Time dependent control functions" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEYCAYAAABSnD3BAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd3hU1dbH8e9KJyFASKgJgYSEKj10ESlSRAEVFUTFgoiAXdB79Yoveq8VOyjYOyqiIoJIF5AWegmQUBN66BDS9/vHGTRggAEyOTOT9XmeeSAzp/wm4po9++yztxhjUEop5b187A6glFLKtbTQK6WUl9NCr5RSXk4LvVJKeTkt9Eop5eW00CullJfTQq9KPBH5VEReOM/rL4hIuojsLeZc74vIf4rznMo7aaFXxUJEbhORRBE5ISJ7RGSaiFxZBMc9b5EuguNXAx4H6hljKrvwPHeJyIKCzxljBhtjnnfVOVXJoYVeuZyIPAa8CfwPqAREA2OBXsVwbr/LPER14KAxZn9R5FHKDlrolUuJSFlgFDDUGDPJGHPSGJNjjPnFGDPcsU2giLwpIrsdjzdFJNDx2tUikiYij4vIfse3gbsdrw0C+gMjHN8UfnE8v11EnhSRNcBJEfETkboiMldEjojIehHp6UT2zsAMoKrj+J+eznPWdtsd2yIiz4nIdyLyuYgcd5wrocC21URkkogcEJGDIvKuiNQF3gdaO85zxLHtGd9WROQ+EUkRkUMiMllEqhZ4zYjIYBFJFpHDIjJGRMTxWpyIzBORo44uqG8v+j+k8mha6JWrtQaCgB/Ps83TQCugMdAIaAE8U+D1ykBZIBK4FxgjImHGmPHAV8ArxpjSxpjrC+zTD+gBlAME+AX4HagIPAh8JSK1zxfcGDMT6A7sdhz/LqfeMfQEJjjOPRl4F0BEfIEpwA6ghuP9TDDGJAGDgUWO85Q7+4Ai0hF4EbgFqOI4xoSzNrsOaI71O7wF6Op4/nnHew8DooB3nHwfyktooVeuFg6kG2Nyz7NNf2CUMWa/MeYA8H/AHQVez3G8nmOMmQqcAM5bpIG3jTGpxphTWB8ipYGXjDHZxpjZWAW33yW+pwtZYIyZaozJA77AKrxgfYBVBYY7vtlkGmMWnPMoZ+oPfGyMWWGMyQL+hfUNoEaBbV4yxhwxxuwE5mB9cIL1+6sOVL3IcyovoYVeudpBIOICfeVVsVqop+1wPPfXMc76oMjAKtznk3rW8VONMflnnSPyAse4VAVH52QAQY73Xw3YcYEPvXM543dkjDmB9bst+B7OPu/p39EIrG81Sx1dSfdcwvmVB9NCr1xtEZAJ9D7PNruxWpynRTuec8a5pl8t+PxuoJqIFPz3Hg3scvIcBZ0Egk//4OiOqeDkvqlA9Dk+9C40jewZvyMRCcH6tnTB92CM2WuMuc8YUxW4HxgrInFOZlZeQAu9ciljzFHgWax+9d4iEiwi/iLSXURecWz2DfCMiFQQkQjH9l86eYp9QOwFtlmCVaBHOM59NXA9/+zjdsZmrBZ6DxHxx7qWEOjkvkuBPcBLIhIiIkEi0tbx2j4gSkQCzrHv18DdItLYcaH6f8ASY8z2C51URG4WkSjHj4exPlTynMysvIAWeuVyxpjXgcewiuIBrJbtMOAnxyYvAInAGmAtsMLxnDM+Auo5RtP8VNgGxphsrAuk3YF0rKGddxpjNl7CezkKDAE+xGpNnwTSzrvT3/vmYX3AxAE7Hfvd6nh5NrAe2Csi6YXsOwv4D/AD1odFTaCvk7GbA0tE5ATWxeGHjTHbnNxXeQHRhUeUUsq7aYteKaW8nBZ6pZTyclrolVLKy2mhV0opL3e5Ez4VuYiICFOjRg27YyillEdZvnx5ujGm0Hs63K7Q16hRg8TERLtjKKWURxGRHed6TbtulFLKy2mhV0opL6eFXimlvJzb9dErpdT55OTkkJaWRmZmpt1RbBEUFERUVBT+/v5O76OFXinlUdLS0ggNDaVGjRo4FtEqMYwxHDx4kLS0NGJiYpzez6muGxHpJiKbHMuYPVXI64NFZK2IrBKRBSJSr8Br/3Lst0lEup69r1JKXYzMzEzCw8NLXJEHEBHCw8Mv+tvMBQu9Y77tMVgz/9UD+hUs5A5fG2MaGGMaA68Arzv2rYc1w159oBvWPNi+F5VQKaXOUhKL/GmX8t6d6bppAaQYY7Y6TjIB6AVsOL2BMeZYge1D+HsRhV5Ya2JmAdtEJMVxvEUXnfRCcrNh9vPQYhCUq1bkh1clx5GMbHYeyuDgiWwOnszmSEY22Xn55OUZ8owhyN+XkABfQgL9qBAaSJWypahaLojgAO0JVe7JmX+ZkZy5LFsa0PLsjURkKNac4wFAxwL7Lj5r338s3yYig4BBANHR0c7k/qdju2D5p7B9Ptz9G/gHXdpxVImRn2/YcuAEq1KPsDrtCOt3H2Nb+kmOZORc0vGqlA2iTuVQalcuQ+NqZWleozzhpZ1dk0Qp13Gm0Bf2PeEfk9gbY8ZgrSJ0G9YCEwMuYt/xwHiAhISES5sgv3wM3PA+TLgNpg2HnrrQvfqnwyezmbNpP/OT05mfnE76iSwASgf6Ub9qGXo0qEJMRAjR5YOpEBpIeEggZYP9CfTzwc9H8BEhMzePk1l5nMjKZd+xTPYezWTXkVMk7zvOxr3HWZCSTk6e9c84rmJproyL4Jp6lWgRUx5/Xx3RrIqfM4U+DWtR49OiOP96nhOA9y5x38tTpwe0exzmj4bIZtDsLpedSnmOY5k5/LZuL1PW7GFhSjp5+YbwkADaxUfQJi6CptFhxEaE4OPjXN9ncIAfwQFWt01MRMg/Xs/KzWPdrqMs2XaIJVsP8c3SnXz653ZCg/y4pl4lbmoaRavYcHydPJ9yT0lJSdx///0cOXKEO+64g3HjxpGSkmJ3rEI5U+iXAfEiEoO1dFpf4LaCG4hIvDEm2fFjD+D03ycDX4vI61ir2MdjrZvpOh2eht0rYepwqNQAopq59HTKPRljWJV6hG+W7uSX1Xs4lZNHdPlgBl0Vy7VXVKF+1TJOF/aLFejnS7Pq5WlWvTxDroaM7FwWJKczY8M+flu/l0krdlGlbBA3N4uif6vqVCqj3YyX6v9+Wc+G3ccuvOFFqFe1DCOvr3/ebXJzc+nfvz8fffQRTZo04YEHHuCKK64o0hxF6YKF3hiTKyLDgOmAL/CxMWa9iIwCEo0xk4FhItIZyMFafHiAY9/1IvId1oXbXGCoY91M1/HxhZs+gnHt4bs74f55EBLh0lMq95GXb/h9/V7e/2Mrq1OPEBzgS+8mVbm1eTSNosraMlojOMCPLvUr06V+ZZ7vfQUzk/YxcXka78xJYezcLVzboAoD28XQMKpcsWdTl2bSpEk0atSIJk2aAFCvXj0qVqx4xjaTJ08mLCyMdu3a2RHxDG63ZmxCQoIpktkrd6+Cj7tCtRZw+4/gqyMivFluXj6TVu7ivblb2JZ+kurhwQy8MobeTSIJDXL+DsLitD39JJ8v2sH3iakcz8rl6toVeKhTPE2jw+yO5taSkpKoW7eurRmeeeYZKlSowMMPPwzA/fffT7du3Th16hRz584lNDSUWrVqERkZSXp6OvPmzSM2NhYfHx+efvrpyz5/Yb8DEVlujEkobHvvvTJUtTH0eB22/QGzR9mdRrlIfr7h1zV76PLmH4yYuIbSgX6M7d+U2Y9fzR2ta7htkQeoERHCs9fX489/dWR419qsTj3CjWP/ZMDHS9m4t2i7I1TRCg8PZ/PmzQCsWrWKL7/8kkaNGpGWlkbDhg155JFHCAz8e8RVt27d+M9//sO6detsyevdzdwm/WFXIix8C6o2hfq97U6kitCq1COMnLye1alHiK9Ymvdvb0bX+pU87maa0CB/hnaI4642Nfh80Q7em5vCtW/N55aEajx2TS0qah++27njjjvo0aMHzZs3p3Xr1tSoUYPY2FhGjBjB6tWrGT58OJ06dfpr+5AQ66K9XT0o3l3oAbq9BHvXwk8PQHhNqNzA7kTqMqWfyOLlaRv5fnkaFUIDebVPQ25sGuXxo1hCAv144Oqa9GtRjbdnpfDF4u1MWbOHx7vU4s7WNTz+/XmToKAglixZAsCrr77KDTfcAMD48eNJTk7Gx8eH48ePU6VKFTtj/sV7++gLOr4XxncAHz8YNEcvznooYww/rNjF81M2kJGdyz1tY3iwUzylA72zvbI9/STPTl7PH5sPcEVkGf7buwGNqukFW3foo3/++eeZMGEC/v7+tG3bltdff/2MrhpXu9g++pJR6AF2LYdPrrXG19/xE/gFFP05lMukHc7g3z+u44/NB0ioHsZLNzUkrmJpu2O5nDGGX9fuYdQvG0g/kcXg9jV5uHM8gX4ld8oodyj0dtOLsecS2Qx6vgs7FsJvT9qdRjnJGMOPK9Po9uZ8lm8/xPO96vPd/a1LRJEHawKr6xpWZebj7enTLIqxc7fQ692FrN991O5oyoOUnEIP0PBmaPswJH4Myz60O426gKOncnhowioe/XY1dauE8tsjV3FH6xouu9HJnZUJ8ueVPo34aEACB09m03vMQj5esM22i3vKs5SsQg/QaSTEd4FpT8L2BXanUeewbtdRrn1rPtPW7mF419pMGNSaauWD7Y5lu051K/H7I1fRvlZFRk3ZwH2fL+fwyWy7Yyk3V/IKvY8v3PQhlI+17pw9vMPuROos3yWmcuN7f2KM4fvBrRnaIU5HnBQQFhLAB3c249nr6jFv8356vD2ftWnalaPOreQVeoCgstD3G8jPhW/6QqbenOIOsnLz+PePaxkxcQ3Na4Txy4NX0kTvEi2UiHDPlTFMeqAtIkKf9//k51W77I6l3FTJLPQAEXFw82dwYBNMvBvycu1OVKLtPZrJreMW8/WSnQxuX5PP7m6hc7k7oUFUWSYPa0ujauV4eMIqXpyWRF6+9turM5XcQg9QswNc9zqkzLRG4uiFLVsk7TnGDWMXkrzvOO/f3pSnutfBT+dtd1p46UC+vLcl/VtGM27eVu79bBlHT13a4inKO+n/Tc3ugjYPWqNwloyzO02JMz/5ADe/vwhj4PvBbeh2hXvcSehpAvx8+O8NDXih9xUsSE6nz3t/svvIKbtjKTehhR6g8/9Bnetg+r9g0292pykxvktM5e5PlhEVVoofh7ahXtUydkfyeLe3qs7n97Zg79FMbnrvT5L3Hbc7ktdKSkriqquuomHDhrz66qvExcXZHemcvPPe8Yvl4ws3jodPusPEe+De6TonjgsZY3hjZjJvz0qmXXwEY/s3detZJj1Nm5oRTLi/FXd9sow+7y/iowEJJNQob3cs15j2lDWXVVGq3AC6v3TeTTxt4RFt0Z8WEAL9vrVG5Hx9KxzbY3cir5Sfb/i/Xzbw9qxk+jSL4uO7mmuRd4H6Vcsy6YE2lA8JoP+HS5ixYZ/dkbxKYQuPNGrU6Ixt+vTpY0e0QmmLvqAyVeC2b+HjbvDNrXDXVAgsGbfaF4e8fMPTP65lwrJU7r0yhmd61PW4KYU9SbXywUwc3Jp7Pl3G/V8kMvqWRtzQJMruWEXrAi1vV1mzZg2NGzf+6+d169bRrVs3Nm7cyMiRI6lVqxYnTpxgx44djB49GmMMNWvW5JFHHmHHjh0888wzVKxYkZ49ezJ9+nT27dvHwIEDad26NY8++ihPPPEEERERDBw4kC+++OKy82qL/mxVGsLNn8LedfD9AMjT0QtFITcvn8e+W8WEZak82DFOi3wxCS8dyNf3taJVbDiPfbeaicvT7I7kFc618MgHH3zASy+9xMiRI8nOzmbs2LGUKlWK8PBw1q61upjGjBnDs88+y+jRo4mMjCQzM5NKlSr9VdCHDh3K+PHjmTBhAn379i2SvNqiL0ytLnDdG/DLQ/DLI9DrXdCidMmyc/N56JuV/LZ+L8O71mZoB/e9aOWNQgL9+GhAc+77PJHhE1eTn2+4pXk1u2N5tHMtPGKMISAgAF9fX/z8/MjPz+eOO+6gYcOGf+1rjMHHx2pjv/XWWwwfPhxjDCNHjgQgLi6O3bt3k5SUxIQJE4okrxb6c2k2AI7tgnkvQ9lI6PBvuxN5pJy8fIZ8tYKZSft49rp63HNljN2RSqRSAb58OCCB+z5PZMQPa8g3hr4tou2O5bHOtfDIfffdx3//+19iYqx/58OGDePf//43VapUITQ0lJEjRzJkyBCee+45qlSpQpUqVXj55ZepVKnSGcfv1KkTe/bs+esD4bIZY9zq0axZM+M28vON+XGIMSPLGJP4id1pPE5uXr4Z8tVyU/3JKebzP7fZHUcZY05l55oBHy8x1Z+cYr5cvN3uOJdkw4YNdkcwo0aNMvXq1TONGjUyQ4YMMZmZmUV27AULFpibb77ZHDt27JzbFPY7ABLNOepqyVl45FLl5Vjz4WyZA/2+gVpd7U7kEfLzDcMnruGHFWk8fW1d7rsq1u5IyiErN48HvlzB7I37efPWxvRuEml3pIuiC4/owiNFz9ffmhOn8hXw/V3WSlXqvIwxPDt5HT+sSOPRzrW0yLuZQD9fxvZvSuvYcB7/fjUzdeil19NC74zA0nDb99Zas1/dDOnJdidyW8YY/jc1iS8X7+T+9rE81EkvvLqjIH9fPhiQwBVVyzDk6xUs2nLQ7kjKhZwq9CLSTUQ2iUiKiDxVyOuPicgGEVkjIrNEpHqB1/JEZJXjMbkowxer0Epw+4+AwBc3wFGdErYw783bwgfztzGgdXWe6lZHh1C6sdKBfnx6dwuqlw9m4GfLWJ16xO5IykUuWOhFxBcYA3QH6gH9RKTeWZutBBKMMQ2BicArBV47ZYxp7Hj0LKLc9oiIg9t/gFNHrGKfccjuRG5l0oo0XvltEz0bVWXk9fW1yHuAsJAAvri3JWEhAQz4ZCkp+z1jbhx3u7ZYnC7lvTvTom8BpBhjthpjsoEJQK+zTjzHGJPh+HEx4GW33xVQtbF1UfbwdviqD2SdsDuRW5iffIARE9fQOjacV29uWCLXdfVUlcsG8dXAlvj5+DDg42XsP55pd6TzCgoK4uDBgyWy2BtjOHjwIEFBQRe13wVH3YhIH6CbMWag4+c7gJbGmGHn2P5dYK8x5gXHz7nAKiAXeMkY81Mh+wwCBgFER0c327HDA5b32/grfHs7xFwFt30HfiV3kYx1u45y67hFVCsfzHeDW1NG567xSGvSjnDruMXEVyrNhEGtCA5wz9tscnJySEtLIzPTvT+QXCUoKIioqCj8/c/8/+x8o26c+S9ZWNOs0E8HEbkdSADaF3g62hizW0RigdkistYYs+WMgxkzHhgP1vBKJzLZr04P6PkO/DwUJt0HfT6xZsEsYVIPZXD3p8soW8qfT+9uoUXegzWMKsc7/Zow6ItEHvpmFePuaOaWa/X6+/v/dUOSco4zXTdpQMH7paOA3WdvJCKdgaeBnsaYrNPPG2N2O/7cCswFmlxGXvfS5Hbo8gJs+BmmPFriVqg6lpnD3Z8uIysnj8/uaUHlshf3dVK5n871KjHy+vrMTNrH81M22B1HFRFnWvTLgHgRiQF2AX2B2wpuICJNgHFYXTz7CzwfBmQYY7JEJAJoy5kXaj1fmwch4yAseAMCSkPX/5aIeXHy8g0PfbOS7ekn+fzeFsRXCrU7kioiA9rUYOehDD5asI1q5YO5V6et8HgXLPTGmFwRGQZMB3yBj40x60VkFNYtt5OBV4HSwPeOkRY7HSNs6gLjRCQf69vDS8YY72smdBoJ2RmweAz4B0GnZ+1O5HIvTk1i7qYD/O+GBrSpGWF3HFXEnr62LrsOn+KFXzcQGxFChzoV7Y6kLoNOgVBU8vNhysOw4nPo8Ay0H253Ipf5dtlOnvxhLXe1qcFzPevbHUe5SEZ2Ln3eW0Tq4Qx+GtqWmhV0bQZ3plMgFAcfH7juTWh4K8x5Af58x+5ELrFk60Ge+Wkd7eIjeKZHyZ5vxNsFB/gx/s5m+Pv6cN/niRzL1LUZPJUW+qLk4wu9xkK93vD7M7D0A7sTFanUQxk88NUKqoUF8+5tTfHz1X8+3i4qLJix/Zuy82AGj0xYRV6+e/UAKOfo/6lFzdcPbvoQal8LU5+wunK8QGZOHoO/XE5OXj4fDkigbCkdRllStIoNZ2TP+szeuJ/Rv2+yO466BFroXcHX31qOsGYnmPwQrPnO7kSXxRjDf35ax/rdx3jz1sbEal9tiXN7y2j6tajG2LlbmLLmH6OrlZvTQu8qfoFw65dQ40r4cTCs/8cNwR5jwrJUvl+exkMd4+hUt9KFd1BeR0T4v55X0Kx6GCMmrvGYOXGURQu9KwUEQ78JENUcJt4D6ybZneiirU49wsif19MuPoKHO9eyO46yUYCfD2Nua0opf18e+HIFGdm5dkdSTtJC72qBpeH2iVCtBfxwL6ydaHcipx06mc0DXy6nQmggb/dt4pa3w6viVblsEG/1bULKgRP8e9LaEjmxmCfSQl8cAkOh/0SIbm3Ni7P6W7sTXVBevuHhCStJP5nNe7c3JSwkwO5Iyk1cGR/BY51r8dOq3Xy1ZKfdcZQTtNAXl8DS0P97qN4WfrwfVn1td6Lzem9uCvOT0/m/nvVpGFXO7jjKzQztEMfVtSsw6pcNrEnTBUvcnRb64hQQYk1pHNsefhoCK76wO1Ghlm0/xOszNnN9o6r0bV7twjuoEsfHR3jjlsZElA7ggS9XcDRDb6ZyZ1roi9vpC7Q1O8LkYZD4id2JznD4ZDYPfbOSauWD+d8NV+gqUeqcwkICGNO/KfuOZfLUpDXaX+/GtNDbwb8U9P0a4rvAlEdg2Yd2JwKs8fLDJ64h/UQW7/RrQqjOLa8uoEl0GE90rc20dXuZsCzV7jjqHLTQ28U/yBpnX6s7/Po4LBpjdyI+WbidmUn7+Ff3utovr5w2qF0sV8ZF8H+/rNfx9W5KC72d/ALhls+hXi+Y/m+Y8z/bFi9Zm3aUF6cl0bluJe5uW8OWDMoz+fgIr9/SiJAAP4Z9vZLMnDy7I6mzaKG3m1+AtQxhk9th3ssw7UlryuNilJGdy8MTVhIeEsirfRpqv7y6aBXLBPHazY3YuPc4L03baHccdRYt9O7Axxd6vguthsLScfDzEMgrvrsO/zc1ia3pJ3n9lkY6Xl5dsg51KnJP2xg+/XM7MzfsszuOKkALvbsQsZYh7PA0rP4Gvh8AuVkX3u8yzdm4ny8X7+S+djG0idOVotTlebJ7bepVKcOTP1gX9ZV70ELvTkSg/Qjo9jJsnAJf3wJZJ1x2uvQTWQyfuJo6lUN5omttl51HlRyBfr681bcxx7NyeeoHnSLBXWihd0etBkPv92HbH/BFb8g4VOSnMMbw1A9rOXYqlzf7NibQz7fIz6FKpvhKoYzoWpuZSfv4PjHN7jgKLfTuq3E/a0TOntXw6XVwrGjnAP92WSozk/Yxoltt6lQuU6THVuqetjG0jg3n/35ZT+qhDLvjlHha6N1Z3eutKROO7IAPr4H9RTOaYefBDEZN2UDbuHDuaRtTJMdUqiAfH+G1WxrhI8Lj363WJQhtpoXe3dXsAHdPhfwc+LgL7Fh0WYfLzzcMn7gaXxFe7dMIH516WLlIZLlSjOxZn6XbD/HRgq12xynRtNB7giqN4N7fIaQCfN4LNky+5EN9uWQHS7Yd4j/X1aNquVJFGFKpf7qpaSRd61fitemb2bRX75q1ixZ6TxFWA+75Hao0hO/uhCXjL/oQOw9m8NK0jVxVqwI3J0QVfUalziIi/O+GBoQG+TFi4mpy84r3ZkBlcarQi0g3EdkkIiki8lQhrz8mIhtEZI2IzBKR6gVeGyAiyY7HgKIMX+KEhMOdk6F2d5g2HGY+5/SUCfn5hhE/rMZHhJdubKB3v6piE146kFG9rmB12lE+WrDN7jgl0gULvYj4AmOA7kA9oJ+I1Dtrs5VAgjGmITAReMWxb3lgJNASaAGMFJGwootfAgUEwy1fQLO7YcEb1sLjudkX3O2rJTtYvPUQz/Soq102qthd26Ay3epXZvSMzWw54Lp7Q1ThnGnRtwBSjDFbjTHZwASgV8ENjDFzjDGnx1AtBk73C3QFZhhjDhljDgMzgG5FE70E8/WD696ADs/AmgnwVR84dficm6ceyuDFaRtpFx/BrbqQiLKBiDCqd31K+fvy5MQ15OsonGLlTKGPBApONJ3meO5c7gWmXcy+IjJIRBJFJPHAgQNORFLWXbTDofd7sONP+KgLHPrnyIb8fMOIiWusLpubdMIyZZ+KoUE8e109Encc5vNF2+2OU6I4U+gLqwyFfhyLyO1AAvDqxexrjBlvjEkwxiRUqFDBiUjqL41vgzt/gpMH4INOVtEv4KulO1m09SBP96hLpHbZKJvd2DSSq2tX4OXfNumNVMXImUKfBhT8vh8F/OM2TRHpDDwN9DTGZF3Mvuoy1bgSBs6C4PLW8MtV3wCQdjiDF6cmcWVchK79qtzC6VE4vj6iyw8WI2cK/TIgXkRiRCQA6AucMZBbRJoA47CK/P4CL00HuohImOMibBfHc6qohdeEe2dAtZbw02DMrOf5z49rAHjpJh1lo9xH1XKl+Ne1dViYcpBvdfnBYnHBQm+MyQWGYRXoJOA7Y8x6ERklIj0dm70KlAa+F5FVIjLZse8h4HmsD4tlwCjHc8oVgsvD7ZOgyR3I/Ne4aduzDO8YTVRYsN3JlDpDv+bRtI4N57+/JrHn6Cm743g9cbevTgkJCSYxMdHuGB7t6MlsPh39GA/mf4lUbYr0+xpCK9sdS6kz7DyYQZc359EuvgIf3JlgdxyPJyLLjTGF/iL1zlgv9NL0Tbx1qjup14xHDiTBuPaQuszuWEqdITo8mEc612LGhn38vn6v3XG8mhZ6L7Ns+yG+WbqTe9rGUL3tLTBwprUI+afXwoov7I6n1BnuvTKGOpVDGTl5PSeyim/5zJJGC70XycrN41+T1hJZrhSPXlPLerJSfRg0F6q3gcnDYOpwyMuxM6ZSf/H39eG/NzRgz9FM3pix2e44XksLvRcZN28rKftP8Hzv+oQE+v39QnB56P8DtB4GS8dbQzBP6I1pyj00qx7GbS2j+WThNtbtOmp3HK+khd5LbD1wgnfnpGGA70cAACAASURBVNCjYRU61qn0zw18/azFx2/8AHYth/FXw+5VxZ5TqcI82bUO5UMCePrHtbpIiQtoofcCxhie/nEdgX4+jLz+7PnmztLwFrjnN+vvH3eFNd+5PqBSF1A22J//XFeP1WlH+WrJDrvjeB0t9F5g0opdLNp6kKe616FiaNCFd6jaxOq3j2wGk+6DXx+H3KwL7aWUS/VsVJUr4yJ45bdN7DuWaXccr6KF3sMdPZXDi9OSaBJdjn7No53fsXQFuPNnaPMgLPsQPu4Gh7UlpewjIrzQ+wqy8/IZ9csGu+N4FS30Hu6NGZs5eDKb53tdcfHrv/r6Q5cX4NYv4WAKjLsKNusMFco+NSJCeLBDHL+u3cOcTfsvvINyihZ6D7Z+91E+X7Sd21tW54rIspd+oLrXW105ZavB17fArOchP6+IUip1cQa1j6VmhRCem7yezBz9d1gUtNB7qPx8w8if11MuOIAnutS+/AOG14SBM6DJHTD/NfiiN5zQFpUqfoF+vjzXsz47Dmbw4fx/rrGgLp4Weg81aeUuEncc5qnudSgb7F80B/UvBb3ehV5jIHUpvN8Oti8smmMrdRHaxVeg+xWVeXdOCruO6KRnl0sLvQc6eiqHF6daF2D7NI268A4Xq8nt1tQJASHw2XUw50XI09vTVfF65jprqPB/f9ULs5dLC70HemPGZg5nXOIFWGdVbgD3z4MGt8C8l+Cz6+FommvOpVQhIsuVYliHOKau3cuC5HS743g0LfQe5q8LsK0u8wKsMwJD4cZxcMM42LsG3msLSVNce06lChjYLpbq4cGMnLyO7Nx8u+N4LC30HiQ/3/Dsz+sJCw7g8WuK4AKssxr1hfv/gLAa8G1/6warHO03Va4X5O/LyOvrseXAST79c5vdcTyWFnoPMmnlLpbvOMyTRXkB1lmnlypsPcy6weqDTrB/Y/FmUCVSxzqV6FSnIm/NTNY7Zi+RFnoPcSIrl5d/20jjai66AOsMvwBrYrT+E+HEPmtitKUfgJutUqa8z7PX1yMnz/Di1CS7o3gkLfQeYsycFA4cz2Lk9fVcdwHWWfHXwAMLrTnupz4BX94Ix3bbm0l5terhIdzfPpafVu1mydaDdsfxOFroPcDOgxl8NH8bNzaJpEl0mN1xLKGV4fYfoMdo2LkYxraGdT/YnUp5sSFXxxFZrhTP/bJBpzK+SFroPcB/p27Az1cY0a2O3VHOJALNB8L9860+/In3wA8D4dRhu5MpL1QqwJd/XVuHpD3H+D4x1e44HkULvZv7MyWd6ev3MeTqmlQu68QUxHaIiIN7focOT8P6H2FsG9gyx+5Uygv1aFCFhOphvPb7Jo5n6pKYztJC78Zy8/IZNWUDUWGlGNgu1u445+frB+1HWCNzAktbc+VMHQ7ZJ+1OpryIiPDs9fVIP5HNmDlb7I7jMbTQu7EJy1LZuPc4/762LkH+vnbHcU5kU2vMfcvB1vq0Y1vDtj/sTqW8SMOoctzUNIqPF2xj58EMu+N4BKcKvYh0E5FNIpIiIk8V8vpVIrJCRHJFpM9Zr+WJyCrHY3JRBfd2RzNyGP37JlrGlKf7FZXtjnNx/EtB95fh7mng42tNnzDlUcg6bncy5SVGdKuNr4/w4jQdbumMCxZ6EfEFxgDdgXpAPxE5e2HSncBdwNeFHOKUMaax49HzMvOWGG/NSubIqRyevb4eIjYPp7xU1dvA4IXWTVaJn1it+5RZdqdSXqBSmSCGXF2Taev2sliHW16QMy36FkCKMWarMSYbmAD0KriBMWa7MWYNoJNRFIGU/Sf4fNF2+jaPpn5VF89n42oBwdZNVvf+brX0v7wRfh4Kp47YnUx5uPuuiqVq2SCen6LDLS/EmUIfCRQcy5TmeM5ZQSKSKCKLRaR3YRuIyCDHNokHDhy4iEN7p/9NTaKUvy+Pd6lld5SiU62FNQzzykdh1ddW637jVLtTKQ8W5O/Lk93rsH73MX5YrjOrno8zhb6wfoOL+fiMNsYkALcBb4pIzX8czJjxxpgEY0xChQoVLuLQ3mdhSjqzN+5nWMc4IkoH2h2naPkHQefnYOAsKBUGE/rBt7frXbXqkvVsVJUm0eV4ZfomTmTpmgnn4kyhTwOqFfg5CnD6/0xjzG7Hn1uBuUCTi8hXouTnG/77axKR5UoxoE0Nu+O4TmRTa677TiMheQa82wKWjNN1atVFExGeva4e6SeyGDsnxe44bsuZQr8MiBeRGBEJAPoCTo2eEZEwEQl0/D0CaAvocjHn8OPKXWzYc4wR3Wp7znDKS+XrD+0egyGLoVpzmDYCProG9qyxO5nyME2iw7ihSSQfLtimyw6ewwULvTEmFxgGTAeSgO+MMetFZJSI9AQQkeYikgbcDIwTkfWO3esCiSKyGpgDvGSM0UJfiFPZebw6fRONospyfcOqdscpPuVj4PZJcNNHcGSnNSPm78/ojVbqopy+njX69002J3FPYtxsitmEhASTmJhod4xi9+7sZF77fTPf3d+aFjHl7Y5jj4xDMPM5WPEZlI2Gbi9CnR7WnDpKXcCL05IY/8dWpjx4peePVrsEIrLccT30H/TOWDdw4HgW783dQtf6lUpukQcILg8937ZutAosba1m9VUfSNe+V3VhQ66Oo2wpf16apgvinE0LvRt4c+ZmsnLzedLdZqe0S/U21jQKXV+E1KXwXmuY+X/anaPOq2wpfx7sGM/85HT+2KzDtAvSQm+z5H3HmbAsldtbVSe2Qmm747gPX39oPQSGJcIVN8GC1+Hd5tbsmG7W3ajcx+2toqlWvhT/m5qkN1EVoIXeZi9O20iwvy8PdYq3O4p7Cq0EN7wP90yHUuXh+7vg8166Xq0qVKCfLyO61mHj3uP8uHKX3XHchhZ6G52+OWpoxzjKhwTYHce9RbeCQXPh2tdgzyp4r401DXLGIbuTKTfTo0EVGkWVZfTvm8jM0XszQAu9bfLzDS9Os26Ousubb44qSr5+0OI+eHAFNLsLln0IbzeGRWMgN9vudMpN+PgI/7q2LnuOZvLxwm12x3ELWuhtMmXtHtbtOsYTXWt5/81RRS0kAq57HR74EyITYPq/YWwr2Pir9t8rAFrFhtO5bkXem7OFQye1EaCF3gbZufmM/n0TdSqH0qvRxcwPp85QsS7cMQn6TwQfP5hwG3zeE/autTuZcgNPdqvDyexc3p6VbHcU22mht8GEZTvZcTCDJ7vVwcdHbwa6bPHXwAMLofurVpF/vx38NASO6ALSJVl8pVBubR7Nl4t3sD29ZA/N1UJfzE5mWS2MljHlubp2yZ6ps0j5+kPLQfDQSmg9FNZ+D+80g+lP6wXbEuzRzvEE+Pnw6vSSPTWCFvpi9uH8baSfyObJ7nU8d+Uod1YqzFro5MEV0KAPLB4LbzWCP17TG65KoIplgrivXSy/rt3Dip2H7Y5jGy30xejgiSzG/2FNddA0OszuON6tXDXoPda6YFvjSpj9PLzdFBI/hrwcu9OpYjToqlgiSgfw8rSNuNvcXsVFC30xendOCqdy8hjetbbdUUqOinWh3zdw928QVsNapHxsK1j/k47QKSFCAv14sGM8S7Yd4o/kdLvj2EILfTFJPZTBl4t3cEtCNeIqhtodp+Sp3hru+Q36TQAff/h+gDUl8qbftOCXAP1aRBMVVopXp28kvwROjaCFvpi8PmMzPiI80tmL1oH1NCJQu7s1Qqf3e5B5BL65FT7oCJt/14LvxQL8fHjsmlqs23WMqev22B2n2GmhLwYbdh/jp1W7uKttDSqXDbI7jvLxhca3WROm9XwXMtLh65vhw86QMlMLvpfq1TiS2pVCGf37ZnLy8u2OU6y00BeDV6ZvJDTQjyHt4+yOogry9Yemd8Cw5XD9W3BiH3x5E3zUBbbM1oLvZXx9hCe61mZb+kkmLk+zO06x0kLvYou3HmTupgMM6RBH2WB/u+OowvgFWHPnPLgCerwOx3bBFzfAJ91hyxwt+F6kc92KNI0ux1szk0vUhGda6F3IGMNL0zZSuUyQTlzmCfwCoPm91k1X174Gh7fDF73hw06QNAXyS9bXfW8kIozoVoe9xzL5fNF2u+MUGy30LjR9/T5WpR7h0WvideIyT+IXaM2S+dAquO4NyDhoLWv4XmtY/S3k5dqdUF2GVrHhtK9VgbFzt3Ass2TcU6GF3kXy8g2jf99EbEQINzWNsjuOuhT+QZBwj9WHf+OHID7w4yB4pyks+whyMu1OqC7R8K61OZKRwwd/bLU7SrHQQu8ik1fvInn/CR69phZ+vvpr9mi+ftDwZhi8EPp+AyEV4NfH4K2GsPAtyDpud0J1ka6ILMt1Davw0YJtHDieZXccl9MK5AI5efm8MSOZulXK0KNBFbvjqKLi4wN1roWBM2HAL9ZdtzOehdfrW38e1aXrPMnjXWqTlZvPmDkpdkdxOS30LvB9Yho7D2XwRJdaOg2xNxKBmKvgzp/hvtlQswP8+Y7Vwv/hPtiz2u6EygkxESHcklCNr5bsIPVQht1xXMqpQi8i3URkk4ikiMhThbx+lYisEJFcEelz1msDRCTZ8RhQVMHdVWZOHu/MTqZJdDk61qlodxzlapHN4JbPrJE6LQbBpqkw7ir49DpregUdqePWHu4Uj48Ib8zcbHcUl7pgoRcRX2AM0B2oB/QTkXpnbbYTuAv4+qx9ywMjgZZAC2CkiHj1tI1fLdnJnqOZDO9SW6chLknCakC3F+HR9XDNKDi01ZpeYUwLa8bMnFN2J1SFqFzWGvr848pdbN7nvddanGnRtwBSjDFbjTHZwASgV8ENjDHbjTFrgLObL12BGcaYQ8aYw8AMoFsR5HZLJ7NyGTsnhTY1w2kTF2F3HGWHUuWg7cPw8GprpE5AsDVj5uv1YOZzcGSn3QnVWQa3r0lIgB9venGr3plCHwkUXJMtzfGcM5zaV0QGiUiiiCQeOHDAyUO7n0//3M7Bk9k8odMQK19/a6TOoHlw168Q3doaofNWI5jQH7bO1Ttu3URYSAD3XBnD1LV7Wb/7qN1xXMKZQl9Y/4Oz/0Kd2tcYM94Yk2CMSahQwTOX1zt6Kodx87bQqU5FXVRE/U3EWvik39fw8Bpo+wjsXASf94IxLWHpBzo80w3ce2UMZYL8eGOGd7bqnSn0aUC1Aj9HAbudPP7l7OtRPvhjK8cyc3m8i7bm1TmUqwadR8KjG6D3+1a3ztQnYHRdmDocDnhnkfEEZUv5M+iqWGYm7WdV6hG74xQ5Zwr9MiBeRGJEJADoC0x28vjTgS4iEua4CNvF8ZxXST+RxccLt3FdwyrUq1rG7jjK3fkHQeN+MGguDJwNdXrA8k9hTHP4pAes+V7vurXBXW1jKB8SwOjfvW8h8QsWemNMLjAMq0AnAd8ZY9aLyCgR6QkgIs1FJA24GRgnIusd+x4Cnsf6sFgGjHI851Xem7uFzJw8Hr1GFxVRFymqGdw4zmrldxoJx9Jg0kB4vQ789i/Yv9HuhCVG6UA/BrePZX5yOku3eVeZEndbLDchIcEkJibaHcNpe46eov2rc+nVqCqv3tzI7jjK0+Xnw/Y/rBZ+0hTIz4FqraxplOv3Bv9Sdif0aqey87jq1TnERoQwYVArjxoiLSLLjTEJhb2md8Zepndmp2CM4aFO8XZHUd7Axwdir4abP4XHN8I1z8PJA/DTYBhd2+rL37PG5pDeq1SAL0OvrsmSbYf4c8tBu+MUGS30lyH1UAbfLUulX4toqpUPtjuO8jYhEdD2IXhwuTVEM74LLP8MxrWD966ERWPghOcOR3ZXfVtEU6VsEKN/34S79XhcKi30l+Gd2cn4+ghDO+gSgcqFTg/RvOlDq5V/7WvWIinT/2315X/TDzZMhtxsu5N6hSB/Xx7sGM+KnUeYu8k7Pki10F+i7ekn+WHFLm5rGU2lMrrgtyomweWtRVHumw1DlkDrobBrBXx3x99dO7tX6s1Yl+nmhCiqlS/F6Bne0arXQn+J3pmdgr+v8MDVNe2OokqqinWseXUeXQ/9f7D69pd/BuOvtm7GmveqNeeOumj+vj481DGedbuOMX39PrvjXDYt9JdgW/pJflyZxu0tq1MxVFvzyma+fhDfGW7+BJ7YbC1/GBIBc16At5vABx1h8XtwfK/dST3KDU0iiY0I4Y0Zm8nP9+xWvRb6S/D2rGQC/Xy5v7225pWbKVXOWv7w7ql/z6SZlwO/PQWv14XPesKKL+CU9939WdT8fH14uHM8m/YdZ8raPXbHuSxa6C9Syv4T/LxqF3e2rk6F0EC74yh1bmWjrJk0B8+HoUuh3RPW7JmTh8Fr8dbkausmQfZJu5O6resbVqVWpdK8OXMzuXmeu7aAFvqL9PasZIL8fRl0VazdUZRyXoXa0PFpa4GU+2ZD84GQtgwm3g2v1IRv74C1EyHzmN1J3YqPj/DYNbXYeuAkP63y3Gm6/OwO4EmS9x3nlzW7Gdy+JuGltTWvPJCItSpWZDPo8gLsWAgbfoakXyBpMvgGQs2OUK8X1O4GpXQm1q71K1O/ahnenpVMr8ZV8ff1vPax5yW20Zuzkgn292VQO23NKy/g42utfdtjNDy2Ee7+DZrfC3vXWnfivhoHX95kjeQ56T13iV4sEatVv/NQBhOXp9kd55JooXfSpr3Hmbp2D3e3jSEsJMDuOEoVLR8fqN7asRziOmtWzVZD4GAK/PKQ1af/2fWw+H04vN3utMWuY52KNIoqy5g5KWTnel5fvRZ6J701azOlA/wY2C7G7ihKuZaINatml+fhoVVw/x9w5aNwfB/89qS1StbY1jBrFKQllogF0EWERzrXIu3wKSat8LxWvfbRO2HD7mNMXbuXhzrGUS5YW/OqBBGBKo2sR6f/wMEtsPk32DQNFrwJ80dDSEWo1RVqX2vdtBXgnfM+XV27Ao2iyvLunBRubBpFgJ/ntJO10DvhrVmbCQ3y494rtW9elXDhNa1pF1oPhYxDkDLTKvobfoaVX4BfEMR2sAp/XGdrVS0vcbpVf/eny5i0Io2+LaLtjuQ0LfQXsG7XUaav38cjneMpG+xvdxyl3EdweWh4i/XIzbZG8GyaZj02T7O2qVDHKvhxnaF6G/Dz7NFqntqq14VHLmDgZ4ks3XaQBU91pEyQFnqlLsgYOLDRau0nz7AWQ8/LBv9ga5RPXGeIvwbCatid9JLM2bifuz9dxks3NnCrVv35Fh7RFv15rE07ysykfTx+TS0t8ko5SwQq1rUebR6ErBOwff7fhX/zb9Z24XEQdw3U7GC19gND7c3tJE9s1WuhP483Zm6mXLA/d7WtYXcUpTxXYGmo3d16GGNd0E2ZYRX+5Z/AkvfAxw8iEyC2PcS0h6jm1pz7bsgT++q10J/DqtQjzN64n+FdaxOqrXmlioYIRMRZj1YPQM4p2LkYts2DrfNg3isw72Wrm6d6G6vox7aHSg2ssf5uwtNa9Vroz+GNGZsJC/ZnQJsadkdRynv5l7K6bmp2sH4+dRi2L7CK/rZ5MOM/1vOlylv9+6db/OVjrQ8Nm3haq14LfSGW7zjMvM0HeKp7HUoH6q9IqWJTKgzqXm89AI7t/rvob50HG36yni9dyWrxV29r/VmhbrG3+D2pVa9VrBBvztxMeEgAd7aubncUpUq2MlWhcT/rYQykJ8OOBbDjT9i+ENb/aG1XKgyi2ziKfxuo3NBakMWFPKlVr4X+LCt2HmZ+cjpPda9DcID+epRyGyJQoZb1SLjHKvxHdlhFf8dC689Nv1rbBpSGai3/LvxVm1jdREXMU1r1TlUyEekGvAX4Ah8aY1466/VA4HOgGXAQuNUYs11EagBJwCbHpouNMYOLJrprvDMrmbBgf+5opa15pdyaiDUWP6wGNL7Neu7YHtj5p6P4/wmzn7ee9/GzWvnVWliPqBbWwiyX2c/vKa36CxZ6EfEFxgDXAGnAMhGZbIzZUGCze4HDxpg4EekLvAzc6nhtizGmcRHndonVqUeYs+kAw7vWJkT75pXyPGWqwBU3WQ+wpmnYuRjSlkLqMmvK5SXvW6+FVvm76FdrYc3ncwl37npCq96ZatYCSDHGbAUQkQlAL6Bgoe8FPOf4+0TgXREbL4lfondmJ1NOR9oo5T2Cy0Oda60HWOvn7ltnFf20pZC6xJqnB8A3AKo0top+ZFOruycs5oKtfk9o1TtT6COB1AI/pwEtz7WNMSZXRI4C4Y7XYkRkJXAMeMYYM//sE4jIIGAQQHS0Pb+kdbuOMjNpP49fU0tH2ijlrXz9rQJetQm0HGQ9d3zf30U/dRks/QDysqzXSoU5tm/qKP5NrW8NZ3H3Vr0zFa2wj7OzJ8g51zZ7gGhjzEERaQb8JCL1jTFnLExpjBkPjAdrrhsnMhW5d2YnExrkxwC9C1apkiW00plDOvNyYP8G2LUCdq+AXSthwRtg8hzbVylQ/K0/Jbi8W7fqnSn0aUDBuUajgLNXyT29TZqI+AFlgUPGmjEtC8AYs1xEtgC1APeZtQxI2nOM6ev38XCneJ3TRqmSztf/7zn4udt6LjvDWmJx94q/PwA2Tf17n7LRXF2lAf8rX46VM9dyY81+BJSPtvWmroKcKfTLgHgRiQF2AX2B287aZjIwAFgE9AFmG2OMiFTAKvh5IhILxANbiyx9EXlndjKhgX7c01ZXj1JKFSIgGKJbWo/TTh2BPautor9nDbJ3Lf0yUrgNA++8aHX7VG4IlRtYHxqVG0B4vMvH9xfmgmd09LkPA6ZjDa/82BizXkRGAYnGmMnAR8AXIpICHML6MAC4ChglIrlAHjDYGHPIFW/kUllrwe7lwY5xOt+8Usp5pcpZUzLEtv/7uazjjBg7gUoZm3m0ThY++9ac2efvFwQV60EVxwdApQbWLJ9BZVwatcTPR//gNyuZnbSPBU921EW/lVKX7fR89a/c1JBbmleDvFxI32x1/exdYz32rIHMI3/vVC4aKta3Fmhv+/AlnVfnoz+HlP0nmLJmN4Pb19Qir5QqElfXrkCDyNMjcCLx8/WDSvWsRyPH7UXGwNE066LvvnWwb731yM+55EJ/PiW60I+Zk0KQny8Dr9S+eaVU0RARHuoUz32fJzJ59W5ubBpV2EbWerrlqlnr657moh4W9xrsWYy2HjjBz6t2cWfr6oSX9ux1LJVS7qVz3YrUrVKGd2enkJd/EcXbRaN0SmyhHzNnCwF+PgxsF2t3FKWUlxERHu4Ux9b0k0xZc/Zo9OJXIgv9joMn+WnVLvq3rE6FUG3NK6WKXpd6laldKZR3ZqeQfzGtehcokYV+7Jwt+PkI91+lrXmllGv4+AjDOsaRsv8E09bttTeLrWe3QeqhDH5YkUa/FtFULBNkdxyllBe7tkEValYI4Z3Zyba26ktcoR87dws+IgxuX9PuKEopL+frIzzYMZ6Ne4/z+4Z9tuUoUYV+15FTTFyeyq3Nq1G5rLbmlVKud13DKsREhPD2rGTsukG1RBX69+duAWDw1dqaV0oVDz9fH4Z2iGPDnmPMStpvS4YSU+j3Hs3k22Wp9GlWjchyRb92pFJKnUuvxlWJLh/M27PtadWXmEL//rwt5BvDEG3NK6WKmb+vD0M71GRN2lHmbj5Q7OcvEYV+/7FMvl66k5uaRlGtfLDdcZRSJdANTaKILFfKlr76ElHox/2xlbx8w5AO2ppXStkjwM+HIR1qsnLnERamHCzWc3t9oT9wPIuvluygd+NIqoeH2B1HKVWC9WkWRZWyQbw1a3Oxtuq9vtB/MH8r2bn5DOsYZ3cUpVQJF+jny+D2NVm2/TCLtxbfGkxeXegPnsjii0U76NU4kpgIbc0rpex3a/NqVAwN5O1ZycV2Tq8u9B8u2EZmbh5DO2hrXinlHoL8fbm/fU0WbT3I0m3F06r32kJ/+GQ2n/+5nesaViWuYmm74yil1F9uaxFNROkA3pldPK16ry30Hy/cRkZOHg9q37xSys2UCvBl0FWxzE9OZ/mOwy4/n1cW+qMZOXy6cDvXXlGFWpVC7Y6jlFL/0L9ldcqHFE+r3isL/ccLt3E8K1dH2iil3FZIoB8D28Uwd9MBVqcecem5vK7QH8vM4eOF2+havxJ1q5SxO45SSp3Tna1rUC7Y3+Wteq8r9J8t3M7xzFwe7BhvdxSllDqv0oF+3Ns2hplJ+1m366jLzuNUoReRbiKySURSROSpQl4PFJFvHa8vEZEaBV77l+P5TSLSteii/9PxzBw+XLCNznUrckVkWVeeSimlisSAtjUIDfLj3dkpLjvHBQu9iPgCY4DuQD2gn4jUO2uze4HDxpg44A3gZce+9YC+QH2gGzDWcTyX+HzRDo6eyuGhTtqaV0p5hjJB/tzTNobf1u9l495jLjmHMy36FkCKMWarMSYbmAD0OmubXsBnjr9PBDqJiDien2CMyTLGbANSHMcrciezcvlw/lY61K5Aw6hyrjiFUkq5xD1tYygd6Mc7LmrVO1PoI4HUAj+nOZ4rdBtjTC5wFAh3cl9EZJCIJIpI4oEDlzZX84msXFrFhvOgtuaVUh6mbLA/D1xdk9iIEJdMdubnxDZSyHNnJznXNs7sizFmPDAeICEh4ZLeZaUyQbx3e7NL2VUppWznyqlanGnRpwHVCvwcBew+1zYi4geUBQ45ua9SSikXcqbQLwPiRSRGRAKwLq5OPmubycAAx9/7ALON9f1jMtDXMSonBogHlhZNdKWUUs64YNeNMSZXRIYB0wFf4GNjzHoRGQUkGmMmAx8BX4hIClZLvq9j3/Ui8h2wAcgFhhpj8lz0XpRSShVC7FiR/HwSEhJMYmKi3TGUUsqjiMhyY0xCYa953Z2xSimlzqSFXimlvJwWeqWU8nJa6JVSysu53cVYETkA7LiMQ0QA6UUUx1OUtPdc0t4v6HsuKS7nPVc3xlQo7AW3K/SXS0QSz3Xl2VuVtPdc0t4v6HsuKVz1nrXrRimlvJwWeqWU8nLeqtMOKQAAA7VJREFUWOjH2x3ABiXtPZe09wv6nksKl7xnr+ujV0opdSZvbNErpZQqQAu9Ukp5Oa8p9BdawNzbiEg1EZkjIkkisl5EHrY7U3EREV8RWSkiU+zOUhxEpJyITBSRjY7/3q3tzuRqIvKo49/1OhH5RkSC7M5U1ETkYxHZLyLrCjxXXkRmiEiy48+wojiXVxR6Jxcw9za5wOPGmLpAK2BoCXjPpz0MJNkdohi9BfxmjKkDNMLL37uIRAIP/X97dwxaVx1Hcfx7IA424lKpWDK0gnRxqTiIlVKMQ0GxOpR2qJTiLDiIqIurg0g3l4AWLEKpBR1KEerg1sFaaKHtYqWNRJsltbhY8DjcKxQl5Abfu//ml/NZcnMJ9x1IcnLf/738f8Cztp+m2x79cNtUU/E5sP9f594Dztt+Cjjff/6/lSh6hg0wL8X2ku2L/fFdul/+/8zjrUbSHPAysNA6yxgkPQrspZv5gO0/ba+0TTWKGeDhfmLdFgpOprP9Pd38jvsdAE70xyeA1ybxWFWKftAQ8qok7QB2AxfaJhnFceBd4K/WQUbyJLAMfNYvVy1Imm0dapps/wJ8DNwEloA7tr9tm2o0j9tegu5mDtg2iYtWKfpBQ8grkvQI8BXwtu3fW+eZJkmvALdt/9A6y4hmgGeAT23vBv5gQk/nH1T9uvQBYCewHZiVdKRtqo2tStFvyiHkkh6iK/mTts+0zjOCPcCrkn6mW557UdIXbSNN3SKwaPufZ2un6Yq/speAG7aXbd8DzgDPN840lt8kPQHQf7w9iYtWKfohA8xLkSS6ddurtj9pnWcMtt+3PWd7B933+Dvbpe/0bP8K3JK0qz81TzeDubKbwHOStvQ/5/MUfwH6Pt8AR/vjo8DXk7jomsPBN4LVBpg3jjVte4A3gMuSLvXnPrB9tmGmmI63gJP9TcxPwLHGeabK9gVJp4GLdO8u+5GC2yFI+hLYBzwmaRH4EPgIOCXpTbo/eAcn8ljZAiEiorYqSzcREbGKFH1ERHEp+oiI4lL0ERHFpegjIopL0UdEFJeij4goLkUfMZCkOUmHWueIWK8UfcRw89TfZyYKyn/GRgwg6QW6fUdWgLvA67ZvtE0VMUyKPmIgSeeAd2xfWfOLIx4gWbqJGG4XcL11iIj1StFHDCBpK92ko3uts0SsV4o+YpidbIJhNlFTij5imGt0+4ZfkbRZph1FEXkxNiKiuNzRR0QUl6KPiCguRR8RUVyKPiKiuBR9RERxKfqIiOJS9BERxf0NBAPUNksAKfcAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def g_sine(t, args):\n", " return args['A_s']*np.sin(args['w_s']*t)\n", "\n", "def g_decay(t, args):\n", " return args['A_d']*np.exp(-t/args['t_d'])\n", "\n", "g_sine_str = \"A_s*sin(w_s*t)\"\n", "g_decay_str = \"A_d*exp(-t/t_d)\"\n", "\n", "t_tot = 10.0\n", "\n", "w_1 = 0.3\n", "w_2 = 0.3\n", "w_i = 0.02\n", "\n", "A_s = 0.3\n", "A_d = 0.3\n", "w_s = np.pi/t_tot\n", "t_d = 5.0\n", "\n", "tlist = np.linspace(0.0, t_tot, 200)\n", "\n", "args = {'A_s': A_s, 'A_d': A_s, 'w_s': w_s, 't_d': t_d}\n", "\n", "fig = plt.figure()\n", "ax = fig.add_subplot(111)\n", "ax.plot(tlist, g_sine(tlist, args), label=r\"$g_{\\rm{sin}}$\") #$\")\n", "ax.plot(tlist, g_decay(tlist, args), label=r\"$g_{\\rm{decay}}$\")\n", "ax.set_xlabel(r\"$t$\")\n", "ax.set_title(\"Control functions\")\n", "ax.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Hamiltonians, initial state and measurements\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Id2 = identity(2)\n", "Sz1 = tensor(sigmaz(), Id2)\n", "Sz2 = tensor(Id2, sigmaz())\n", "Sx1 = tensor(sigmax(), Id2)\n", "Sy1 = tensor(sigmay(), Id2)\n", "Sx2 = tensor(Id2, sigmax())\n", "Sy2 = tensor(Id2, sigmay())\n", "\n", "H_d1 = w_1*Sz1\n", "H_d2 = w_2*Sz2\n", "H_c1 = Sx1\n", "H_c2 = Sy2\n", "H_i = w_i*tensor(sigmaz(), sigmaz())\n", "\n", "H_func_type = [H_d1, H_d2, [H_c1, g_sine], [H_c2, g_decay], H_i]\n", "H_str_type = [H_d1, H_d2, [H_c1, g_sine_str], [H_c2, g_decay_str], H_i]\n", "\n", "up_state = basis(2, 0)\n", "b = Bloch()\n", "b.add_states(up_state)\n", "b.show()\n", "\n", "init_state = tensor(up_state, up_state)\n", "\n", "meas = [Sz1, Sx1, Sz2, Sx2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Solving the dynamics" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "@timing_val\n", "def repeat_solve(H, init_state, tlist, num_reps=1,\n", " e_ops=None, args=None, options=None):\n", "\n", " if options is None:\n", " options = Options()\n", "\n", " out = sesolve(H, init_state, tlist,\n", " e_ops=meas, args=args, options=options)\n", "\n", " if num_reps > 1:\n", " options.rhs_reuse = True\n", " tl = np.array([0, tlist[-1]])\n", " for i in range(num_reps - 1):\n", " sesolve(H, init_state, tl,\n", " e_ops=meas, args=args, options=options)\n", "\n", " return out" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Function type" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 execution of func type took 0.06014871597290039 seconds.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "n_reps = 1\n", "out, t_func, fname = repeat_solve(H_func_type, init_state, tlist, num_reps=n_reps,\n", " e_ops=meas, args=args)\n", "print(\"{} execution of func type took {} seconds.\".format(n_reps, t_func))\n", "\n", "# Plot qubit 1 expectations\n", "plot_exp(tlist, out.expect[:2], lbls=[\"E[Z]\", \"E[X]\"],\n", " title=\"Qubit 1 - func type\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### String type" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 execution of string type took 4.107965469360352 seconds.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "n_reps = 1\n", "out, t_func, fname = repeat_solve(H_str_type, init_state, tlist, num_reps=n_reps,\n", " e_ops=meas, args=args)\n", "print(\"{} execution of string type took {} seconds.\".format(n_reps, t_func))\n", "\n", "# Plot qubit 1 expectations\n", "plot_exp(tlist, out.expect[:2], lbls=[\"E[Z]\", \"E[X]\"],\n", " title=\"Qubit 1 - string type\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Comparing execution times" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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6afZfvvtN1juqquuYqeddmLGjBlcc801nHPOOdx6azLa6PLly3n66acZPnw4AH/729+YMGECM2bM4J577qGuro7Zs2dz991385e//IUZM2ZQU1OT2dlLg45/RjB/+oZ9Ag19BvOn+6zArA1bsGxVi+aXWv/+/Rk4cCAA++yzD6+//jorVqxg/vz5fOUrXwGSa/abc9BBB3HeeeexaNEi7r//fk444QQ6dUoOvYcffjg9evQA4Pjjj+epp56iU6dOTJs2jX333ReAVatWse2222bxJ66XWSKQ1AWYCmyebufeiLgsr87mwO3APsAS4OSIeL2kgRx4wcbz+g9xEjBr43p178r8Agf9Xt27lmwbnTp14qOPPlo/nXvZ5eabb77+dU1NDatWraK1A3mdfvrpTJgwgUmTJnHLLbesn59/hY8kIoIzzjiDK6+8slXbao0sm4Y+BA6JiL2AgcBRkgbn1Tkb+GdEfA74JfDzDOMxs3Zk9JG70LXzhu3iXTvXMPrIXUq2jX79+jF9+nQApk+fzrx585qs/8lPfpI+ffowefJkAD788ENWrly5QZ2tttqKFStWbDBv5MiRjB2b/HZpwIAB6+c/+uijLF26lFWrVjF58mQOOOAADj30UO69914WLVoEwNKlS3njjUZvHFoSmSWCSLyXTnZOH/npdARwW/r6XuBQ+SJjMyPpEL7y+D3o3b0rAnp378qVx+/R6o7iQk444QSWLl3KwIEDueGGG/j85z/f7DJ33HEH48aNY8899+RLX/oSb7311gblPXr04IADDmD33Xdn9OjRAHzmM59h11135cwzz9yg7oEHHsjpp5/OwIEDOeGEE6itrWW33XbjZz/7GUcccQR77rknhx9+OAsXLizZ31xIpmMWS6oBpgGfA66LiIvyyv8OHBUR9en0XGD/iHinsXXW1taGxyMwa59mz57NrrvuWukwym7lypXsscceTJ8+na233hqA8ePHU1dXx7XXXlvy7RXaz5KmRURtofqZXjUUEesiYiDQB9hP0u55VQp9+98oM0kaJalOUt3ixYuzCNXMLBOPPfYYX/jCF/jWt761Pgm0NZmeEWywIeky4P2I+M+ceY8Al0fEM5I6AW8BPaOJoHxGYNZ+VesZQbm1mTMCST0ldU9fdwUOA17OqzYFOCN9fSLwRFNJwMzMSi/L3xFsD9yW9hN8AvhNRDwk6SdAXURMAW4G7pA0B1gKnJJhPGZmVkBmiSAiXgT2LjB/TM7rD4CTsorBzMya1/FvMWFmZk1yIjCzqjd27NiNfhiW65xzzmHWrFmbvJ22emdSJwIza5vKOLpgU4lg3bp1/PrXv2a33Xbb5O04EZiZtUQGowu+//77HH300ey1117svvvu3H333YwbN44FCxZw8MEHc/DBBwPQrVs3xowZw/77788zzzzD0KFDabhsvVu3blx66aXstddeDB48mLfffhuAuXPnMnjwYPbdd1/GjBlDt27dNtp+7i2qR48ezemnn86DDz64vvy0005jypQpjB8/nhEjRnDUUUexyy678OMf/3h9nTvvvJP99tuPgQMH8o1vfIN169ZttJ0Wi4h29dhnn33CzNqnWbNmtWyB1/4U8fP+EY//LHl+7U+btP177703zjnnnPXTy5Yti4iIHXfcMRYvXrx+PhB33333+umDDjoonnvuufVlU6ZMiYiI0aNHx09/+tOIiDj66KPjrrvuioiIG264IbbccsuNtj9v3rwYMGDA+uknn3wyRowYsT6Wfv36xZo1a+LWW2+N7bbbLt55551YuXJlDBgwIJ577rmYNWtWHHPMMbF69eqIiPjmN78Zt91220bbKbSfSa7WLHhc9RmBmbVdJR5dcI899uCxxx7joosu4s9//nOjv/StqanhhBNOKFi22WabccwxxwAf354a4JlnnuGkk5KLIE899dSi4jnooIOYM2cOixYtYuLEiQVvUd21a9f1t6h+/PHH19+ieuDAgTz++OO89tprLdkFBXX88QjMrP0q8eiCn//855k2bRoPP/wwl1xyCUcccQRjxozZqF6XLl0aHRGsc+fO628fXVNTw9q1a1sdD7SNW1T7jMDM2qYMRhdcsGABW2yxBV/72te48MIL19+CutCto1tq8ODB60cxmzRpUsE6bfUW1U4EZtY2NTW6YCvNnDlzfUfrFVdcwY9+9CMARo0axbBhw9Z3FrfG2LFj+cUvfsF+++3HwoULCzY7tdVbVJftpnOl4pvOmbVfHfmmcytXrqRr165IYtKkSUycOHGDK4KaWq7Ut6hu6U3n3EdgZlYC06ZN4/zzzyci6N69+wbt/Y157LHHOOuss/je975X0VtU+4zAzMqmI58RtCVt5jbUZmbWPjgRmFlZtbdWiPamNfvXicDMyqZL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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "n_rep_list = [1, 2, 5, 10, 20] #, 100] #, 1000, 20000, 100000]\n", "# n_rep_list = [100, 1000, 20000, 100000, 500000]\n", "t_per_exec_f = []\n", "t_per_exec_s = []\n", "\n", "H_zero = H_i*0.0\n", "\n", "for i, n_reps in enumerate(n_rep_list):\n", " out, t_func, fname = repeat_solve(H_func_type, init_state, tlist,\n", " num_reps=n_reps,\n", " e_ops=meas, args=args)\n", "\n", " t_per_exec_f.append(t_func / n_reps)\n", " #print(\"{} execution of func type took {} seconds.\".format(n_reps, t_func))\n", "\n", " # twisted method of making the code change to force new hash and\n", " # hence recompile\n", " key = 'nreps{}'.format(i)\n", " args[key] = n_reps\n", " H = list(H_str_type)\n", " H.append([H_zero, key])\n", " out, t_func, fname = repeat_solve(H, init_state, tlist,\n", " num_reps=n_reps,\n", " e_ops=meas, args=args)\n", " #print(\"{} execution of string type took {} seconds.\".format(n_reps, t_func))\n", " t_per_exec_s.append(t_func / n_reps)\n", "\n", "fig = plt.figure()\n", "ax = fig.add_subplot(111)\n", "ax.plot(n_rep_list, t_per_exec_f, 'o', label=\"func type\")\n", "ax.plot(n_rep_list, t_per_exec_s, 'x', label=\"string type\")\n", "ax.set_xlabel(r\"$N_{\\rm{reps}}$\")\n", "ax.set_ylabel(\"exec time per rep\")\n", "ax.set_title(\"Comparing Method Exec Time\")\n", "ax.legend()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "n_rep_list = [1000, 5000, 10000, 15000, 20000, 50000, 100000]\n", "t_per_exec_f = []\n", "t_per_exec_s = []\n", "\n", "H_zero = H_i*0.0\n", "\n", "for i, n_reps in enumerate(n_rep_list):\n", " out, t_func, fname = repeat_solve(H_func_type, init_state, tlist,\n", " num_reps=n_reps,\n", " e_ops=meas, args=args)\n", "\n", " t_per_exec_f.append(t_func / n_reps)\n", " #print(\"{} execution of func type took {} seconds.\".format(n_reps, t_func))\n", "\n", " # twisted method of making the code change to force new hash and\n", " # hence recompile\n", " key = 'nreps{}'.format(i)\n", " args[key] = n_reps\n", " H = list(H_str_type)\n", " H.append([H_zero, key])\n", " out, t_func, fname = repeat_solve(H, init_state, tlist,\n", " num_reps=n_reps,\n", " e_ops=meas, args=args)\n", " #print(\"{} execution of string type took {} seconds.\".format(n_reps, t_func))\n", " t_per_exec_s.append(t_func / n_reps)\n", "\n", "fig = plt.figure()\n", "ax = fig.add_subplot(111)\n", "ax.plot(n_rep_list, t_per_exec_f, 'o', label=\"func type\")\n", "ax.plot(n_rep_list, t_per_exec_s, 'x', label=\"string type\")\n", "ax.set_xlabel(r\"$N_{\\rm{reps}}$\")\n", "ax.set_ylabel(\"exec time per rep\")\n", "ax.set_title(\"Comparing Method Exec Time\")\n", "ax.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Questions\n", "\n", "1. Can we do away with the temporary `.pyx` file?\n", "2. Can we do away with runtime compilation all together?\n", " - and still have arbitrary time dependence at compiled code speed" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.4" } }, "nbformat": 4, "nbformat_minor": 2 }