{ "cells": [ { "cell_type": "markdown", "id": "82967304-c98c-4f70-9dfe-7eed05f02fd6", "metadata": {}, "source": [ "# 2025-08-25 Functions\n", "\n", "* Review last time\n", "\n", "* Julia intro\n", "\n", "* Julia plotting\n", "\n", "* Floating point numbers\n", "\n", "* Relative & absolute errors" ] }, { "cell_type": "markdown", "id": "c7273e03-d6bd-460c-a626-f4f2bcea8102", "metadata": {}, "source": [ "## Julia\n", "\n", "* Fairly new (2012)\n", "\n", "* Can be complied or interperted\n", "\n", "* Easy to pick up if you know Matlab or Python\n", "\n", "* [https://julialang.org/learning](https://julialang.org/learning)\n", "\n", "* CSCI provides JupyterHub at [https://coding.csel.io](https://coding.csel.io)" ] }, { "cell_type": "code", "execution_count": 1, "id": "1210b9c1-56ca-4ebc-a681-348b5d4e2f30", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "42" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Note which one gets printed out\n", "x = 13\n", "y = 42" ] }, { "cell_type": "code", "execution_count": 2, "id": "9c4637fd-7a53-4030-aad4-7a492ea79058", "metadata": {}, "outputs": [], "source": [ "# Semicolons supress output printing\n", "x = 9;" ] }, { "cell_type": "code", "execution_count": 3, "id": "379965c9-d70f-458e-9154-49374ea3e1fe", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "9 + 42 = 51\n" ] } ], "source": [ "# Can also do formatted printing\n", "println(\"$x + $y = $(x + y)\")" ] }, { "cell_type": "code", "execution_count": 4, "id": "5b9610f3-06b9-4c90-b22d-c5c443f1b657", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x + y = 51\n" ] }, { "data": { "text/plain": [ "51" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Also have the ability to print the operation and result\n", "# Note the annoying side effect here of the parsing rules\n", "@show x + y" ] }, { "cell_type": "code", "execution_count": 5, "id": "9090a35c-885f-485f-b32e-8994913c03f2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "area = π * x ^ 2 = 254.46900494077323\n" ] } ], "source": [ "# And math can be written *as* math\n", "@show area = π * x^2;" ] }, { "cell_type": "markdown", "id": "28e372df-54bb-49fc-86ce-3b9b57e0fb93", "metadata": {}, "source": [ "## Numbers" ] }, { "cell_type": "code", "execution_count": 6, "id": "5a74f457-766c-4834-89ef-f59b3510528a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(Int64, BigInt, Float32, Float64, BigFloat)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# What are all of these types?\n", "typeof(42), typeof(big(42)), typeof(42.0f0), typeof(42.0), typeof(big(42.0))" ] }, { "cell_type": "code", "execution_count": 7, "id": "f37526b4-b978-47b1-b003-4958039bbffc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "13 + 42.0 = 55.0\n", "13.0f0 + 42.0 = 55.0\n", "13 + 42.0f0 = 55.0f0\n" ] } ], "source": [ "# What are the promotion rules?\n", "@show 13 + 42.0\n", "@show 13.0f0 + 42.0\n", "@show 13 + 42.0f0;" ] }, { "cell_type": "code", "execution_count": 8, "id": "e75b4717-a877-4a17-8bd2-a19364ace2dc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "42 / 13 = 3.230769230769231\n", "42 ÷ 13 = 3\n" ] } ], "source": [ "# Watch out for division rules\n", "@show 42 / 13\n", "@show 42 ÷ 13;" ] }, { "cell_type": "code", "execution_count": 9, "id": "022c7d5a-b8b3-48cc-ba9a-4bf402605f86", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-42 / 13 = -3.230769230769231\n", "-42 ÷ 13 = -3\n" ] } ], "source": [ "# And how integer division works\n", "@show -42 / 13\n", "@show -42 ÷ 13;" ] }, { "cell_type": "markdown", "id": "5d2aaab8-c44b-40a1-b36e-8f0760b4e09c", "metadata": {}, "source": [ "## Arrays" ] }, { "cell_type": "code", "execution_count": 10, "id": "d065e47f-295f-4bd9-b388-194907aed6cf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Int64}:\n", " 1\n", " 2\n", " 3" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Note that changing the type in assigment is ok\n", "x = [1, 2, 3]" ] }, { "cell_type": "code", "execution_count": 11, "id": "ebe2a1b9-6ca3-429d-ab70-2693067c9102", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Float64}:\n", " 4.0\n", " 5.0\n", " 6.0" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# But I want floats?\n", "x = Float64[4, 5, 6]" ] }, { "cell_type": "code", "execution_count": 12, "id": "e650d070-628b-4af9-84c0-63110fed1479", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Float64}:\n", " 5.0\n", " 7.0\n", " 9.0" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Note promotion rules still work\n", "[1, 2, 3.] + [4, 5, 6]" ] }, { "cell_type": "code", "execution_count": 13, "id": "ed84a974-d0cc-44c3-84c6-ea5ca0ea3175", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x[2] = 13 = 13\n" ] }, { "data": { "text/plain": [ "Float64" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 1 based indexing scheme (😭)\n", "@show x[2] = 13\n", "typeof(x[2])" ] }, { "cell_type": "code", "execution_count": 14, "id": "8e921c94-b2e7-43c8-b4de-652bec8c9703", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Matrix{Float64}:\n", " 1.0 2.0 3.0\n", " 4.0 5.0 6.0\n", " 7.0 8.0 9.0" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# And matrixes are 2D arrays\n", "A = [1. 2 3; 4 5 6; 7 8 9]" ] }, { "cell_type": "markdown", "id": "38d25ddb-5ed0-4b2b-94f0-cea3ea699913", "metadata": {}, "source": [ "## Functions" ] }, { "cell_type": "code", "execution_count": 15, "id": "b481437f-6924-49c3-9738-2b4f622191c3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "f (generic function with 1 method)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Basic syntax\n", "function f(x, y; z = 3)\n", " return (x + y) * z\n", "end" ] }, { "cell_type": "code", "execution_count": 16, "id": "9929ff90-ef12-4635-9bde-499de7a5a608", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "y1 = f(1, 2) = 9\n", "y2 = f(1, 2; z = 4) = 12\n" ] } ], "source": [ "# z is an optional parameter with a default value\n", "@show y1 = f(1, 2)\n", "@show y2 = f(1, 2; z = 4);" ] }, { "cell_type": "code", "execution_count": 17, "id": "94d98982-7f78-4164-838f-797b6a5dadbc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "f (generic function with 1 method)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# But what is returned here?\n", "function f(x, y; z = 3)\n", " (x + y) * z\n", "end" ] }, { "cell_type": "code", "execution_count": 18, "id": "1e5ae6e9-df86-4dd1-a385-c48128546e0c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "y1 = f(1, 2) = 9\n", "y2 = f(1, 2; z = 4) = 12\n" ] } ], "source": [ "# Last statement executed in functino return value\n", "@show y1 = f(1, 2)\n", "@show y2 = f(1, 2; z = 4);" ] }, { "cell_type": "code", "execution_count": 19, "id": "7c8cc34a-4cd8-453f-b07c-368fa06ce69f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "f (generic function with 1 method)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Function 'assignment form'\n", "f(x, y; z = 3) = (x + y) * z" ] }, { "cell_type": "code", "execution_count": 20, "id": "1a8c5628-6601-415c-905a-07f3eb462b3b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "y1 = f(1, 2) = 9\n", "y2 = f(1, 2; z = 4) = 12\n" ] } ], "source": [ "# It works the same way - that's comforting\n", "@show y1 = f(1, 2)\n", "@show y2 = f(1, 2; z = 4);" ] }, { "cell_type": "code", "execution_count": 21, "id": "ed036bda-61b0-4b82-8e90-c9c6f08ee380", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "24" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Anonymous functions\n", "((x, y; z = 3) -> (x + y) * z)(1, 2; z = 8)" ] }, { "cell_type": "code", "execution_count": 22, "id": "a05a2dc9-d3c6-40cf-ac39-ecf5dc390de3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Int64}:\n", " 4\n", " 9\n", " 16" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# This is useful in the same way as in Python or JS\n", "map(x -> x^2, [2, 3, 4])" ] }, { "cell_type": "code", "execution_count": 23, "id": "c35d3f30-077c-4a1a-9541-301ada8a9dde", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Int64}:\n", " 4\n", " 10\n", " 18" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[1, 2, 3] .* [4, 5, 6]" ] }, { "cell_type": "markdown", "id": "cfb7d2e6-c552-482d-82f6-1d18bc53402a", "metadata": {}, "source": [ "## Loops" ] }, { "cell_type": "code", "execution_count": 24, "id": "4e8138c1-43bf-45d0-bb7d-0fc541449b0e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1:13" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Ranges like in Python or Rust\n", "1:13" ] }, { "cell_type": "code", "execution_count": 25, "id": "8ecbfc94-eb51-4135-b6fa-537ea0dcbf0d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "13-element Vector{Float64}:\n", " 1.0\n", " 2.0\n", " 3.0\n", " 4.0\n", " 5.0\n", " 6.0\n", " 7.0\n", " 8.0\n", " 9.0\n", " 10.0\n", " 11.0\n", " 12.0\n", " 13.0" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Can create arrays this way\n", "collect(1:13.)" ] }, { "cell_type": "code", "execution_count": 26, "id": "be6f20b0-c780-415e-81b0-d2fc0836b0ff", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "π - estimate = -0.00033115593401644716\n" ] } ], "source": [ "# And for loops use ranges\n", "iterations = 420000\n", "hits = 0\n", "for i in 1:iterations\n", " hits += √(rand()^2 + rand()^2) ≤ 1\n", "end\n", "estimate = 4 * hits / iterations\n", "@show π - estimate;" ] }, { "cell_type": "code", "execution_count": 27, "id": "499f9ae9-3865-4cea-95f8-e0719057268f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "π ^ 2 / 6 - estimate = 7.692011841831103e-5\n" ] } ], "source": [ "# List comprehension also works\n", "estimate = sum([1/n^2 for n in 1:13000])\n", "@show π^2 / 6 - estimate;" ] }, { "cell_type": "markdown", "id": "b80a0942-d3f4-4a65-80b3-dc4554b7d2c6", "metadata": {}, "source": [ "## Plotting" ] }, { "cell_type": "code", "execution_count": 28, "id": "f526e093-08f7-498c-9b4e-294415d3ead7", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\u001b[32m\u001b[1m Updating\u001b[22m\u001b[39m registry at `~/.julia/registries/General.toml`\n", "\u001b[32m\u001b[1m Resolving\u001b[22m\u001b[39m package versions...\n", "\u001b[32m\u001b[1m No Changes\u001b[22m\u001b[39m to `~/.julia/environments/v1.11/Project.toml`\n", "\u001b[32m\u001b[1m No Changes\u001b[22m\u001b[39m to `~/.julia/environments/v1.11/Manifest.toml`\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdd1wT9/8H8M9lETZhCyhuceFeuBUVrbOI1WL9tmrde9Xa9tt+u1Vc1Wrrqq2KilprXTiqtaA4oNq6B4iKIggJWWTf/f4Iv3ggI0BIgLyeD/8w73zu8hEwLz6Xu3tTDMMQAAAAe8Wx9QQAAABsCUEIAAB2DUEIAAB2DUEIAAB2DUEIAAB2DUEIAAB2DUEIAAB2DUEIAAB2DUEIAAB2DUEIAAB2DUFoM2q1+oMPPrD1LGonnU5n6ynUTnq93tZTqJ1omqZp2tazqJ3M+aFFENqMVCrdsWOHrWdRO6nValtPoXbSaDS4O3FV0Ov1+CWjKtA0rdFoyhyGIAQAALuGIAQAALuGIAQAALuGIAQAALuGIAQAALuGIAQAALuGIAQAgNrpmZJR6qkyhyEIAQCgFjr4iG64n06Vlz0SQQgAALXQmpu03rzb9SAIAQCgFnpp9g2mEIQ1xpgxY6iaz8PDA/dUBAArUJh9y2FeVU4DLCkvL+/UqVMDBgyw9UQqhcfj4WaVAGAFCp25bzVYEQIAQG3DEKI0+zbmCEIAAKhtVHpiMPvYEw6NlptCoVi9enVycvLdu3cbN258/Phx9rOtWrVSqVSmhyNHjly1apXV5wgAYNfM/4CQIAgrIC8v7/Dhwx07dszNzc3IyCjybHp6+uTJk7t37258GBwcbPUJAgDYO4W+HOciIAjLLSgoKCUlhRAyc+bMhISE1wd06dIlKirK6vMCAIAC5VoR4jNCy3vy5El8fPyNGzfQchoAwCZwaNTG/vvf/7q6uubm5gYFBe3Zs6dHjx62nhEAgH2RIwgr7NGjR3v27Cn2qXr16o0fP77MPcTHx3fr1o3L5T5+/Pjtt98eMWJEWlqau7u7pWcKAAAlMv8iQoIgLEIsFp8/f77Yp1q3bm1OEJrWf8HBwT/88ENoaOjly5cHDhxoyVkCAECpFOX5YKp6BWFWVtb9+/c9PDxatmzJ4VT555c0Td+4cUMulzdr1szHx4cQ0qFDh5MnT1pq/0FBQYSQly9fWmqHAABgDtufLLN8+fIRI0YEBgZSFOXr62vOJmq1+r333gsMDOzVq1doaGjTpk0vXbpU4Qn88ssvb731VuPGjY33t8zOzn59zPnz5xs2bNi2bduePXvWqVNn2rRpOl15vnJmOHToECGkVatWlt0tAACUzvYnyyxfvlwoFHbo0EGj0Zi5ybx583bs2LFkyZJ33303LS1txowZQ4YMuXHjRmBgYAUmsGXLlps3b3bo0IGiqIcPH74+4NGjR8OGDfPx8Tlx4kS9evW2bNmydu1aZ2dnMy9+//LLLxUKRVJS0osXL5YuXUoIWbhwoY+Pz08//XT06NGePXu6u7snJydv3bp1xIgRbdq0qcA/oSbKzc1NSUlJSUmRSqV9+vSJiIiw9YwAwE4pbX4d4Z07d/z8/Aghbdu2ff78eZnjHz16tHXr1sGDBy9fvpwQ0rx5859++ql///6rVq1avXq1adjhw4dbt27dsGHDIpsfOHCgS5cudevWZVeME4iOji42CL/99lu5XB4fHx8WFkYIWbNmzT///LNhw4ZFixbVqVOnzAk/fvxYKpU2bty4cePGaWlphBDjarJDhw4JCQn79u1TKBT169dfuXLl9OnTy9xb7XD48OGRI0eaHnI4HAQhANiKQke6Km/+N3MrP2c2CQopfXCVBKExhMz3+++/GwyGsWPHmip9+vTx9/f/9ddfTUGoVqvnzJlDCDl37hw7C3ft2vXuu+9OmTJl48aN5k/gt99+q1evXrdu3UyVsWPHnjt37tixY5MnTy5zwlu2bCm2Hhoaun379jI3NzIYDPn5+V9//bWpEhYWZrolzeuqedMGf3//ZcuWdejQgRASGRlZykidTlfVnZh0Op3FD3QD+f8vLEVRtp5IbWP8ccUX1lIYnbZbys55jw5zCJNpKPutoFqcLPPvv/8SQrp27WqqcDicTp06HTlyRCqVGq89EAqFp0+f7tu3b58+fc6dO9eoUSNCyL59+957770BAwawF45lev78eXZ2dlRUFPvHzvjq//zzj6X+UWViGIamaYlEYqooFArzE0JtIKoqu17fhU/4rI+PZTLZlStXGjVq1KBBA/awe/fuPX36tHv37o6Ojl26dOnSpQsh5MqVK6XvnKbpqv4PT9M0uh5WBeMXFu/XFmf8ccUPrUXont6Xx63rll30/pelqBZB+OLFC0KIt7c3u2h8+OLFC9NFeE2bNj179mzfvn379u177ty55OTk8ePH9+/f/9ChQ0Kh0CIvl5mZWbl/SjnweDwXF5eVK1eaOd707iPWkCmJht8f07qq/F9T15la0ZkzthGHECIUCqOjo1u3bn3mzBn2mLFjx8pksgcPHpRrzw4ODlwu15JzfY1Wq3VwcKjSl7BPer3ewcEBQWhxxi+pQCCw9URqNsagl5/cLTsTR2iDqcihyj4ntFrcYk2tVhNCnJ2d2UVXV1dCCLuTAyGkWbNmZ86c0Wq13bt3j46OHjBgwOHDh8uVguV6uerp3fOGg4+qNgUJIU+VTPSfhqsvGUKIQCCYOHHi2bNn2ZmXlJR0/fr1KVOmWOFCFwCA0uky07NXz5Wd2sNOwacCP4OzR5nbVou3MEdHR0KITCZjF/Py8shrcUUIadGixaxZs7KysiiKiomJqcAv/uV6uepGpiNHn1jp+AnNkH1pBa81ffp0DoezdetW07NbtmwRCATvvvuudSYDAFA8mpaf2Ze9arbuWaqpxlDUbs+IAY3XG5xFZe6gWgRhQEAAISQnJ4ddzM3NpSjK39+/yOBdu3Z99tln4eHh3t7eERERxpM2y8V4SUZubm6RlzPNpDrjUoRrxW+a6ZPCevXqDRo0aPv27cZLYqRSaVxc3MiRI8t7YhQAgAXpczNffv+B9OhPjP7VSTFcN9GnzT9eGjBTyXE0ZyfVIgjbtWtHCLlw4YKpotfrL1261LhxY+MRSxPT2TFHjhz5888/DQZDnz59UlNTi+6xVL6+voGBgRcvXmR/NJ2YmGiaSXXmzCPjGlrpu+bAJe80efVa06dPz8nJOXz4MCFk165dSqVy6tSp1pkJAEBRDKO8eDxr+XRN6g122bFtT78Pfjzt2sX8PdkmCP/555+TJ08qlUrjw+HDh/P5/N27d5sGxMfH5+bmjh49mr1VXFzc+PHjw8PDjWfHNGvW7OzZswaDoW/fvuXNwtGjR2dmZp47d874kGGY2NhYR0fHoUOHVu5fZg0/9uDOackJdKZEDqTq/nTzpeIjeC08Xp0WMWTIkPr162/evJkQsnXr1kaNGvXt29d2XwYAsF8GcfbLjR9K4r5jtGpTkePi7jXxE693P+I4u9n+pts7d+68desWISQzM1OpVBrvvVKvXr0ZM2YYB3z++ee//vrrnTt3QkJCCCGBgYHz5s1buXLle++9Z7yzzJIlS+rUqbNgwQLTPtVq9QcffDBo0KCDBw+aPhc0njvTr1+/tWvXrl+/3jT41KlTZ8+eJYRcv36dEPLll186OTk5ODj873//Mw5YsmTJ7t27x48fv3z58nr16m3dujUpKemzzz7z8vKqii+IZTnyyLpu3HXdyh5pWRwO5/333//444937tx5/fr1lStX4uxBALA+1fUESdw6Ol/BLgpbdBK9NY/rXvAerrT5TbdPnTp17Ngx498dHByMa4iOHTuagtDV1VUkErHPof/mm284HM6GDRt27NhBCOnateu2bdvYVzgIhcLz58/7+fkVOTumefPmSUlJRe7EdvXqVeOLEkJEItGuXbsIIS4uLqYgDAgIOH369Pvvv/+f//zHOJ///ve/n3zyiQW/CLXSpEmT/ve//02bNs3BwcH4pTNhGMZ4wpFcLieEqFQq4yWSxl9BbDJbAKhlDHJJXtx3qhtJ7CJH6Ow+fJJz2BBTRW0g5TqvnqpW9yvRaDSPHz/28PAw81bdlZeVlSWTyYKDg61/BU9WVlZoaGhWVpaZ4wcOHLh48eIBAwZU6azKNG7cuL17944bNy42NpZdz83NLXJpptGWLVvYN+vh8XgajaaqryOUy+VFPl0Gi1AqlU5OTjgSYHFarZbgOsKyqK4nSPavp5WFTvgXNmsvGjef6+HDLuaoic+ugnNnLkbougU5lb7nanFBvYmDg0PTpk2t+Yp+fn4477Fc2rdvv3fv3ilTphSpOzs7//jjj6+PNzVoBACoGFqlyPt1U/7VP9hFSuDg/sZ7Lr1GkNd+MyvXB4SkugUhVHM0TW/fvr1ly5a9e/cu8pRQKHw9HQEAKkl9J1myd41BWuiCN0H95p7Ri3g+xbcnKldXXoIgBDPl5OQ8fPhw7969d+/e3blzJw6OAUBVo9X50t+3Ki8eZxcpvsAtYrxr39Gk5HtalasZIUEQgpkOHTpkvJvajBkzoqOjbT0dAKjlNGm3JLEx+pxC93/mBzTwjF7MDyzajK8IBCFUibFjx/bv39/f39/JqYyPnQEAKoPRaWXxu+Rn9xP2uZwcrmvfSLchEyhu2bGlKE9XXoIgBDO5urriPEwAeF2+nvz2mC7vIqwkHll3Q8+tdskr1ERJIQq+3m+BzKcJeUAIKfvCiCsvEYRgIzRN37t379GjRx4eHs2aNasRdycAgMpgCImI1ye8sMBleDxGP+fl/jkv93KZV1FHE2qH19Cv/N/T3uOTe4ZSNq/US1fRfsHeLF68eOfOnabLIrlc7ttvv71p06bq39ADACosM5+xSAqGaB6vfbq6pbpQE4WnAr/5gfMuO7eq/P5LhyAEy4iLiwsLC3vzzTdDQkJkMtnq1at37typ1Wr37t1r66kBQFVRV3qRxiOGKTmHFmXt5jOvLnpgKCpWNOgL/4lmto8oCUWIoxkphyAEy0hKSmI3serZs2fbtm3379+/ceNGT09PG04MAKoO+3QWNz4Z26h8jRy85U9GXF0dIH7ALkqdfI90nPfIt00lT08XcsngIKqJq7bMkQjCGkmTdlP1zwVGp6m6l+D5Bjl3jeAInQghL1686Nmz57hx4z7//HP2mJkzZ547d+7KlSsuLi5FWjny+fzOnTvfvn07OzsbQQhQW7GPivo6Uj/2MPvuiQwjP39IdnYHoysUVM6dBwS8Oa2l0DIfqdA0rVKVPQxBWPMok05I4r4jVX+TWGVSvO/8tRyhk7+/f5MmTdavX7906VLT5RO5ubnbt2+PjIx0cXF5fVuGYf7++28nJ6fg4OCqnicA2Ar7fcj822zoxVmS2FWah/+yixwXD9Fbcxxbh1luduaqFo15oRxog/TIdiukICFEn/VEeSne+Pfp06fn5eX9+uuvpmd//vlntVpdUm/e1atX//vvv8uWLXN0rNQhfgCoztjvRGblYEE33WlFUtCxbU//DzfbJAUJVoQ1Dq1S0vlyq72cIfeF8S9vvPGGsSvv+PHjjZVt27aFhIQUe0/tP//8c9myZZ06dVqyZInVpgoA1leuIDTk5Uj2rlHfTWEXOU6uHqNnOrXvY+mplQNWhDUMx8mV5x1Q9jgLEdRrVvC6HM7kyZMTEhKMLZf/+uuv27dvT5069fWbjl66dGn48OH169c/cuQIn8+32lQBwPrMPzSqup6QtWJ6kRQUhnTw++AH26YgQRDWPBQlensBx7GYj+UszrFtT6eO/UwPp0yZ4uDgsG3bNkLI5s2bhULhhAkTimySnJwcERHh7+9/7tw59LcCqPXMWRHSirzc7V/k7viKfTSLI3QSjZnjPfVLU095G8Kh0ZrHoWEr/09+Ut9NYdT5VfQSlIMjz6uOoH4Iu+jj4zNy5MiffvppwYIFBw8ejIqKKnI66D///BMREeHu7n7q1KkiJ5ECgH1S374i2bvWIBOzi4IGLT2jF1rz4FbpEIQ1EsfJ1SYHE6ZPn75v374xY8a8fprMjRs3wsPDnZyc/vzzz/r161t/bgBgfaWsCGm1Uvr7tuKbKPWLKsc5plUPQQjl0Lt371atWiUlJTVv3jwsrND5XYMGDcrJyRkwYMC3337Lri9cuLBp06bWnSYAWElJnxGq76ZI9q4x5OWwBwuCQzyjF/F8g6w1O3MhCKF8JkyYsGTJkunTpxc5TcbNzc3R0TE1NTU1NZVdnzhxonUnCADW8/qKkNGo8g5vUSadYIckxeW5DX7HtV9UKd10bQhBCOWTkpLi5OT0zjvvFKnfvXvXJvMBABsqsiLUProtjl2lf/mMPYZfp75n9GJ+UCNrT85sCEIohxs3bhw8eHD69OkeHh62ngsA2J4pB4WM9v20ndkJh4t003XrP8Y1Itqcbro2VK0nB9XHb7/99uWXX96+fdvLy+vDDz+09XQAoFowhl4b1YM1GWuaaJ6yn+L51fWMXmS6Frk6QxCCWQICAsLDwyMjI6Ojo+vUqWPr6QBA9WAwzMg5sDhrN4/VRIlQlHO3wR4jp1ACoe1mVg4IQjBL586dO3fubOtZAEA1onvx2G3Hyg9fPGQXeZ5+onELHJq0sdWsKgBBCAAA5cQwir8OS49s4+t17LJTp/6i0bMohxp2q30EIQAAlIM+N1MSu1qTeoNdfMkXbQmZtTG6u61mVRkIQgAAMA/DKJNO5P22mdGq2eWj7t2X1ZnRyMvdVvOqJAQhAACUzSDOFu9ZrXlwnV2kndyne8847hZGytOYt7pBEAIAQBlU1xMkcevofAW7KGzR6XH43ONnCxaCNTYHEYQAAFAyg0ws2btWffsKu8hxdPF4c7pTp/6p2QwhBRdOYEUIAAC1jep6gmT/elopYxeFzdqLxs3neviQcnaor7YQhDUGRVFffvnlli1bbD2RSmHYt18CgOqKVsokBzaorv3FLlIOjh7DJzuHDTGt/hCEYFUrVqy4f/++rWdRWZMmTeJyubaeBQCURn3rkmTfOoNMwi46NGwlil7I8yp0Y6mS2jDVLAjCGqNNmzZt2tSkmzUAQI1Dq/Olv28tvptu39GvN1HCihAAAGoPzf1r4j1rDJJsdpEf0MAzejE/sKGtZmUFCEIAAHvH6LSy+F3ys/uLNFFy7RvpNmRCKU2UcGgUAABqPG36XXFsjD47g13k+weLohcJ6jYpfVscGgUAgBqMMejlp/fKTsUSmn5VpSiXnsPdh0+mePyy98D6O4IQAABqEl1munjXSt2zVHaR5+UvenuhQ6PWZu4Eh0YBAMBKbkmYbfdopb7skWXiMIau93/tc2sXl361O4airjWIOB06SZvpSDINZu7qef6rJKyxOYggBACo9sQa0uOIPk9rgV01UT9d+2xNqOoBu/iM77MocG6iUxvykBBCl7BpGRCEAABQVa7nMpVPQQ5hJuf8tiR7lwNdaF9xovDP6kyWc5wruX9hjc2TGjtxAAC7oa/0rQmDdNmrM9Z2UxbqppvDEy0NmHHSrWtl904IISS6UdHL7WsKBCEAQHXHPielhQc1t1V5Iodhgm+faHZpG0+nYpczG/e81WPmm0K3Nys9PYqQNl5UZ5+aenAUQQgAUN2xF4T1XMiUEHOD0CCTSPatVd+6zC5yHF3ch00MChvSyXIzrNEQhAAA1V3FrlJQXU+QxH1H58vZRWHzjqKx87nuXpabXY2HIAQAqG1oRZ4kbr3q3wvsIkfo5D58snO3wTX4ir+qgSAEAKjuynUDF/XtK5K9aw0yMbsoaNDSM3oRz7tOSVvZMwQhAEB1Z2YQ0mql9PdtxTdR6heFhWBJEIQAANWdOZ8Rqu+mSPauMeTlsIuC4BDP6EU836CqnF2NhyAEAKjuGMK+k1nRJGQ0qrzDW5RJJ9iBSfH4BQvB17rpQhEIQgCA6q6UFaH20W3x7hh9znN2kV+nvmf0Yn5QI6vMrsZDEAIAVHfFfkbI6LTSYzsU5w8V6abrFj7GdVB0Kd10oQh8pQAAah7tk3vi3TH6rKfsIs+7jujtRQ4NW9pqVjUUghAAoLpjrwh5jF52fJfsTByhWc2SKMql9yj3N96l+AKrz67GQxBWRGpqanJycnp6eu/evbt2LXq/2nv37u3atSszM9PHx2fo0KHdu3e3ySQBoNYwHftsqnmy8MJqmbRwN11PP9G4BQ5N2thgZrUCziYqtxUrVjRu3Pj9999ftmzZuXPnijy7d+/e0NDQU6dOcTicO3furFq1yiaTBIDahCGEQ5hJub+feDivbuEUdOrU3++DH5CClYEVYbmNGjVq2LBhzZo18/T0LPLU48ePJ02a9MEHH3z++efGCk1XsMUlAICJIC8z7tGaLsqb7CLXTSR6a66wpWWaKNkzBGG5NWnSpKSntmzZ4ubm9tFHH5kqHFzBAwCVwTDKpBOtD23m6tTssmPbnqKo2RxnN1vNqzZBEFrShQsXOnbsuH79+l27dgkEgn79+n3yySfOzpXt+wwA9skgzhbvWa15cJ3LKioE7sHj5ziG4uQDi0EQFqLRaHQ6XbFPCYVCHq+ML1dWVtbff/+dlZX18ccfy+XyTz75JDk5+cyZM1UwUwCo5VTXEyRx6+h8Bbt41rVjQrc5W0J9bTWrWglBWMiUKVN++eWXYp/auHHj9OnTS9/cxcVFrVYfPny4Tp06hJA6deoMHjz4ypUrnTt3tvxcAaCWMsgleXHfqW4ksYtyjvNX/u/u9owYI8QHLhaGICxk+fLly5YtK/Ypf3//MjcPCAiQSCTGFCSEdOvWjRBy7949BCEAmCn/2vm8A9/TShm7mBfcfqBwTibfi5jRhgnKy/JBeO3atR9++KFIsX///mPGjCllK4Zhtm3btm/fPrFY3LBhw5kzZ/bp06fCc3j+/HlKSkpycvKLFy+aN28+b96818ekpaWtWLHi2rVrfD6/X79+ixcvdnV19ff3NyfwShIaGpqQkGAwGLhcLiEkKyuLEOLri4MYAFA2WqXI+3VT/tU/2EVjE6ULwZGZfxacgo5mShZn+SB89OjR5s2b/f39nZycTMW6deuWvtXEiRN37NjRq1evLl26nD59ul+/fj///PM777xTgQk8efIkODjY9DA8PPz1ILx9+3ZYWBhFUZGRkVKp9Jtvvvntt98uXLjg6upa5v5VKlVmZiYhhKZpiUSSlpbm4OAQGBhICHnvvfdWrFixYsWKDz/8UKvVfvLJJwEBAWFhYRX4VwCAXdHeuZJ78HuDTMIuOjRsJYpeyPOqQ6e+uhALOWh5jKUdPHiQEHL8+HHzN4mPjyeETJ482fhQoVC0bt3a3d09NzeXPUwqlRa7eZF6bm7uZ599duTIkefPnxNCwsPDX9+kZ8+ejo6Ot27dMj6MjY0lhCxdutSc2Z4+fbrI17Bjx46mZ+Pi4lxdXb29vV1cXIKDgxMSEkraz4sXL3x9fc15RSgvmUxm6ynUTgqFgqZpW8+itjGolDl71jydO4j9J2PRMNmZfYzBYByz+6GBbNEa/7x9Vm/bCdcgBoNBoVCUOaxafOi6detWQsiSJUuMD52dnWfPni2VSvfv328ak5SU1KBBg9dD6OjRow0aNEhJSTFVPD09P/3006FDh5Z0kPPBgwcJCQnDhw9v0aKFsTJu3LgGDRps377dYDAUuwlb7969xYX98cerQxlRUVHPnz//9ddfExMT79+/36NHj1J2xTCMhAVX3wPYG03areyYmapL8ewiP6CB77y1rv3HmFoJmtOYFyqsqk6WUavVN27c4PF4jRs35vP5pQ++cOFCo0aN2BeqR0REEEISExOnTp1qrLRo0aJJkybDhg07ePDgG2+8YSyeOHEiKiqqffv2TZs2NX9uCQkJhJBBgwaxiwMHDvzxxx8fPHgQEhJS+uZ8Pl8kEpUywMXFpWfPnmVOQ6fT5ebmNmzY0FSZMWPG0qVLy9wQyqRQKMoeBOWXn59vMBgovBNbAqPTas7t1yQeLtJEyaH7MIf+b6m5PLVcbiqr1FxCCt5I9TqdXJ5v5dnWUMYDGGUOq6ogjIyMNL68q6vrtGnTvvjiCwcHh2JHGj9y69WrF7sYEBDA4XDS0tJMFXd395MnTw4aNCgyMtKYhSdOnHjzzTfbt28fHx9vzmd7JsbdBgUFsYvGh6mpqWUGoaXw+Xxvb2/jCTVgceX6kQAzcTgcJycnBGHladPvimNj9NkZ7CLfP1gUvUhQt5h7VwmFNCEFx6v4fL6rq9Aas6z5aJpWqVRlDrN8ELq4uEyYMKFPnz7e3t5Pnz794YcfVq5cmZaWduDAgWLHy+VyQkiR+3ZyuVx3d3epVMouuru7x8fHDxgwICoqavHixd9++22nTp1OnDhR3rc8mUz2+it6eXmZngIAqCKMQS8/vVd2KpawPwqhKMewNzxHTaV4xR8/K7YxL1iK5YNw4MCBAwcOND18//33e/bsefDgwcuXL3fp0uX18ca7cb7+4ZxOpzNehMDm4eFx6tSp7t27f/75523atDl+/HgFfvE3vqJery/ycoSQ118RAMBSdJnp4l0rdc8KN1Hy8neJmiNo2KqkFCT4jLCKVfnJMnw+f+bMmYSQxMTEYge4ublxOJzc3Fx2UavVKhSKYj+Ku3DhgvGKhfv371++fLkCUzLuViwWs4vGh6V/+AcAUEG0Qf5HXHbMrEIpSFHOYUP8lmwSNGxV+tZYEVYpa5w1akyXkg7UCgSChg0bpqamss+ZfPjwISGkWbNmRQbHx8dHRUV17Njx4cOHoaGhw4YNO3bsWHnnY9ztgwcP2MX79+8X+4oAAJWky3qSvXa+9Mh2xvDqQBRX5Osz/RvRmDmUg2OZe8CKsEpZIwiNd50upXtR//79s7Kyrl69aqocOXKEEBIeHs4eFh8fP2rUqA4dOpw4cSIoKOjkyZNt27aNjIwsbxb269ePy+UaX8JIp9PFx8c3a9asXr165doVAEBpGEZ+7mB2zCztk/vssnOXgX4fbHJo2tbc3bD+jhy0OMt/Rrh8+fIhQ4a0atWKoiiNRrNp06YNGzYEBAQMHTrUOECn07Vu3bply5bGS+8JITNnzu7NK1MAACAASURBVNy6deuSJUuOHj3q6up6//791atX169ff8SIEabdJiQkjBw5snPnzsePH3dxcSH/fx7pwIEDo6Kizp07x/4A8unTpzqdznjaqkqlMp4m6ubm5u3tTQjx9fUdO3ZsbGzsgQMHRo8eTdP0Rx99JJFIvvzyS4t/NQCgZvn5Ab0nlTaUfcp92bxUWZNvrg0R32AXZQKPn1vO/NujGzlHCClYIBoPh3E4+tf2UeC50gLzgZJQ5lxjUS6NGjVKS0sTCATGawMMBkNQUNChQ4c6duxoHKDRaIRCYbt27f7++2/TVt9///3cuXNdXFzq169/+/ZtV1fX48ePs7NNqVR+/PHHX3zxhTEFTaRS6Wefffb11187Or46vGCcQ5GJTZ061XQTVLFY3K9fv3/++adZs2ZKpTIjI2PcuHG7du2yZh/drKys0NBQXD5RFeRyOS6fqApKpbJ2Xz5x9SXT+XCJaWQ+imHGS+I/evGTM13oI6Ej7j0+Dpgu5laqm+7EppxtvXBan1mMl0+U2RTW8kGYmpr6119/PXz4MCcnRyQStWvXbsSIEULhq6teaJqOjY319PQcMmQIe8MbN24cPHjw5cuXjRo1io6O9vPzq/Acjh8/rlQW/Q2qYcOGHTp0MD1Uq9VxcXEpKSl8Pj88PNx4Cb81IQirDoKwitT6INx2j56cUPbtpUrno5OseL4hXH6FXZRxXb72+89uTwu8z8xtxVnbFUFoFpsFIZgJQVh1EIRVpNYH4Za79JTESgXhUOmFb55/72GQs4vnXdovCpr7gudZ0lbm83Igfw3jtfCotd8CyzIzCNGPEACgAHtZ8EZdal6rciy8ePl5fqc2uD69wC7SDk7ZvSf5hQ7eWepvD8bLmnm8Mt6QBVzSzotyLeOelVBuCEIAgALsIAxypsIDzV14qW9fkexda5AVujpZ0KClZ/TCet4BZW6u1TKEEIEA6zzbQBACABSowOV6dL4i7+DG/JSz7CIlcHAfOtGl53Bc9FcjIAgBAAqU93I99d0Uyd41hrwcdlEQHOIZvYjnG1TSVlDdIAgBAAqYvyJkNKq8w1uUSSfY21A8vlvEeNd+UcSKF2JB5SEIAQAKmLki1D66LY5dpX/5jF3k16nvGb2YH9SoiuYGVQdBCABQoMwgZHRa6bEdivOHinTTdQsf4zoomuLiHbVGwrcNAKBA6YdGtU/uiXfH6LOesos87zqitxc5NGxZ9bODqoIgBAAoUOKKkDbIzx2UHf+F3T6CUJRzt8EeI6dQAvSLr9kQhAAABYpdEepePBbvWqnLeMgeyfP0E41b4NCkjRVnB1UFQQgAUKDoipBhFH8dlh7Zxuh17GFOnfqLRs8yp48g1AgIQgCAAuwg9FBkvtywTpNaqIkS100kemuusGVXK08MqhSCEACggPHQKMUwb0tOvnN3u0ZfqImSY9ueoqjZHOdKNVGCaghBCABQgCEkUPcy5tm6Hop/2HWOi7soarZjmx62mhhUKQQhAECBBvdPnXm42cWQzy46tg4TvTWH4+Jhq1lBVUMQAgAQg0ws2beu863L7CLH0cXjzWlOncJtNSuwDgQhANg71fUEyf71tFLGLj71b9d52gKuh4+tZgVWgyAEAPtFK2V5B77Pv3aeXVRyHL/yfzewzxvdPPAOaRfwbQYAO6W+kyzZu8YgzWUXU5xC5gfNfyQIWIpWgnYDQQgAdodW50t/36q8eJxdpPiClDbRkaqRBopDzOtHCLUDghAA7Ism7ZYkNkafk8ku8gMaeEYvvvmyviHZYKxgQWg/EIQAYC8YnVYWv0t+dn+RJkqufSPdhkyguDzmJW0qIwftB4IQAOyCNv2uODZGn53BLvL9g0XRiwR1mxgfmt+hHmoTBCEA1HKMQS8/vVd2KpbQrxZ8hKJceg53Hz6Z4vFfjWRthRy0HwhCAKjNdBmp4t0rdZnp7CLPO8AzepGgQYsigxGE9glBCAC1VCnddEe8X2wTJRwatU8IQgCohXQvnkh2x2if3mcXuSJfz3HzHZq2K2krhrUmpLAmtBsIQgCoXRhG/uevsuM/Mzotu+zcZaD7qKkcoXOpm776O1aE9gNBCAC1h16cJYldpXn4L7vIcfEQvTXHsXVYmZvjM0L7hCAEgFqBYZRJJ/IOb2E0Fe+miyC0TwhCAKjxDDKJZN9a9WtNlNyHTXQOG2KrWUFNgSAEAGvT0WTGBcPvT2gdXfbgMg2UXPjk8ffuBjm7eMG9w6fBc7JTPUmqzvxdqQqdXmqBuUGNgCAEAGvbl0ZvvWeBDPQ25H39bONgWRK7qOA6fen3XqxoEENTRFPxnSMH7QeCEACsLV1e9pgy9ZdfXfFsg69ezC5edWoxP2j+Y4F/5ffvV8x1hlA7IQgBwNqYsoeUxpVWfvRiR7Q4nl1UU4I1fuN+8I6kLbGWGxhIjW3Eqfx+oEZAEAKAtbGDcEkoZ2kbrvnbGu4law6sYWSFuuly6jX3fGvRl96BX1piegIuccZboz3BdxsArI1mXbjuxKNEDmZtxWhUeYe3qJNOsK97p3h8t4jxrv2iCAcLOKggBCEAWFsFbuCifXRbHLtK//IZu8ivU98zejE/qJFFZwd2B0EIANZWruvWGZ1WemyH4vyhIt103cLHuA6Kprh4E4PKws8QAFib+UGofXJPvDtGn/WUXeT51fOMXiSo17Qq5gZ2CEEIANZm1qHRUpoojZxCCYRVOkOwKwhCALC2MleEuhePxbtW6jIesos8Tz/RuAUOTdpU6dzADiEIAcDaSlsRMozir8PSI9sYfaFbozl16i8aPavYbroAlYQgBABrK2lFqM/NlMSu1qTeYA/muolEb80VtuxqnbmBHUIQAoC1FROEDKNI+F16dDujLXR7UKcO/TwiZ3CcXKw4O7A7CEIAsLYih0YN4mzxntWaB9fZYzgu7qIxcxxDu1t7cmB/EIQAYG3sFWGjB6eyYjfT6nz2AMfQMNGYORwXDytPDOwTghAArM24IvTVi1c829Dl5lV2QyaOo4vHm9OdOvW30dTAHiEIAcDaGEKGSi989Xyjp0HGrgubtReNm8/18LHVxMA+IQgBwKpolWLQpY3znp5lFym+wH3oRJdeI9AYHqwPQQgA1qO+kyzZu6a5tFATJUH95p7Ri3g+gbaaFdg5BCEAWAOtzpf+vlV58Ti7qOEI7neMHjwWTZTAlhCEAFDlNGm3JLEx+pxMdvGOsP68wAVTQhsPRgqCTSEIAaAKMTqtLH6X/Ox+9sWDNMX9wWtUjF+0juLhM0GwOQQhAFQVbfpdcWyMPjuDXeT7B29tveCbzIbGh8hBsDkEIQBYHmPQy0/vlZ2KJTTrKkGKcuk53H345BdXOCST/v+abWYIYIIgBAAL02Wkinev1GWms4s87wDP6EWCBi0IIQwxmOrIQbA5BCEAWE4p3XRHvG9qomR+h3oAK0AQAoBl6LKeSHbHaJ/cZxe5Il/PcfMdmrZjF83qUA9gLQhCAKg0hlEmncj77cciTZQc2/YUjZn7ehMlrAihWkEQAkClVKCbLlaEUK0gCC0pIyNjxYoVKSkpHA6nT58+ixYtcnd3t/WkAKpQ/tUzkgPfMxoVu+jYtqcoajbH2a2krbAihGoFQWgxqamp3bp1U6lUI0eOVKvVy5cvP3DgwMWLF0Uika2nBmB5BplEsm+d+tYldpHj6OI+bKJz2JDSt0UQQrWCILSY2bNn5+XlJSUldejQgRBy6NChN99887PPPlu3bp2tpwZgYarrCZK47+h8ObsoDOkgGreA6+5V5uY4NArVCm7xZxnPnj2Lj48fOHCgMQUJIaNGjWrWrNnPP/+s1WptOzcAC6IV0tztX+Tu+Iqdghyhk2jMHO+pX5qTggQrQqhmsCK0jMTERIZhIiIi2MUhQ4asWbPm5s2b7du3t9XEAMyhMZBn+UyZw3TXLjud3Ewp89hFumEb3agFWR6+REEKZ1yJZKxfDrEiBJtDEFpGWloaISQoKIhdND5MTU1FEEJ1tjeVnpxgUOpLG+NKKz96sSNaHM8uqinBGr9xPzhF0icpQkrdvmTIQbA5BKFlyGQyQoinpye76OXlZXrqdTqdTi6XT5482VQZMGDAiBEjqnKa9kKtVvP5fFvPosZYfJlbegr2Vvwdk7HOXy9mF/92ajY/aEGaIKCSr67X6dRqs9aRtZjxAxSafV9WsASapg0GQ5nDEISWweFwCCF6faG3E51ORwjhcrnFbsLj8fh8fseOHU2Vxo0b4+3bIvh8Pr6S5svVlvj+60yrPn6xPVpykmKd36KjeKt9397kHWmgLHCSQTMRD98rhmEIIfihtTiaps359QJBaBnGayTE4kK/Mhsfenh4FLsJRVFCoXDatGlWmJ694XK5Jf3+Aa+jmVfvFA1cX31m10p+58O0NUHq5+zBj5yCv2q88IFzw+BKvy6PQ95pzOkVgFP2Cn5dxg+txVEURZnxKTSC0DKaNm1KCHn48CG7aHxofAqg2jKwDkzei+LxOf/fTffygUJNlDhcYY/h3YdPjOdh4QK1Cn4Xs4xevXrx+fyjR4+aKjRNHzt2LCgoqHnz5jacGECZ2Ff1cSiifXI/K2aW/I84dgryvOv4zFrhOGg8xcVvz1DbIAgtw8PDY8KECRcuXNi9ezchhGGYr7766vnz57NmzTJnYQ5gQ/T/ByGPGJRn416uW6DPevLqaYpyDhvit2STQ8OWNpkeQFWjGMbez9eyFKlU2r9//5SUlJCQELVanZ6ePnz48AMHDpT0AXhWVlZoaGhWVpaV52kP5HK5q6urrWdRMzCEcLbqCCFNNU/WZqxprSp0eJ/n6Scat8ChSRvjQ6VS6eTkhN/tLM541qhAILD1RGobmqZVKpWzs3Ppw3CUw2Lc3d0vXry4d+/e5ORk4023R4wYgbcMqOZohnAI817ukWUvdggYHfspp079RaNnmbrpAtRWCEJLEggEEyZMmDBhgq0nAmAuXU5m3KNVXZQ32cXSmygB1DIIQgB7Zeyme3hLl3I2UQKoZRCEAPbIIMkW71mtuX+dXRTz3Ju8M9uxTQ9bzQrAJhCEAHZHefmk9NCPtDqfXTzp1vXzejMft/Gx1awAbAVBCGBHDHJJXtx3qhtJ7KKc4/yV/7u7PSNccKE82CUEIYC9yL92Pu/A97Sy0F3gec069CezM/leBJcVg71CEALUfrRKkffrpvyrf7CLFF/gFjHe0CMqc2fBzeI5uNgH7BKCEKCWU99JluxdY5DmsouC+s09oxfxfALFmldFBCHYJwQhQI0Um0ofecIYSu0w46DPH357e7fHJ9hFPVcQ3/TtPxtF0v9yCDGwWzAhB8E+IQgBap6zz5noc2W0G+2Uf3tNxppg7Qt28Y6w/rzABbe5DUg6IaRoimJFCPYJQQhQ81x9WdotgoWMdn7Wnmk5Bznk1TA94W72HhXjF62jSvxf78JHEoI9QhAC1Dz6knOwQ/7d1RlrGmoLddO9JwyeHzT/hrBR6bud2QLnjYI9QhAC1Dw0KwgjG3DeakgRQiiDru6lXQG3D1KsPoIMh5PZbpSk24RPuKVdJEgR0sydau2JFSHYIwQhQM1jYHVPayUiUQ04usx08e6VuoxU9jCel79o3MK6jVt3tvoMAWoQBCFAzcPuIsojtOzkPvmpWMagf1WlKJfub7gPn0wJhNafHkDNgiAEqHlMhz4ba54OPb5WlnOf/SzXzVM0dp6wBdaBAGZBEALUPDRDKIZ5W3Ly0xdbHWkN+ynHtj1FY+ZwnFxtNTeAGgdBCFDzOCuy9qWv6aa8wS5yXDxEb81xbB1mq1kB1FAIQoAaJv/qmbFHvxfo0U0XwDIQhAA1hkEmkexbp751ScAq6gQuviMnOocNsdm0AGo4BCFAzaC6niCJ+47Ol7OL513aS4fNn9EF3XQBKg5BCFDd0Yo8Sdx61b8X2EUF1+lLv/diRYNWOeN/MUCl4L8QQLWm+veCJG49rchjF5/4hb7lPi9D4EPQTReg0hCEANUUrVZKf9+mvHicXTR2093n+GbG7YKL6tEyAqCSEIQA1VEJ3XRDPKMX83wCDRcNhCAIASwDQQhgPddymVx1GWM4Oo3PXz+Jrv1e6EZqHF5Ot7dyu77NaDnkGfNEwXoGQQhQOQhCACuZedGw8XapHeUJ6aK8ufrZOlHhbrq3hA3nB82/I61PTtLopgtgcQhCAGtQ6ckPd0pLQQdauyB7z9TcX7nMq2HmdNPlIggBKgdBCGAN+YZCTQSLaKN6sCZjTRPNU3bxscB/ftD8q04tStktRUh7LyQhQKUgCAGsgZ2CAg7pVacgvbiMYVD6oTcf7eLSr5ooMRR1PmjQ3maT3bnC8JL3KeSSCU047b0RhACVgiAEsAYDKwg9HcjpwTxCiO7FY8nuGO3TB+yRPE8/0bgF45u0GW/lKQLYKwQhgDXQrFNAORRFGEbx12HpkW2MXsce5tSpv2j0LMrB0eoTBLBfCEIAa2AfGg3Uvni5YZ0mtVATJa6bSPTWXGHLrtaeGYDdQxACWIMxBymG+Y/42EfZOzSGQt10nTr084icwXFyscncAOwcghDAGmiGBGlfxjxb1135D7vOcXEXRc12bNPDVhMDAAQhgFXcSIhP/c7doGDXhC06id6ax3X3stWkAIAgCAGqmkEmkexby7112Z1V5Di6eLw5zalTKRdHAICVIAgBqpDqeoJk/3paKWMXUzzaDZ23gOuBbroA1QKCEKBK0CpF3q+b8q/+wS6qKcEav3HnGo0e4cG31cQAoAgEIYDlFdtEKcUpZEHQ/DRBQHMK94IBqEYQhACWRKvzpb9vfb2brqp3dGTmSAPFIegXAVDNIAgBLEaTdksSG6PPyWQX+QENPKMX33VsYPi14G6iCEKAagVBCGABjE4ri98lP7u/cDddrmvfSLchEygujxG/qiMHAaoVBCFAifL1ZPZFQ0IWYyi1n25L+b2lqavrqZ6xi+mO9b5qvOB+fmNygBCi17L2gBUhQLWCIAQo0Zqb9Pb7pWWggNEtzIot0k3XQHE2e4+K8Y3WMnwiL6YJIYIQoFpBEAKU6F5eyb10CWmlSluTsTpE85hdTBfUWRA0r/Ruup4OlpkeAFgEghCgRCXFII8YpuQcWpS1m88U6qYbKxr0hf9EJae0JkoeAvJxW65FpwkAlYIgBCgRu3fSmq7c4cEUIYS8fMI/uIp6cZ89knH3NYyaF9WoXVRZ+wxwooTIQYDqBEEIUCL2x4P+jqShC1Emncj77UdGW6iJkmPbnqIxc9FECaCGQhAClIh9KYRQnvXy+zWah/+yB3BcPERvzXFsHWbtmQGA5SAIAUpkOjQ6Ou9su90/aHQq9rOObXuKomZznN1sMDMAsBwEIUCJGEJ8dJLlzzcMkF9h1zmOLu7DJjqHDbHVxADAghCEACVq8zzx04cbPAxydlEY0kE0bgG66QLUGghCgGLQCqkk7rt3/73ALnKETu7DJzt3G0zQPgKgFkEQAhSl+veiJO47WpHHLsrrhjZ5byHP089WswKAKoIgBHiFViulv28r0kTJ2E03InJMc09cAAhQCyEIAQqo76ZI9qwu0k33b6dmCwLnpzoEDuZwbDUxAKhSCEIAwmg10qPbFQm/s68cpLi8Iw3HzBK8Zeymi48FAWorBCHYO+2j2+LYVfqXhZoo8evU94xe/PutYMPTgmjEehCgtkIQlptUKr18+XJKSkp6evqoUaMiIiKKDDhz5sz27dszMzN9fHyioqKiosq8/STYRkE33XMHCM3uFsh17RvpNvgdisdnbr66pzZWhAC1FYKw3DZu3Pjf//63efPmd+7cqV+/fpEgjImJWbJkydixYyMiIrKzs8+ePYsgtDKpluxM4ypJqb10CRGJ08ISVnmIH7GLCrc6F3sseOnXktwihNBprAsIkYMAtRWCsNzef//9uXPnOjk5eXh4FHnq5s2bH3744Y8//vj+++/bZG6gp0mvo/p/xXxCDCWNMTZReitrN++1Jkqf+0/KfyIkT4rZFt10AWorBGG5eXt7l/TUtm3bgoKCJk2aZM35ANs9KfOvuLRuuk01T9ZmrGmtesguZgh8FgbMu+gSWsqGfHxICFBL4T+3JV29erVly5YzZ850cXHx9PQcPXr0s2fPyt4MLEdT4jqQcAgzKff3Ew/nFUnBg6K+Axp/X3oK+ghJOy8sCQFqJ6wIC3n69KlYLC72qaCgIC+vMm4vKRaLr169GhERkZiYKJPJZs2aNXTo0KtXr/J4+DpbCfuDwTpOZEKTgl/1POTP+ietqfPyDnuw0snrbJc5mQEdZ5a6TyGXjG/McRdYeq4AUD3gDbqQjz/++Jdffin2qY0bN06fPr30zT08PLhc7s6dO93c3AghmzZt6tGjx8WLF3v16mX5uUJx2D3l6zpT33biEoZRJp3IO7mF0RRtohQQNbsZmigB2D0EYSE//fTTtm3bin2Kyy379loBAQG5ubnGFCSEtG7dmhCSnp6OILQadhByKGKQZIv3rNbcv84ew3FxF0XNdmzTw9qTA4BqyfJBmJiY+L///a9I8c033yx9OZWfn//FF1/ExcXl5uY2bNhw1qxZEydOrNgE9Hp9UlJSSkpKcnJyVlZW+/btly9f/vqwixcvfvrpp3///bdAIOjXr98333xTr149DofDqcSdtDp27Hjq1Cm1Wi0UCgkhaWlphJC6detWeIdQXuwg7P4yMWvlBjpfwR4gbNFJ9NY8NFECABPLB2F2dvaZM2fatWtX5idqJjRNjxw58syZM++++27Lli2PHDkyadKkrKysDz/8sAITeP78uXEF5urqKpfLix2TkJAQHh4eGBi4aNEiqVS6adOm8+fPJycn+/v7l7l/sVj8999/E0L0en1qauqZM2fc3Nw6d+5MCJk0adLy5cvnz5//7bffymSy+fPnh4SEhIWFVeBfARVjDEIfnWTF8w3h8ivsjww5ji4eb05z6hRuo6kBQHXFWNrBgwcJIcePHzd/kz179hBCPv74Y+NDvV7fq1cvBweHp0+fsoc9fPiw2M2L1KVS6c6dO2/fvq3X6wkh4eHhr2/SunVrDw+PzMxM48OzZ88SQqZOnWrObP/8809RYX379jU9m5iY2KRJE0IIRVE9evS4e/duSft58eKFr6+vOa8I5vsrkx4ac+6fBVFP5w5i/3m58UO9JNvWs6vxFAoFTdO2nkUtpNFoNBqNrWdRCxkMBoVCUeawanH5xK5duyiKmjZtmvEhl8udMmWKRqOJi4szjfnjjz9CQkJ++umnIttu3LgxJCQkMTHRVHFzcxs/fnzz5s1LOsh5/fr1GzdujBw50rT+69u3b/Pmzffu3avVasucbe/evcWFGXPUqHv37vfu3cvIyJBKpQkJCc2aNStlVwaDIYVFKpWW+epQClql8D4as+npt54GmalI8QXuwyZ6T/uK6+Fjw7kBQLVVVSfLpKen//bbbzwer23btkFBQaUPvnz5ckhISGBgoKkSHh5urJsqvXr1Gjp06KRJkzQajSkyt2zZMmvWrMjIyK5du5o/t0uXLhFCBgwYwC6Gh4evX7/+7t27oaGlXU9mDoqi2P+Wkmi1WplMNnnyZFNl7NixM2bMqOSr2y39g+uq3za5ygpd/cKt29QpchbxqiNXKEraEMyXn59vMBgo3HfV0oy/ggsEuEbHwowHMMocVlVBaHpDpyhq1KhRmzdvLukjQ4VCkZOTYzzB0sTHx4fL5T5+/NhU4fP5cXFxY8aMMe552rRpW7ZsmTp1amRk5J49e8p1oZ5xt35+hVqNG1eH6enplQ9CMwkEApFIdO3aNeu8XC1Gq/Olv28t0k1XwxEcbvz2gmljCPoIWg6Hw3FyckIQWhyCsIrQNK1SqcocZlZ+6HS6ki4zN+JyuaYbj/n7+3/++ee9e/f28fF58uTJhg0bfv311+zs7L/++qvY/z9KpZIQIhKJ2EUOh+Ph4VHkVBc+n79v376oqKiZM2cmJibGxsaOHj06Nja2vJerKxSK11/R09OTEFLSyTVQbWnSbkliY/Q5meziHWH9eYELAho0XIAUBICymBUhiYmJ/fr1K2VAcHBwenq68e9hYWGm8ySbN28+cODAYcOGHTt27OzZs/379y9mBjweIUStVhep5+fnv/77kUAg2L9/f6dOnXbv3t25c+cKpCAhhM/nv/6Kxt8aHBwcyrs3sJWCJkpn97O76TIc7ibPUTF+0TqKV8YReQAAQoiZQRgSErJ169ZSBri6upb0FEVR77zzzrFjx5KTk4sNQnd3dz6fX2TFqVarVSpVsUdTt27deuPGDX9//+Tk5F9++aUClxsad1vkFY0Pzb/kA2xLm35XHBujz85gF/n+wXcGLPzmWgPjQ/SLAABzmBWEderUqUxHBePCzmAo/nbIPB6vadOm9+7d0+v1puXdrVu3CCEtWrQoMth4dszo0aN37NgRHR09efJkrVZrOnfGTMbd3rp1a+jQoabizZs3KYp6/RWhumH0OtmJna910+W49o10Gzzh70weIQXNlfBJFgCYwxqfoBw6dIgQ0qpVq5IGRERESCSS8+fPF9lk8ODB7GFbt26dNm2a8XNBJyenuLi4ESNGzJgx44cffijXfPr16+fg4GB8CSOlUnn69On27dsXOYMGqhtdZnr2mnnyP+LYKcjz8veZudx92CSKxy90Bb315wcANZDlzxqdOXNmeHh4hw4dTCfL7Ny5s0WLFqZU02q1Tk5O7du3v3LlirEye/bsjRs3zp0798iRIw0aNDhz5sy6devatm07aNAg025Pnz49ZcqUMWPG7Nq1y7hwNJ47M2bMmJkzZ7Zs2bJnz56mwRcuXFCpVMazZsVi8ZkzZwghgYGBzZs3J4S4u7tPmzZt3bp1y5cvX7hwoUqlmjp1qlKpXLJkicW/GmCOC1nMuLOGp8rSznLmEcPM7P3zXu4r0k33u/62XwAAIABJREFUF9GQr/zeU51zIOd0RTbBihAAzEGZc41FuTRt2vTBgwfsSpcuXfbs2dOgQcEnNxqNRigUtmvXznijMqPDhw+/8847crnceF+0Jk2aHD9+vHHjxqYBBoNh06ZN06ZNK3J2jFar3bx584wZM9iXzzdq1Mh4n0+2qVOnmtaOarV69OjRx44dEwqFer3eYDB89NFHX3zxhSW+AObKysoKDQ3Nysqy5otWT2G/65OyS/s5bKx5ujZjTRtVoZ+rZ3yfRYFzE13alLTV8GDO4QFl3yodzKdUKnH5RFXA5RNVxHj5hLOzc+nDLB+EarX6ypUrDx8+zMnJ8fT0bNeuXYcOHdgDGIa5dOmSi4tLkWsHc3Jy4uPjs7OzGzduPHDgQON9qyvm5s2bGo2mSNHHx6devXrsaSQlJSUnJwsEgr59+5Z+C5iqgCA0abBPny4v/ueQYpi3JSc/fbHVkS70DT3q3n1pwCwp16WU3c5qwVkfhiC0JARhFUEQVhGbBSGYCUFoErxX/0RRzM9hkC57dcbabsob7GIO12Np4MyTbqXdS4jPIWF+1J6+vDpOFp6qnUMQVhEEYRUxMwjRjxBsj9076ek4XpAzVdBN93Ax3XRDo2bHl9VN13iMvSqmCgC1D4IQbI+9GKQIMcgkkn1r1bcus8dwHF3ch010Dhti5bkBQK2HIATbo1nH56mbiVmHv6PzC93rThjSQTRuAbrpAkBVQBCC7Rlz0NuQ9/WzjfTNJPZTHKGT+/DJzt0G42IIAKgiCEKwPZqQwbKkr59t9DbksesOTdp4jlvI9fS11cQAwB4gCMHGaLVyWfqWyJfx7CLFF7hFjHftF4WFIABUNQQh2JL6bopk75rIvBx2URAc4hm9iOeL7hEAYA0IQrANRqPKO7xFmXSC3URJR/GcB73jOzAK3XQBwGoQhGAD2ke3xbGr9C+fsYv3hMHzAhck9GuGu2UDgDUhCMGqCrrpFm6ipKe4m70KuumiiSAAWBmCEKxH9yxNvHul7vkjdpHnXWe8aN55h4JOkMhBALAyBCFYBW2QnzsoO/4LY3jVRIlQlHO3wR4jpyTHcv+/mS7aygOAtSEIocrpXjyW7I7RPi3URInn6Scat8ChSRtCCENetRJEDgKAlSEIoYLOZzL7H9E6urQxHIbuev9gn1u7ufSrqGMo6lr9QWfaTNZkOZIsAyFEy9oJghAArAxBCBVxS8KEn9DrS03BetoXq5+t66K8yS6+5Is+CJh12rkzeUgIKWZ7HBoFACtDEEJFJGUzpaQgxTD/ER9blrWjSDfd3zx6f1xnWinddHkcwsO1EwBgXQhCqIhSUjBQ9zLm2boein/YxVye+7KAGcfdwkrf7fjGHC5WhABgXQhCqAh2K90+dahxjQrWcXVSE1v99R1fo2APzq7X8UbvuSOcvUaUus+6ztSgIMQgAFgbghAqwsAKwtae1JQQjkEuyYv7TnWjSBMlZ/fhk4LChrS39gQBAMyFIISKKNJTXnU9QbJ/Pa2UsccIm7UXjZvP9fCx8twAAMoFQQgVYTo06mZQvHFlS+6js+xn0UQJAGoQBCFUhDEI+8hTVj77zl8vZj8lqN/cM3oRzyfQNjMDACgnBCFUBFeb/+3zrdHi4rrp9h2NJkoAUIMgCKHcNA+uRxxa7azIZhcFdZuKohfx/evZalYAABWDIIRyYLQa6ZFtisQjzqxuujSH5zFwrNvAcYTDteHcAAAqBkEI5tKm3xXHxuizM9jFB8K61/sunD8oxFazAgCoJAQhlI3R62QndhbppmugOJu9R8X4Ri/ycrDh3AAAKglBCGXQZaaLd6/UZaSyiwpX//e8515ybkXQLwIAajgEIZSs5G66u+pPuvSvwFhAvwgAqNEQhFA8XdYTye4Y7ZP77CLXzVM0dp6wRWfN3zQhBmMRQQgANRqC0L48UzIvVGUNYhjHaydcT2+mdIWaKKmb95QPmf3c0ZXkMM/zX501SuHgKADUZAhCO7L6Br34ioHdOOJ1Qbrs1RlruylvsIs5XI+lgTNPcruSk4QQfZFNcBs1AKjREIR25PNrZaTg6LyzXzz/wYUutGY85tZ9WeAMMdetpK3QQRAAajQEoR2Rakt8ykcnWf58wwD5FXZRxnX52u8/uz0jSt9tS5FFZgcAYBsIQntRZC3YwfvVOq77y8Tpqd+76OXsAdc8229oNjfXwatDyfvkc8iIYM6IYNxZFABqMAShvWDnIJciySN5hBBakSeJW6+6dYE9knJw9Bg1dVjXiGHWnSEAgE0gCO0Fe0VovOBB9e9FSdx3tCKPPcyhSRvRuAU8Tz/rzg4AwGYQhPaCvSJ0o5WSuF+UF4+zB6CbLgDYJwShvTCtCHsr/o559p1Sl8t+VlA/xPPtRTzfIBvMDADAphCE9oJhiCOtWZr183vioxSriRLF5bn0edNtyASKix8GALBHeO+zF9r02ycfxjTQPmcX+XXqe0Yv5gc1stWsAABsDkFY+zE6rSx+l/zcgQasJkqEw3XtG+k2+B2Kx7fd1AAAbA9BWMvpnqWJd6/UPX/ELj518G8/dbFDw5a2mhUAQPWBIKy1GINefipWdnofoQ2mIk2o7V7DN9WdkNXQ2YZzAwCoPhCEtZPuxWPJ7hjt0wfsYobAZ2HAvIsuoSKureYFAFDtIAhrHZqWnzsgO7GT0eteFSmK1yligOI9BceRoKc8AAALgrBW0edmSmJXa1ILNVHiuok8xsxVNu6q2FUQjWilCwBggiCsLRhGkXhEemQboy3UTdepQ1+PyJkcJxeF+lUROQgAYIIgrNZohnxxjT6ZQWvp0ob5qLNn3VvXRvIPuyjlu//QdEaSa3dyihCi17P2gHuoAQCYIAirtR0P6M/+NpQ+Zqj0wrfPN7gbFOziWdeOSwJmZ1GeJKeYVrxomwQAYIIgrNZuiEvrKO+tlyx//v1A2WV2Uc5x/sr/3dK76boLsCQEACiAIKzW9CUfER0qvfDV842eBhm7mODSblHgnOd871L2yeOQpW2wJgQAKIAgrNYMrAXh0jac0Q04hBBKrXA99YPj0z/YIxmeQNkrumm3qN/L+gAwwImq41QFcwUAqJkQhNWanhWEDVypDt6U+k6yZO8ag7RIE6XmntGLeD6B1p4fAEDNhyCs1gysQ6MO+nxJ3Pbiu+n2HU04ONoJAFARCMIK0uv1GRkZPB4vKKhQM9tHjx4xrG5/Li4uvr6+FX4V06HRTvm3w/avVUoz2c/yAxp4Ri/mBzas8P4BAABBWG45OTkjRoy4fv16fn5+69at//33X/azrVu3ViqVpofvvPPOL7/8UuHXMjBEyGjnZ+2ZlnOQQ1jHSY1NlNBNFwCg0vA2Wm4URfXu3XvBggX79++/ffv26wO2bNkSGRlp/LtAIKjMawXm3ot/uKqR5hm7yPcPFkUvFNRtWpk9AwCAEYKw3Ly8vL7++mtCyNmzZ4sd4OzsLBKJKvkqjEEvP713RmIshyl0SxiXnsPdh09GN10AAEtBEFre0aNHr169GhgY2L9//7Zt21ZgD7rMdPHulbqMVPYJMBp3/6AJCx0atbbUPAEAgOBmWxbn5uaWl5eXlZW1bdu29u3bx8TElG972iD/Iy47ZpYuI9VUYyhqt2fEnfHfIwUBACwOK8JCrl69umjRomKfCg0NXb9+fZl7ePTokYODAyGEpuk5c+YsXbp0zJgx9erVM+fVdVlPJLtjtE/us4vZPM8lgbP+cO10xAHfLAAAy8N7ayG+vr4jRowo9qkil0mUxJiChBAOh7Ns2bLvv/8+OTm57CBkGPn5Q7JjOxidll2+GNh/svv7co4zIYSL+4MCAFSBqgpCg8Fw586de/fu8fn84cOHm7NJfn7+oUOH7t696+7uPnTo0JCQkMpMgGGY1NTUmzdv6nS64cOHm/KJ7datW8eOHVMoFM2bNx81apRQKAwODl6wYEFlXpeNpmlCCFXWPc/04ixJ7CrNw0KXYXBcPERvzdma0Vn+rOCqCR4OYwMAVIEqCcJBgwYlJibm5+cTQnx8fLKzs8vc5PHjx+Hh/9femYc1kWQBvHIQwhGuICCIICDKoaIgqBBFRkBFDt0RDOAByniMx7Aeo7iOzqzKusqoO96L+qGgKF4DeIBcox/DOoKgjIIcyg0ZiURuCEnvH/VNT5sEDAEMR/3+4Eu9rup6XXT36+p+79W8kpISQ0NDLpe7c+fOiIiILVu2yKbAxo0bY2JieDweLHI4HPGo9n/961+7d+9WUlLS0NCorq62tLRMSUkZPXq0bD3iHWloaOCvRsPDw6lUqp2dXXf1SQC0ZN7lxUdiHW1EuZINS3PpJrKKmqCyCxeiGSECgUAMBAMyy2htbV26dOl//vMfY2NjKZsEBARUVlampKRUVFTU1ta6uLj8/e9/f/LkyadbSoLH47m7u//73/9msVgSK2RkZISFhS1cuLCurq6qqurevXvFxcWrVq2Scv9ubm52dnZxcXElJSV2dnZ2dnbl5eUAgDt37hgYGCxYsMDPz8/CwuLMmTOHDh0yNDTsbj9rnOwa4n4iWkG+IiN33rc3Z+yKrFQ9Vyis/is0H5CRIUQgEIgBYEBmhI8fP4Y/zp8/T0yz0h1ZWVmZmZlr16794osvAABqamonT540Nzf/8ccfr127ButgGBYaGurs7Ozj40NsKxQKN2zY4OPjM3/+XyvwRUdHwx95eXkSe4yIiAAAnDp1SlVVFQCwYMECf3//qKio/Pz8SZM+7Zm5fPnytraP5nDq6uoAgKVLl6qrqxcUFLS2trJYLBcXF0tLyx72o65nDMBf3qGpjOk7DDb+UacF6iQsxktFhhCBQCAGgEHhLPPw4UMAANFLZfz48VZWVsnJybiks7PzxYsXp06dun79Om4LhULhmjVrLl68aG5uTjSEPSMQCFJTU6dNm0acq3l7e0dFRSUlJUlpCCXKtbS0li1bJqUafD5fIBAABQAAaKYof6+3JlbTtYf6XR1tzc3dr0+IINDS0vLJT7MIGWhtbRUKhWhs+53Ozk7Q50RUCHGEQiEx+XN3DApDWFBQAAAQ8Y6ZOHHiy5cva2tr4Xc7RUXFxMRET09PX1/fa9euLV68GMOwDRs2XLx48cCBA73ycCkrK2tra5swYQJRaGFhgWvyeVBQUCCTyQCAX1Unb9X/poo2qofKTEVgq6+sivLJSAeGYXCuj+hfSCSSsrIyMoT9DjKEA4RQKBR5eyeRQWEI379/DwDQ1v5oXXUmkwkAaGhowB1YlJWVExISFi1a5OfnFxsbm5ycfPbs2f3794eFhfVXd3DTZ6OU++Gux8bccfMX9nhnoVPAVxPJDGQFEQgEYgCQ1hBu2LChZyPxww8/mJvLmAZaIBAAABQUPrrTw4cjPp9PFCorK8fHxy9cuBBmtQ4PD9+5c2dvu+vq6gIAUKkfHbvE7gaaOxkpZ6/FfM4eEQgEAiGCtIawuLi45ygIGCwhG/At1vv37/X19XEhtLsMBkOksrKysomJyePHj6lUqmyxhnCfDQ0NRCHsTk1NTYYdIhAIBGLoIq0hhP4sA8S4ceMAALW1tURDWFNTo6CgIJLPRSgUhoSEREVF7d+/PyUlxdfXl+g7IyXGxsYkEqm29qNFbmtqanBNPg9dXV3SvLxGyEBUVNRXX32Fvrj0O4mJiU5OTgYGBvJWZLiRnZ1NIpFmzpwpb0WGG9XV1VlZWb6+vj1XGxTZSuC/PykpCZc0NTVlZWXZ2dkR72UYhn399dcXLlw4ePDg7t277969y2KxfH19b9++3avuVFVVJ02a9PjxY6Idgr3PmjWrrwcjNQ0NDdLEliBkIDw8/N27d/LWYhhy6dKlnJwceWsxDLl///79+/flrcUwJDs7G4+m6wH5GMKoqKitW7fi71o9PDxGjRp14cKFpqYmKDl9+nRHRwcxwh36iJ45c+bgwYO7du0Cf/rOsFgsPz+/3trCVatWtbS0REZGwiKPx4uKihozZsy8efP6fnQIBAKBGEIMiNfo9u3b09PTAQBFRUV8Ph/mGJs0adLFixdhhfj4+Fu3boWEhMDMZyoqKj/99BObzbazs1uyZElZWdm1a9dmz54dFBSE75PP55eXlx8+fJi4OgTuR1pXV0dU4PTp0+fPnwcAvH37FgDg5uZGpVKVlZUfPXoEK6xfv/7atWvffPPNkydPDA0N4+Liqqurb9++LTElKQKBQCCGMQNiCHV1dU1MTAAA8C+E+P2PxWLRaDSiZ4qfn5+2tjZMJaOurv7dd999++23RD9SGo2WkJBAoVBE+lJWVn748KGIXFNTU1wBJSUl/DedTk9NTT148GBiYmJWVpaVldXFixe7y8eGQCAQiGEMSZqoe8RA8OrVK2tr62nTpslbkWFIfn7+xIkTRQJyEH2ntLRUW1sbJhRE9CM1NTUkEqmPSf8R4nz48IFGo718+bLnasgQypN79+7p6urKW4thCI/H09DQkLcWw5DGxkZVVVWYEQnRj7S3twMA6HS6vBUZbgiFwlGjRn1y+QdkCBEIBAIxokFPdggEAoEY0SBDiEAgEIgRDTKECAQCgRjRDIrVJxCfk9LS0rdv35qamhLzydXX14ssYmxjYyOyQAeiZ968efPmzRsTExNi0A6kra0tOTm5pqZGW1ubxWLp6enJRUPEiKWurq6goEBLS2vKlCkim4RCYUZGxuvXrxkMhoODw/jx4+WioZzBECOGS5cu4b6U+/fvJ26Kj48HAGgSSEpKkpeeQ44rV65oamrCgd23b5/I1ry8vLFjx6qqqk6bNm3s2LFz5syRh46IEcqzZ8/w3LBeXl4iWzkcjr29PY1Gmzx58oQJE9TU1OSipNxBM8IRxLhx43766SdbW1tHR0eJFbhcLlpzVQaMjIyOHz9ua2s7Z84ckU1NTU2enp62trbR0dEqKioAgKqqKnno2Ff4fH5ycnJ+fr6ysrKbm5tsC78gPj/q6up79uyxtbWFmSlFYLPZ7e3tpaWlcHmDIXpy9h1kCEcQTk5OTk5OAABk7fqXWbNmwXTt4gF2UVFRXC733Llz0AoCAEQWVBkScLnc+fPnZ2dna2trNzc3h4aGHjhwQIalQBGfHxMTk7Vr1wKxBV8BAL/++mtaWtovv/yCn5ND8eTsF5AhRPzFxo0bGxsbJ0yY4O/vL/6hCyEDKSkp06dPf/Xq1aVLl6hUqrOz87Jly4bcg8i6deuePXt25coVNpvd1NQUGBgYFhZmZ2eHktQPaVJSUhgMxqhRozZv3tzY2Dht2rS1a9eOzHzLyGsUAQAAZDLZ0dGRSqUyGIzIyMjJkyfjCcoRfaGqqurt27e+vr46Ojp0On316tUhISHyVqp3lJaW3rx509vbm81mAwAYDMbZs2fJZPLhw4flrRqiT1RVVdFoNBaLJRAIDAwMwsPDZ8+ezefz5a2XHEAzwmFCWFjYzZs3JW7au3evv79/z809PDw8PDzg77a2NkdHx23btv3222/9rOUQZM+ePdevX5e4affu3StWrOi5OZVKrayszM7OhkllZ8yY4e/vv3nz5smTJ/e/rgMDdJsiLn+tp6c3Y8aM9PT0jo6OkTmBGCTExsbu3btX4iYfH59Dhw713JxKpXK53MjIyNWrVwMAAgICJk+eHBMTQ1z/boSADOEwwdvb29raWuKm6dOn92pXSkpKK1eu3LFjB5/PR3mrPT09LSwsJG6ytbX9ZHN9ff3Ro0fjqdUXLVoEAMjNzR1ChrCgoAAAYGlpSRRaWVllZmaWlJRYWVnJSS8EsLOz684QSvNpA64ItHDhQli0tLQ0MTHJzc1FhhABSktLc3JyeDyelZVVd96VIjx79iwuLo7L5ZqYmAQGBvbxg3NNTU1OTk5tba2+vj68b4rQ1tYWHR2dm5tLpVJdXFy8vb1JJJKDg4ODg0Nf+hXpgkajiS96JRsVFRUPHjwQEVpaWkLPnR7Iy8u7fv16fX29sbHx8uXLDQ0N+6JGbW1tdnZ2bW2tnp6el5eXeIX29vaYmJicnBz4MW/x4sUkEsne3t7e3l7mTsePH098ydzR0QE+XhFs8PP+/XsAAJPJJAphkcvlyken/qO1tVV8BXMdHR3iDFgiFRUV0dHRZWVl2trafn5+4vF5vYLH4z179qykpIRKpQYHB4tXwDDs559/TktL6+rqmjp1amBgoJKSkpmZmZmZmcydwpDBzs5OXNLR0dG/J2d9fX1OTk55ebmamtqyZcukaVJXV3f58uXi4mINDY2//e1vfbytNTU15ebmFhUVCYXC4OBgKlWCyUtKSkJxhH/x66+/4tFgAIBNmzZJ0+rYsWNkMllbW9ve3p5Op6urqz9+/Fg2BTgcDnEdFhcXF/E69fX18BncxsYGPvQtWbKkq6urVx1paWmJxBHm5ubiOykuLtbX13d3d5ftKMRJSEgQP/nWr1/fc6uTJ09SKBQmk2lvb6+kpKSmppaRkSGbAvX19SLLYYrX4XK5cJY2ZcoUU1NTAICXlxefz+9VRzo6OiJxhM+fPyeTyXFxcbD4z3/+U0lJqaKiQrYDkQu+vr4AgKqqKqJw3759AICUlBR5adVf1NTUiJ+cDg4OPbdKTU1VVVVVUlKyt7dnMpkUCuXMmTMy6zBz5kzcf0pFRUW8QldX15IlSwAAJiYmNjY2JBLJysrq3bt3veplwYIFInGEHz58YDKZu3btgsXExETw55vwfgFeRxATExNpmmRnZ2tpadFotOnTp+vq6pJIpIMHD8qswKJFi4iO3K2trSIVhEIhfC2MDOFfZGVl+fr6Hjp06Ny5c1IawhcvXpDJ5Llz57a0tGAY9ubNm9GjR48ZM6atrU0GBTgcjqen5759+xISEkgkkkRD6O/vTyKR7ty5g2GYUCjcs2cPAODYsWPS7P/Ro0cwWJ5EIikpKWlqauLB3XPnzmUymY6OjtOnT6fRaOPHjy8tLZXhECQCDWFMTMx7AnDEuuPVq1cUCoXFYjU1NWEYVl5ePmbMGH19/Z5bdUd9ff2iRYv27t0bHx+voKAg0RCuWLGCRCLduHEDFr///nsAwOHDh6XZf2ZmpsjAOjo64lsPHDigoKDg6urq6OhIo9HOnTsnwyHIEThByc/PJwo3b94MAHjy5Im8tOovoCHcvn078eRsbGzsoUlzc7Oenp6hoSF8oGlqanJycqJSqYWFhbLpsGzZsu3bt8fGxk6aNEmiITx+/DgAYPfu3UKhEMOw+Ph4MpnMZrOl2XlLSws8ORUUFBQUFODvzs5OuPX27dt0On3GjBnu7u40Gm3z5s2yHYJEFi5cCH0XDAwMpDGEfD7f3NxcS0uroKAAw7D29nYPDw8SifS///1PNgVCQkJCQ0Ojo6Phuz1xQxgTEwMAWLduHTKEEoCrOEpjCGGADvH/BF3prly5gkvKysocHBxevnwp0rawsNDBwaE7eyPREHI4HDKZPG/ePFzC5/O1tbVNTU0/qSqGYVwu9+HH4JrX1dXduHHj6NGjJ06cSE5O7ujokGaHUgINITTeUrJx40YAAHFufezYMQDApUuXcEl5ebmDg8Pvv/8u0raoqMjBwaGkpETinqGbnIiwvr4evg7FJQKBQFdXd+zYsfDW0zMNDQ0iA5uVlUWskJeXd/To0cjIyO60Gsz88MMPAIDk5GSi8MsvvwQAcDgceWnVX0BD+N1330nf5MKFCwCA48eP4xL49nvLli24pKWlxc3NLT4+XqQtj8dzdnbubiY9c+ZMiYbQ1NRUS0sLt14Yhrm7u5PJ5Lq6uk9q29XV9VAM4lldXl5+6tSpkydPPn369JN7kw2Yd/CT1WB+qz179uCSV69eAQACAgJwSUdHh4+PD/E+AGltbXV3d7969arEPXt6eko0hA4ODoqKih8+fECGUALSG0IzMzNdXV2BQIBLXr9+DQAIDg7GJWVlZcbGxrq6ukRbWFhYqK+vb2ho2N2dUaIhjI2NFbkCMQxbvnw5AODNmzfSHJpckMEQTpw4UVtbm/jKt7S0FACwYsUKXFJeXj5u3DgdHR2iLSwqKjIwMNDT04MPleJINITQ4fbIkSNEIZwJvX79Wnq1hyXJyclwzoRL+Hw+k8mU8vFrkCODIQwICBC54rq6uphMprW1NS5pbm52dnam0WhEW8jj8RwcHJSUlB4+fChxzxIN4du3bwEA/v7+ROGJEycAAN3d9wcbUhrCLVu2AAB+++03ohDeY/FiR0eHp6cnhUIh2sLW1tZ58+ZRKBTiDISIREPY2NhIJpNdXV0xDENxhLLD5/Pfvn1rYmJCfA1tYmJCIpGKiopwiZGR0cOHD6FjC3zAef36tYuLC4VCSU9PJ75G/yTQyoo0gV/L4abBzKZNmxQVFVVUVGbNmgXfSHSHQCAoKSkxNjYmeuvAIvEwx44dm56erqys7OLiAp9diouL586dKxAI0tLSepUDrIeBJf4rRybOzs5GRkYxMTENDQ1QcuXKFS6Xu3LlSvkq1o+cO3dOVVVVUVHR2tr60KFDPcfSFRUVUSgUIyMjXEKhUMaNG1dUVIT9uc65iopKYmLizJkzv/zyS/gg+OHDB3d397y8vLi4uF4lIhjSV32vgNea+JFyOJwPHz7AIo1Gu3HjxsKFC4OCgi5fvgwAaGtr8/LySk9Pv3z5Mgx1lZLi4mKhUAi7Q4ZQdpqamgQCgYg3HZVKVVdX5/F4RKGZmVl6ejqFQnF1dU1ISHB2dpbBCgIA4G4l+u+J9DjYsLS09PLyCgsL8/f3LygoCAwM3LFjR3eVW1pa4CM2UUgmkzU1NUUO08jIKCUlhUajzZs3Dw4shmGPHj3qLuChOyQOrJaWFhj0A/sZUFBQOHnyJMzOvHfv3rVr14aEhFhbW4eGhspbtf7BwMDAw8Nj+/btISEhLS0tO3fu9PT0FAgE3dVvaGjQ0tISSafHZDI7Ozvb2tpwiYqKSnx8vK2t7dKlS2NjY11dXZ+BoHrwAAAIe0lEQVQ/fx4fH48H7ErJ0L3qe0tDQwOFQsEXBoCIHymNRrt+/bqrq2tQUNCFCxe8vLwyMjJg2qNedQf3CdfYGebhEy9evNi0aVMPFXR1dbsLl/4kQqEQSEovSaFQxK+i8ePHZ2RkODs7e3l5jRkzJi0trbdWEO9RJKoBFnu4bgeCly9fbtiwoYcKTCbz1q1b8Pf8+fOJcSAHDhyYNWvWkSNHVq5cKTEKrbuBpVKp4odpamr6+PFjOLC6urppaWkyrCMjcWChp/VnHtjBiYeHR2pqanh4+H//+18VFZV169bt27dPVVVV3nr1A7q6uhUVFfjJduTIER8fn6SkpKtXrwYGBkpsgmGYxKseiJ0tampqDx48cHd3Z7PZNBrt5s2bbm5uvdVw8Fz1Aw2GYSQSSSQBocTLkE6n//zzz0uWLFm9ejWFQomKioK+zb2CeJ8Z5jNCMplM75G+5MVgMBgkEglGWeEIhUIej6euri5eH36gBgDw+Xxi7I70qKmpAbHgLViU2OPA8cmBpdPpeGWR2B0dHZ2wsDAMw5KSkiTuXFVVlUwmiwwshmFcLlfiYfL5fPguC776l+FwBs/ADlrmzJnz4MGDmpqa4uLi48ePEwONhjRkMplo1eh0OkzIIh75isNgMEROTgAAl8ulUCh4anUcDMPgDRf8eeftLSPn5GQwGF1dXY2NjUQhPFI4CEQEAgGMygV9G1j4rxzmM0Jra+vu7rZ9R1FRccyYMSILl9TU1AgEAvHZHvwuSKVSHzx4sHr1ahcXl7S0NJFsHZ8E7lakx8rKSiD2Yn2gsbCw6MvAGhsbg+7DsalUqpGRUXV1NVHI4XD4fL74YcLvgmQyOSUlJSQkBA5sb9Od9DCwKPn4SKPnkxMAYGpqmpeXx+FwdHV1cWFVVdW4ceNEZorwu2B+fv6dO3eOHj26dOnSuLg4ickcemDwXPUDjampaUpKSlVVFdHAV1RUaGhoiCwSjn8XvHjx4q1bt4KCggAA0G2wV92BP0dymM8IBxonJ6eysjKYgwpy7949AMDs2bOJ1YjeMe7u7unp6UTfGemBy93dv3+fKExKStLV1TU3N5f9MD47ubm5oMc1X1gsVlVVVX5+Pi6BAyuy4B+0giQSKT09/YsvvkhPT1dRUcF9Z6Rnzpw5JBJJZBKQlJTEZDJ7+7CCGOo8e/YMfOrkBB9fhs+fP6+urha56qEVfPHiRXx8vLe39927d2fOnLl06VIYJCA95ubmenp69+/fJ77tkHifGeqID2x1dXV+fr7IYRK9Y1atWiXiOyM9TCbTwsIiNTW1o6MDhU9IoLvwia6uLjabjSdiwDAsNTUVALBixQr42rOxsdHa2lpdXZ3L5eJ1CgsLR48ePXbsWGLIIPTy19fXh55m4nQXUO/i4kKn0/Py8mAR/u+JKg1C7t69SwyEz8zM1NDQoNPpxGQlbDZ7x44deBEGZrHZbDiwzc3NU6ZMYTAYxGwaRUVF+vr6BgYGxcXFuLC0tNTQ0LC34RMYhrm5udFotJycHFiEkSrbtm2T8ZgRQ4SMjIw//vgDL+LZU4lxk2FhYWw2G08zVFdXp6KiMnXq1ObmZgzDBAIBTB6WmZmJN5EYKdHY2Dhr1ixFRcW7d+9KVKa7OEK4pm5UVBQsvnjxgk6nS7w/DE66C58IDw9ns9nv37+HxaamJh0dHVNTU1zy9ddfAwCIISitra2urq5UKhXP1oRhWHt7+4IFCygUSkxMjEQFuosjjIiIAABEREQgQ/gX7e3tMO0CfHesqKgIi6dPn4YV4Ie9KVOmEFvBmPrp06cHBwcbGxuTyeTo6GhihfLychaLJR44X1RUxGKxKisricJp06bBTgEAVCoV/iYG6hYWFjKZTFVVVX9/fxhPY2Nj03MiDLkzceJEBoNhb2/v6ekJE0TRaDT8qsb+/IhiZWVFbAVj6m1tbYODg2GMCrEJhmGVlZWzZ88mWkFIaWkpi8UqLy8nCh0cHMQHdsOGDXiF4uLiUaNGqaiosNlsb29vKpVqbW3N4/H6bRQQg5KAgAAajWZjY+Pp6TljxgzoNEAMmsQwbOrUqQCA9vZ2XBIZGUkikUxMTIKDg2FGdeJFimFYa2urh4eHeLxgY2Ojm5ubSBbGr776Cp6QVCqVRCLB305OTsRWNjY2FArF09PT39+fwWAwmUyZE9l8NhYvXgyPBX6Ihb99fHzwCq6uruDj7H23b9+mUqkGBgZBQUFwsevAwEDiPjs7O319fYlWENLe3u7t7Z2QkEAU7tq1C8+qAwDQ0NDQ1NScOHEisdXs2bNJJBIJk8m5YFjS1dX1j3/8Q1y+aNEimB5aKBRu3brVwMBg27Zt+FYMw2JiYuLi4jgcjpmZ2fr166VM1S2Rw4cPi3+csLe3h5kGIZWVlRERETk5OQoKCi4uLqGhoeKf6AcViYmJycnJxcXF9fX1GhoaNjY2q1evFonzCw0NHT16tEhMxdWrV2NjYzkcjqmp6bp16+CbE9n48ccf//jjDxEhdG3Hi9XV1REREU+fPlVQUHB2dg4NDWUwGDL3iBgSPHny5M6dO7///vu7d+8UFRUtLCwCAgJEzrSIiIiqqqojR44QXTd/+eWXs2fPvnnzRk9Pj81m+/n5yaxDbGxsXl6eiFBPT++bb77Biy0tLceOHUtLS+vs7LS1td26dWsfc9B/Bs6fP19cXCwiNDMzW7NmDfx99uzZwsLCffv2ET8KPn369MSJE0VFRUwmc8mSJUFBQTIvZJ2QkJCZmSkiZDAYu3fvxosdHR0nT55EhhCBQCAQIxrkLINAIBCIEQ0yhAgEAoEY0SBDiEAgEIgRDTKECAQCgRjRIEOIQCAQiBENMoQIBAKBGNEgQ4hAIBCIEQ0yhAgEAoEY0SBDiEAgEIgRzf8BgK+yu4IkgbgAAAAASUVORK5CYII=", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Need to add package first\n", "using Pkg\n", "pkg\"add Plots\"\n", "using Plots\n", "default(lw=4, ms=5, legendfontsize=12, xtickfontsize=12, ytickfontsize=12)\n", "\n", "a = 1e-15\n", "plot(x -> (1 + x) - 1, xlim=(-a, a))\n", "plot!(x -> x)" ] }, { "cell_type": "markdown", "id": "6d967506-a6c2-4f78-8d53-a92b6913f98d", "metadata": {}, "source": [ "## Machine precision\n", "\n", "Floating point numbers do not exactly represent continuous values.\n", "\n", "There exists $\\epsilon_\\text{machine}$ such that\n", "\n", "$$ 1 \\oplus x = 1 $$ for all $$ \\lvert x \\rvert < \\epsilon_\\text{machine} $$\n", "\n", "Note: $\\oplus, \\ominus, \\otimes, \\oslash$ are the floating point arithmatic versions of $+, -, \\times, /$" ] }, { "cell_type": "code", "execution_count": 29, "id": "b5361f5d-3607-4258-a26f-3bc043fa0ba6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ϵ = 1.1102230246251565e-16\n", "eps() = 2.220446049250313e-16\n" ] } ], "source": [ "# Computing machine precision\n", "ϵ = 1\n", "while 1 + ϵ != 1\n", " ϵ = ϵ / 2\n", "end\n", "\n", "# And lets ask Julia what ϵ actually is\n", "@show ϵ\n", "@show eps();" ] }, { "cell_type": "code", "execution_count": 30, "id": "11d0e9e1-88c9-41b9-80e6-5cb6af50284d", "metadata": {}, "outputs": [ { "data": { "image/png": "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UdGUKVP27dvn5uamr6/foUOHxMTE+fPnN2T1UocOHcLDw21tbc3MzKrrg095dXJywjDM399/+fLlp06d2rhxY70vCkBjPCPklpcdvLUxlJdWoYgEn7ShS5MrIlFvkAhbJoqWHkPrN3lH8d8QCl+igAsICEhLSzMwMCB2c3R0NDAw8PT0jI+P/+OPP2oYbI0fP/7YsWPh4eGjR4/GW/z9/Xk8XpULLarD4/GoVKporKahoTFs2LB79+6VlpYihJycnNasWbN///4///yTeBSXy63hoaCYadOm+fv7b9u27dKlS1WehHg2Eonk4OCwfPly/N4pAE1HWtqrrbHeqTQeMa/2FqhtmbBLU9NIfnFJGSRC0Ih69OhhZGTk6elJo9FMTEzi4uL27NljampKTI0IITqdPn/+fG9vb4TQggULajihh4fHv//+O3XqVE9Pzy5dujx48MDX19fS0rLmo8S8fPlyzpw5M2fOtLKy0tDQePv27YEDB/r06YM/9lu2bFlAQMD69esTEhLGjx+vpqaWkZERFRWFYdiNGzckvMSIESMWLlx48uTJ3NzcmTNnGhoaZmVlPX369MmTJ+/evUMIDR061NraetiwYcbGxvn5+QcPHqTT6Y6OjpL/FgA0tpDow35ZERzCMkEqhuZo9J053oNEalETLSERAilr06aNqakpPt5iMBi3bt1atGjRokWLEEJmZmZXr169ffv227dvxY6aO3eut7e3jY1N165die0MBsPU1FS0uq5t27YPHz5cvXq1u7s7n89XUlKaPn36/v37RQ8FNTU1O3ToUPNdzTZt2lhYWOzbt6+wsBD9/xbljh078HfpdHpERMT27dvPnj178eJFhJCiouLAgQOXLl2Kd1BVVe3QoUPlYaupqamurq7o5fHjx3v06HHo0KE5c+YghGg0mrW1Nf4zQmjUqFH//vsvvjUdhULp1avX7du3+/TpU/vnC0D1pHVrlMNh+QVtCuGnERcW6PDJW3ot6WE9pvrjmisScUY4aGoGDRrk6+s7cOBASTr37dvX39+/af4xZTKZAoGght3Orl+/7uzsfOXKlZr37xZhs9klJSWampqS366sjMVisdlsYvYSU1BQIBQKGziBhclklpWV6erqVt4NjsfjFRQUaGlpVbnHm4GBwdu3b/X1m/S2/UwmU1W19g2GAK6xP66JkYLb3/5bkBM0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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# But why do we care?\n", "f1(x) = log(1 + x)\n", "f2(x) = x - x^2 / 2 + x^3 / 3 # Taylor series\n", "f3(x) = log1p(x)\n", "\n", "plot([f1, f2, f3], xlims=[-5 * ϵ, 5 * ϵ], label=[\"\\$log(1+x)\\$\" \"Taylor series\" \"\\$log1p(x)\\$\"])" ] }, { "cell_type": "code", "execution_count": 31, "id": "ab3f23b9-95a2-4a33-960e-703f6fcae8bd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "absolute error: -6.07747099184471e-17\n", "relative error: -6.077471022232065e-9\n" ] } ], "source": [ "# How to measure the error?\n", "y1 = f1(1e-8)\n", "y2 = f2(1e-8)\n", "\n", "# Absolute\n", "println(\"absolute error: $(y1 - y2)\")\n", "\n", "# Relative\n", "println(\"relative error: $((y1 - y2) / y2)\")" ] } ], "metadata": { "kernelspec": { "display_name": "Julia 1.11.6", "language": "julia", "name": "julia-1.11" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.11.6" } }, "nbformat": 4, "nbformat_minor": 5 }