{ "cells": [ { "cell_type": "markdown", "id": "0df37c9b-35ed-4cff-8c17-bfecbebdfc47", "metadata": {}, "source": [ "(ext_precision_tutorial)=\n", "\n", "Computations in extended precision\n", "==================================\n", "\n", "As hinted in the [expression system tutorial](<./The expression system.ipynb>), heyoka.py supports computations not only in double precision, but also in extended precision. Specifically, heyoka.py currently supports:\n", "\n", "- the 80-bit IEEE [extended-precision format](https://en.wikipedia.org/wiki/Extended_precision) (~21 decimal digits),\n", "- the 128-bit IEEE [quadruple-precision format](https://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format) (~36 decimal digits).\n", "\n", "How these extended precision floating-point types can be accessed and used from Python varies depending on the platform. In particular:\n", "\n", "- if you are using an Intel x86 processor and your C/C++ compiler implements ``long double`` as the 80-bit IEEE extended-precision format, then the 80-bit IEEE floating-point type is available as the NumPy {py:class}`~numpy.longdouble` type;\n", "- if you are on a platform with support for the non-standard ``__float128`` type, then the 128-bit IEEE floating-point type is available as the ``heyoka.real128`` type;\n", "- if you are on a platform where the C/C++ ``long double`` type is implemented as a quadruple-precision IEEE floating-point type (e.g., 64-bit Linux ARM), then the 128-bit IEEE floating-point type is available as the NumPy {py:class}`~numpy.longdouble` type.\n", "\n", "In other words, extended precision computations in heyoka.py are supported via the NumPy {py:class}`~numpy.longdouble` type (which could be either an 80-bit or 128-bit floating-point type, depending on the platform) and the ``heyoka.real128`` type (which will always be a 128-bit floating-point type, if available).\n", "\n", "Extended-precision (80-bit) example\n", "-----------------------------------\n", "\n", "For this first example, we will be assuming that {py:class}`~numpy.longdouble` implements the 80-bit extended-precision floating-point format. In order to verify that heyoka.py indeed is able to work in extended precision, we will be monitoring the evolution of the energy constant in a high-precision numerical integration of the simple pendulum.\n", "\n", "Let us begin as usual with the definition of the dynamical equations:" ] }, { "cell_type": "code", "execution_count": 1, "id": "fe2b2c0e-30c7-41c1-9fb0-6b411633ac04", "metadata": {}, "outputs": [], "source": [ "import heyoka as hy\n", "\n", "# Create the symbolic variables x and v.\n", "x, v = hy.make_vars(\"x\", \"v\")\n", "\n", "# Define the dynamical equations.\n", "sys = [(x, v), (v, -9.8 * hy.sin(x))]\n", "\n", "\n", "# Define a small helper to compute the energy\n", "# from the state vector.\n", "def compute_energy(sv):\n", " from numpy import cos\n", "\n", " return (sv[1] * sv[1]) / 2 + sv.dtype.type(9.8) * (1 - cos(sv[0]))" ] }, { "cell_type": "markdown", "id": "1a231646-1eb7-4dff-8794-fbd62809b507", "metadata": {}, "source": [ "Next, we are going to create an integrator object in extended precision:" ] }, { "cell_type": "code", "execution_count": 2, "id": "2fe95775-6665-4d37-8a8a-a291b181f306", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "ta = hy.taylor_adaptive(\n", " sys,\n", " # Initial conditions in extended precision.\n", " np.array([-1, 0], dtype=np.longdouble),\n", " # Tolerance - also in extended precision.\n", " tol=np.longdouble(1e-20),\n", " # Specify that the integrator must operate\n", " # in extended precision.\n", " fp_type=np.longdouble,\n", ")" ] }, { "cell_type": "markdown", "id": "bd4dd640-3549-4867-9542-d0a7f9a28b4d", "metadata": {}, "source": [ "In order to enable extended precision, we passed the ``fp_type=np.longdouble`` argument to the constructor, and we made sure that both the initial state vector ``[0.05, 0.025]`` and the tolerance value ``1e-20`` are specified in extended precision.\n", "\n", "Next, we compute and store the initial energy of the system for later use:" ] }, { "cell_type": "code", "execution_count": 3, "id": "26198fa4-e5b7-48d7-9bd7-0db89c1ad7c3", "metadata": {}, "outputs": [], "source": [ "# Compute the initial energy of the system.\n", "orig_E = compute_energy(ta.state)" ] }, { "cell_type": "markdown", "id": "982f68de-101e-49af-a1df-6d031ab19001", "metadata": {}, "source": [ "We proceed now with a numerical integration over a time grid, up to $t=300$:" ] }, { "cell_type": "code", "execution_count": 4, "id": "d827e5fd-a2ee-4b3a-8b48-544d8fb01241", "metadata": {}, "outputs": [], "source": [ "# Create a time grid in extended precision.\n", "t_grid = np.linspace(0, 300, 100, dtype=np.longdouble)\n", "out = ta.propagate_grid(t_grid)[-1]" ] }, { "cell_type": "markdown", "id": "b0e90025-2c7e-4f32-a7ea-a43e3ed56625", "metadata": {}, "source": [ "Note how the time grid was also created in extended precision.\n", "\n", "We can now proceed with the computation and the visualisation of the energy error:" ] }, { "cell_type": "code", "execution_count": 5, "id": "67266731-0ad8-4a27-b1e7-5e758f6719d2", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Compute the relative energy error over the time grid.\n", "E_err = abs((orig_E - compute_energy(out.transpose())) / orig_E)\n", "\n", "# Plot the energy error.\n", "from matplotlib.pylab import plt\n", "\n", "fig = plt.figure(figsize=(8, 6))\n", "plt.semilogy(t_grid, E_err)\n", "plt.xlabel(\"Time\")\n", "plt.ylabel(\"Rel. energy error\");" ] }, { "cell_type": "markdown", "id": "43d3b75a-4ca1-4dc3-bbe4-ac55eff75cba", "metadata": {}, "source": [ "We can see indeed how the energy error is kept at around the epsilon of the extended-precision floating-point type ($\\sim 10^{-19}$).\n", "\n", "Quadruple-precision (128-bit) example\n", "-------------------------------------\n", "\n", "Switching to quadruple precision is just a matter of replacing {py:class}`~numpy.longdouble` with ``heyoka.real128``:" ] }, { "cell_type": "code", "execution_count": 6, "id": "a6ed179e-e8a7-47e0-8304-52423809fa21", "metadata": {}, "outputs": [], "source": [ "ta = hy.taylor_adaptive(\n", " sys,\n", " # Initial conditions in quadruple precision.\n", " np.array([-1, 0], dtype=hy.real128),\n", " # Tolerance - also in quadruple precision.\n", " tol=hy.real128(1e-35),\n", " # Specify that the integrator must operate\n", " # in quadruple precision.\n", " fp_type=hy.real128,\n", ")" ] }, { "cell_type": "markdown", "id": "cf69c728-6ef1-4e0f-bafe-27bc54d3e271", "metadata": {}, "source": [ "``heyoka.real128`` is a Python wrapper for the [``real128``](https://bluescarni.github.io/mppp/real128.html) C++ class from the mp++ library. In addition to being available as a scalar type, ``heyoka.real128`` can also be used as a ``dtype`` in NumPy, so that it is possible to create and manipulate NumPy arrays of ``heyoka.real128`` instances.\n", "\n", "Like in the previous example, we can now proceed to monitor the energy conservation for the pendulum system:" ] }, { "cell_type": "code", "execution_count": 7, "id": "0f894adf-a092-46ce-9ca2-8ebc9ed6dbc6", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsQAAAINCAYAAAA5smn/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAACP80lEQVR4nO3deZwcdZ0//lf1OVfPfWdyhyTkJBeXcomCKCCyurjqirK6olHXY3UVfiusuwpf18Vjie4uIMouCusK3ojc4RBIQhIIIRe5ZpKZTObuufqs3x/dn+qanj6qqqu6+ng9Hw8ewsykp9LTTr/73a/P+y3JsiyDiIiIiKhMOey+ACIiIiIiO7EgJiIiIqKyxoKYiIiIiMoaC2IiIiIiKmssiImIiIiorLEgJiIiIqKyxoKYiIiIiMoaC2IiIiIiKmsuuy+gWEWjUZw8eRI+nw+SJNl9OURERESURJZl+P1+dHZ2wuFI3wdmQWzQyZMnMXfuXLsvg4iIiIiy6O7uRldXV9rPsyA2yOfzAYjdwbW1tTZfDRERERElGxsbw9y5c5W6LR0WxAaJmERtbS0LYiIiIqICli3eykN1RERERFTWWBATERERUVljQUxEREREZY0FMRERERGVNRbERERERFTWWBATERERUVljQUxEREREZY0FMRERERGVNRbERERERFTWWBATERERUVljQUxEREREZY0FMRERERGVNRbERERERFTWWBATERERUVljQUxEREREZY0FMRERERGVNRbERERERBaYCITxWs+o3ZdBGrAgJiIiIjKZLMv42//ejqvufA4vHh60+3IoCxbERERERCb78+FBPH8oVgizIC58LIiJiIiITPb9xw8q/7735JiNV0JasCAmIiIiMtGLhwfx0pEh5b/f6GNBXOhYEOu0ZcsWrFixAps2bbL7UoiIiKgA/eCJWHf43Ws6AADdQ1PwT4fsvCTKggWxTps3b8bevXuxbds2uy+FiIiICsy2o0N44c1BuJ0SbnrXmeioqwAA7Ovz23xllAkLYiIiIiKTiOzw+zbMxZz6SpzZUQuAOeJCx4KYiIiIyAQ7jg3huUMDcDkkfPrixQCAFfGC+I1eFsSFjAUxERERkQm+/8QhAMD7NnRhbmMVACgdYhbEhY0FMREREVGOdh4fxtYDp+F0SPj0xUuUj5/Z4QMA7D/lRyQq23V5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ehvj/jFEA5MIT0dtvT+IiIiI1ERdIuq2dCQ521dQSj09PZg7d67dl0FEREREWXR3d6Orqyvt51kQGxSNRnHy5En4fD5IkmT59xsbG8PcuXPR3d2N2tpay78fxfB+twfvd3vwfrcH73d78H63R77vd1mW4ff70dnZCYcjfVKYkQmDHA5HxlcaVqmtreX/cW3A+90evN/twfvdHrzf7cH73R75vN/r6uqyfg0P1RERERFRWWNBTERERERljQVxkfB6vbjlllvg9XrtvpSywvvdHrzf7cH73R683+3B+90ehXq/81AdEREREZU1doiJiIiIqKyxICYiIiKissaCmIiIiIjKGgtiIiIiIiprLIiLwA9/+EMsXLgQFRUV2LBhA5599lm7L6mk3HrrrZAkacY/7e3tyudlWcatt96Kzs5OVFZW4uKLL8brr79u4xUXp61bt+Kqq65CZ2cnJEnCr371qxmf13I/BwIBfPazn0VzczOqq6tx9dVXo6enJ49/i+KT7X7/6Ec/Ouvxf+655874Gt7v+tx2223YtGkTfD4fWltbcc0112D//v0zvoaPd/Npud/5eDffj370I6xZs0ZZtHHeeefhkUceUT5fLI91FsQF7sEHH8TnP/953Hzzzdi5cycuuOACXHHFFTh+/Ljdl1ZSVq5cid7eXuWf1157Tfnct7/9bdxxxx248847sW3bNrS3t+Md73gH/H6/jVdcfCYmJrB27VrceeedKT+v5X7+/Oc/j4cffhgPPPAAnnvuOYyPj+PKK69EJBLJ11+j6GS73wHgne9854zH/x/+8IcZn+f9rs8zzzyDzZs348UXX8Rjjz2GcDiMyy67DBMTE8rX8PFuPi33O8DHu9m6urpw++23Y/v27di+fTve9ra34T3veY9S9BbNY12mgnb22WfLN95444yPLV++XP7qV79q0xWVnltuuUVeu3Ztys9Fo1G5vb1dvv3225WPTU9Py3V1dfJ//Md/5OkKSw8A+eGHH1b+W8v9PDIyIrvdbvmBBx5QvubEiROyw+GQ//jHP+bt2otZ8v0uy7J8/fXXy+95z3vS/hne77nr7++XAcjPPPOMLMt8vOdL8v0uy3y850tDQ4N89913F9VjnR3iAhYMBrFjxw5cdtllMz5+2WWX4YUXXrDpqkrTwYMH0dnZiYULF+IDH/gADh8+DAA4cuQI+vr6ZvwMvF4vLrroIv4MTKTlft6xYwdCodCMr+ns7MSqVav4s8jR008/jdbWVixduhSf+MQn0N/fr3yO93vuRkdHAQCNjY0A+HjPl+T7XeDj3TqRSAQPPPAAJiYmcN555xXVY50FcQEbGBhAJBJBW1vbjI+3tbWhr6/PpqsqPeeccw7uu+8+PProo7jrrrvQ19eH888/H4ODg8r9zJ+BtbTcz319ffB4PGhoaEj7NaTfFVdcgfvvvx9PPvkk/u3f/g3btm3D2972NgQCAQC833MlyzK++MUv4q1vfStWrVoFgI/3fEh1vwN8vFvltddeQ01NDbxeL2688UY8/PDDWLFiRVE91l15+05kmCRJM/5bluVZHyPjrrjiCuXfV69ejfPOOw+LFy/GT3/6U+WwBX8G+WHkfubPIjfXXXed8u+rVq3Cxo0bMX/+fPz+97/Htddem/bP8X7X5jOf+QxeffVVPPfcc7M+x8e7ddLd73y8W2PZsmXYtWsXRkZG8Mtf/hLXX389nnnmGeXzxfBYZ4e4gDU3N8PpdM56hdTf3z/r1RaZp7q6GqtXr8bBgweVaRP8GVhLy/3c3t6OYDCI4eHhtF9Duevo6MD8+fNx8OBBALzfc/HZz34Wv/nNb/DUU0+hq6tL+Tgf79ZKd7+nwse7OTweD5YsWYKNGzfitttuw9q1a/H973+/qB7rLIgLmMfjwYYNG/DYY4/N+Phjjz2G888/36arKn2BQABvvPEGOjo6sHDhQrS3t8/4GQSDQTzzzDP8GZhIy/28YcMGuN3uGV/T29uLPXv28GdhosHBQXR3d6OjowMA73cjZFnGZz7zGTz00EN48sknsXDhwhmf5+PdGtnu91T4eLeGLMsIBALF9VjP2/E9MuSBBx6Q3W63fM8998h79+6VP//5z8vV1dXy0aNH7b60kvGlL31Jfvrpp+XDhw/LL774onzllVfKPp9PuY9vv/12ua6uTn7ooYfk1157Tf6rv/oruaOjQx4bG7P5youL3++Xd+7cKe/cuVMGIN9xxx3yzp075WPHjsmyrO1+vvHGG+Wuri758ccfl1955RX5bW97m7x27Vo5HA7b9dcqeJnud7/fL3/pS1+SX3jhBfnIkSPyU089JZ933nnynDlzeL/n4FOf+pRcV1cnP/3003Jvb6/yz+TkpPI1fLybL9v9zse7Nb72ta/JW7dulY8cOSK/+uqr8k033SQ7HA75T3/6kyzLxfNYZ0FcBLZs2SLPnz9f9ng88vr162eMkKHcXXfddXJHR4fsdrvlzs5O+dprr5Vff/115fPRaFS+5ZZb5Pb2dtnr9coXXnih/Nprr9l4xcXpqaeekgHM+uf666+XZVnb/Tw1NSV/5jOfkRsbG+XKykr5yiuvlI8fP27D36Z4ZLrfJycn5csuu0xuaWmR3W63PG/ePPn666+fdZ/yftcn1f0NQL733nuVr+Hj3XzZ7nc+3q1xww03KDVKS0uLfOmllyrFsCwXz2NdkmVZzl8/moiIiIiosDBDTERERERljQUxEREREZU1FsREREREVNZYEBMRERFRWWNBTERERERljQUxEREREZU1FsREREREVNZYEBMRlZFbb70VZ511lt2XQURUULiYg4ioREiSlPHz119/Pe68804EAgE0NTXl6aqIiAofC2IiohLR19en/PuDDz6Ir3/969i/f7/yscrKStTV1dlxaUREBY2RCSKiEtHe3q78U1dXB0mSZn0sOTLx0Y9+FNdccw2+9a1voa2tDfX19finf/onhMNhfPnLX0ZjYyO6urrw4x//eMb3OnHiBK677jo0NDSgqakJ73nPe3D06NH8/oWJiEzCgpiIqMw9+eSTOHnyJLZu3Yo77rgDt956K6688ko0NDTgpZdewo033ogbb7wR3d3dAIDJyUlccsklqKmpwdatW/Hcc8+hpqYG73znOxEMBm3+2xAR6ceCmIiozDU2NuIHP/gBli1bhhtuuAHLli3D5OQkbrrpJpxxxhn42te+Bo/Hg+effx4A8MADD8DhcODuu+/G6tWrceaZZ+Lee+/F8ePH8fTTT9v7lyEiMsBl9wUQEZG9Vq5cCYcj0R9pa2vDqlWrlP92Op1oampCf38/AGDHjh04dOgQfD7fjNuZnp7Gm2++mZ+LJiIyEQtiIqIy53a7Z/y3JEkpPxaNRgEA0WgUGzZswP333z/rtlpaWqy7UCIii7AgJiIiXdavX48HH3wQra2tqK2ttftyiIhyxgwxERHp8qEPfQjNzc14z3veg2effRZHjhzBM888g7/7u79DT0+P3ZdHRKQbC2IiItKlqqoKW7duxbx583DttdfizDPPxA033ICpqSl2jImoKHExBxERERGVNXaIiYiIiKissSAmIiIiorLGgpiIiIiIyhoLYiIiIiIqayyIiYiIiKissSAmIiIiorLGgpiIiIiIyhoLYiIiIiIqayyIiYiIiKissSAmIiIiorLGgpiIiIiIyhoLYiIiIiIqa/8/SD2uF0snuG0AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Compute the initial energy of the system.\n", "orig_E = compute_energy(ta.state)\n", "\n", "# Create a time grid in quadruple precision.\n", "t_grid = np.linspace(0, 300, 100, dtype=hy.real128)\n", "out = ta.propagate_grid(t_grid)[-1]\n", "\n", "# Compute the relative energy error over the time grid.\n", "E_err = abs((orig_E - compute_energy(out.transpose())) / orig_E)\n", "\n", "# Plot the energy error.\n", "from matplotlib.pylab import plt\n", "\n", "fig = plt.figure(figsize=(8, 6))\n", "plt.semilogy(t_grid, E_err)\n", "plt.xlabel(\"Time\")\n", "plt.ylabel(\"Rel. energy error\");" ] }, { "cell_type": "markdown", "id": "a2031fa2-3fcf-4f39-b89f-7975181fe5a6", "metadata": {}, "source": [ "We can see indeed how the energy error is kept at around the epsilon of the quadruple-precision floating-point type.\n", "\n", "Other classes and functions\n", "---------------------------\n", "\n", "Besides the adaptive integrator, several other classes and functions in heyoka.py can be used in extended precision. The [event classes](<./Event detection.ipynb>), for instance, can be constructed in extended precision:" ] }, { "cell_type": "code", "execution_count": 8, "id": "7abed49e-eeb9-4df3-8cf2-bbdd35da9982", "metadata": {}, "outputs": [], "source": [ "# Construct a terminal event in extended precision.\n", "ev = hy.t_event(x, fp_type=np.longdouble, cooldown=np.longdouble(1e-8))" ] }, { "cell_type": "markdown", "id": "1d7b5003-096a-4e84-be6f-d1e9b180d5fb", "metadata": {}, "source": [ "As with the adaptive integrator, in order to enable extended precision we must pass the ``fp_type`` keyword argument, and any numerical quantity passed to the constructor (such as the cooldown in this specific case) must also be created in extended precision.\n", "\n", "Note that the precision of an event must match the precision of the integrator object in which the event is used, otherwise a runtime error will be raised during the construction of the integrator.\n", "\n", "Caveats, limitations & issues\n", "-----------------------------\n", "\n", "### Initialising numbers in extended precision\n", "\n", "A typical pitfall when working with extended precision numbers involves their initialisation. For instance, if you want to initialise a quadruple-precision approximation of the number $1.1$, you may be tempted to write:" ] }, { "cell_type": "code", "execution_count": 9, "id": "233be55b-d3ac-4d1f-b66e-5b296beaed7c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.10000000000000008881784197001252323" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hy.real128(1.1)" ] }, { "cell_type": "markdown", "id": "dc7a7b58-211c-4b9b-822b-8b989d9cdb3c", "metadata": {}, "source": [ "As you can see however, doing so does not produce the best possible quadruple-precision approximation of $1.1$. The issue here is that the Python literal ``1.1`` is first interpreted as a double-precision value, and then widened to quadruple-precision in the conversion to ``hy.real128``.\n", "\n", "The issue can be solved by initialising from string:" ] }, { "cell_type": "code", "execution_count": 10, "id": "32fc0f70-537f-4fd7-ad06-fd90a09f8332", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.10000000000000000000000000000000008" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hy.real128(\"1.1\")" ] }, { "cell_type": "markdown", "id": "f2615fcc-a2c3-44bb-a896-df082ebc08f1", "metadata": {}, "source": [ "Similarly, if you need to construct an extended precision value from a fraction, it is better to construct the numerator and denominator separately, and then compute the quotient:" ] }, { "cell_type": "code", "execution_count": 11, "id": "474499be-4e20-4d95-87f9-d43383f941c1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.299999999999999988897769753748434596" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Don't do this!\n", "hy.real128(3.0 / 10.0)" ] }, { "cell_type": "code", "execution_count": 12, "id": "8c49a476-239a-4cb2-a7a1-6592b665b624", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.29999999999999999999999999999999999" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Do this instead.\n", "hy.real128(3) / hy.real128(10)" ] }, { "cell_type": "markdown", "id": "73f78f34-e1c0-4267-92b0-8f84771c91e9", "metadata": {}, "source": [ "### NumPy issues and limitations\n", "\n", "Although it is possible to construct NumPy arrays in extended precision and to perform basic operations on them, there are limitations to what one can do with extended precision arrays.\n", "\n", "To begin with, many NumPy facilities are not available at all in extended precision (e.g., random number generation, nontrivial linear algebra, etc.). In addition, there seem to be several small issues involving NumPy's casting and conversion primitives when using the ``heyoka.real128`` type, which typically result in runtime exceptions. It is unclear at this time whether these are genuine NumPy bugs or issues in the ``heyoka.real128`` wrapping code.\n", "\n", "Despite these limitations, basic uses of extended precision arrays (such as slicing, indexing, arithmetic, special functions and explicit conversions to/from other types) are supported and working as intended." ] } ], "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.12.4" } }, "nbformat": 4, "nbformat_minor": 5 }