From 8f148b2d9261c85ab1cc722ad4d9db60e1755927 Mon Sep 17 00:00:00 2001
From: Narumon Mokpha <narumon.mo.59@ubu.ac.th>
Date: Thu, 1 Feb 2018 10:13:49 +0700
Subject: [PATCH] =?UTF-8?q?=E0=B8=97=E0=B8=B3=E0=B8=88=E0=B8=B2=E0=B8=81?=
 =?UTF-8?q?=20pycharm=20ide=20=E0=B9=80=E0=B8=9B=E0=B9=87=E0=B8=99?=
 =?UTF-8?q?=E0=B8=84=E0=B8=A3=E0=B8=B1=E0=B9=89=E0=B8=87=E0=B9=81=E0=B8=A3?=
 =?UTF-8?q?=E0=B8=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .idea/vcs.xml                                 |   6 +
 week01/hello.py                               |   1 +
 week02/hellomodule.py                         |   2 +
 ...apter 03 Numerics and Error Analysis.ipynb | 480 ++++++++++++++++++
 4 files changed, 489 insertions(+)
 create mode 100644 .idea/vcs.xml
 create mode 100644 week01/hello.py
 create mode 100644 week02/hellomodule.py
 create mode 100644 week03/Chapter 03 Numerics and Error Analysis.ipynb

diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/week01/hello.py b/week01/hello.py
new file mode 100644
index 0000000..75d9766
--- /dev/null
+++ b/week01/hello.py
@@ -0,0 +1 @@
+print('hello world')
diff --git a/week02/hellomodule.py b/week02/hellomodule.py
new file mode 100644
index 0000000..88bcdc1
--- /dev/null
+++ b/week02/hellomodule.py
@@ -0,0 +1,2 @@
+# cookiecutter ...
+print("we've done it.")
diff --git a/week03/Chapter 03 Numerics and Error Analysis.ipynb b/week03/Chapter 03 Numerics and Error Analysis.ipynb
new file mode 100644
index 0000000..df4f30a
--- /dev/null
+++ b/week03/Chapter 03 Numerics and Error Analysis.ipynb	
@@ -0,0 +1,480 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "# เธšเธ—เธ—เธตเนˆ 1 เธ•เธฑเธงเน€เธฅเธ‚เนเธฅเธฐเธเธฒเธฃเธงเธดเน€เธ„เธฃเธฒเธฐเธซเนŒเธ„เธงเธฒเธกเธ„เธฅเธฒเธ”เน€เธ„เธฅเธทเนˆเธญเธ™\n",
+    "\n",
+    "> Mathematically correct programming bug is **hard** to spot.\n",
+    "\n",
+    "> เธชเธกเธเธฒเธฃเธ–เธนเธเนเธ•เนˆ...เน‚เธ›เธฃเนเธเธฃเธกเธœเธดเธ”\n",
+    "\n",
+    ">> Paulgramming - 2017\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": true,
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "# เธ•เธฑเธงเน€เธฅเธ‚เนเธฅเธฐเธ„เธงเธฒเธกเธ„เธฅเธฒเธ”เน€เธ„เธฅเธทเนˆเธญเธ™เนƒเธ™เน‚เธ›เธฃเนเธเธฃเธก\n",
+    "## C++\n",
+    "\n",
+    "```c++\n",
+    "#include <iostream>\n",
+    "using namespace std;\n",
+    "main() {\n",
+    "  float x = 1.0;    \n",
+    "  float y = x / 3.0;\n",
+    "  cout << ((x == y * 3.0)?\"\": \"Not\") << \" Equal\" << endl;\n",
+    "}\n",
+    "```\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": true,
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "# เธ•เธฑเธงเน€เธฅเธ‚เนเธฅเธฐเธ„เธงเธฒเธกเธ„เธฅเธฒเธ”เน€เธ„เธฅเธทเนˆเธญเธ™เนƒเธ™เน‚เธ›เธฃเนเธเธฃเธก\n",
+    "## Java\n",
+    "\n",
+    "```java\n",
+    "public class Test {\n",
+    "  public static void main(String[] a) {\n",
+    "    float x = 1.0;\n",
+    "    float y = x / 3.0;\n",
+    "    System.out.println( ((x == y * 3.0)?\"\": \"Not\") + \" Equal\" );\n",
+    "  }\n",
+    "}\n",
+    "```\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "collapsed": true,
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
+   "source": [
+    "# เธ•เธฑเธงเน€เธฅเธ‚เนเธฅเธฐเธ„เธงเธฒเธกเธ„เธฅเธฒเธ”เน€เธ„เธฅเธทเนˆเธญเธ™เนƒเธ™เน‚เธ›เธฃเนเธเธฃเธก\n",
+    "## Python\n",
+    "\n",
+    "```python\n",
+    "x = 1.0\n",
+    "y = x / 3.0\n",
+    "print(\"Equal\" if x == y*3.0 else \"Not Equal\")\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "collapsed": true,
+    "slideshow": {
+     "slide_type": "skip"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "# เธกเธตเธซเธฅเธฒเธขเธ•เธฑเธงเน€เธฅเธ‚เธ—เธตเนˆเน„เธกเนˆ\n",
+    "x = 1.0\n",
+    "y = x / 3.0\n",
+    "#print(\"Equal\" if x == y*3.0 else \"Not Equal\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "# เธกเธตเธซเธฅเธฒเธขเธ•เธฑเธงเน€เธฅเธ‚เธ—เธตเนˆเธ„เธญเธกเน€เธเน‡เธšเธ„เนˆเธฒเน„เนˆเธกเนˆเน„เธ”เน‰\n",
+    "\n",
+    "* เธ•เธฑเธงเน€เธฅเธ‚เธ—เธตเนˆเธ„เธญเธกเธžเธดเธงเน€เธ•เธญเธฃเนŒเธ•เน‰เธญเธ‡เธ›เธฃเธฐเธกเธฒเธ“เธเธฒเธฃ (Inexact numbers)\n",
+    "    * เธ„เนˆเธฒเธญเธ•เธฃเธฃเธเธขเธฐ (irrational numbers) $\\pi, \\e, ...$\n",
+    "    * เธ„เนˆเธฒเธ•เธฃเธฃเธเธขเธฐ (rational numbers) เธ—เธตเนˆเน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เนเธ›เธฅเธ‡เน€เธ›เน‡เธ™เน€เธฅเธ‚เธเธฒเธ™เธชเธญเธ‡เน„เธ”เน‰\n",
+    "```python\n",
+    "0.1 + 0.2 == 0.3\n",
+    "```\n",
+    "\n",
+    "* เธ•เธฑเธงเน€เธฅเธ‚เธ—เธตเนˆเธ„เธญเธกเธžเธดเธงเน€เธ•เธญเธฃเนŒเธชเธฒเธกเธฒเธฃเธ–เน€เธเน‡เธšเธ„เนˆเธฒเน„เธ”เน‰เธ•เธฃเธ‡ (Exact numbers)\n",
+    "> เธ•เธฑเธงเน€เธฅเธ‚เธ—เธตเนˆเธชเธฒเธกเธฒเธฃเธ–เนเธ›เธฅเธ‡เนƒเธซเน‰เน€เธ›เน‡เธ™เน€เธฅเธ‚เธเธฒเธ™เธชเธญเธ‡เน„เธ”เน‰"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "## Floating-Point Binary\n",
+    "\n",
+    "> เธ•เธฑเธงเน€เธฅเธ‚(number) เน€เธ‚เธตเธขเธ™เนเธ—เธ™เธ”เน‰เธงเธขเธชเธฒเธขเธ‚เธญเธ‡เน€เธฅเธ‚เน€เธ”เธตเนˆเธขเธง(digit) เน‚เธ”เธขเธˆเธณเธ™เธงเธ™เธ‚เธญเธ‡เน€เธฅเธ‚เน€เธ”เธตเนˆเธขเธง เธ‚เธถเน‰เธ™เธญเธขเธนเนˆเธเธฑเธš เน€เธฅเธ‚เธเธฒเธ™(base)\n",
+    "\n",
+    "เนƒเธ™เธฃเธฐเธšเธšเธˆเธณเธ™เธงเธ™เธ™เธฑเธšเธ‚เธญเธ‡เธ„เธ™เน€เธฃเธฒเธˆเธฐเน€เธ›เน‡เธ™เน€เธฅเธ‚เธเธฒเธ™ 10 เน‚เธ”เธขเธกเธต digit เธ—เธตเนˆเนƒเธŠเน‰เน„เธ”เน‰เน„เธ”เน‰เนเธเนˆ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9\n",
+    "เธขเธเธ•เธฑเธงเธญเธขเนˆเธฒเธ‡เธ•เธฑเธงเน€เธฅเธ‚เนƒเธ™เน€เธฅเธ‚เธเธฒเธ™ 10 เน€เธŠเนˆเธ™  128  77  12100  เน€เธ›เน‡เธ™เธ•เน‰เธ™\n",
+    "\n",
+    "เธ•เธฑเธงเน€เธฅเธ‚เธ—เธตเนˆเนƒเธŠเน‰เนƒเธ™เธ„เธญเธกเธžเธดเธงเน€เธ•เธญเธฃเนŒเธˆเธฐเน€เธ›เน‡เธ™เน€เธฅเธ‚เธเธฒเธ™ 2 เน‚เธ”เธขเธกเธต digit เธ—เธตเนˆเนƒเธŠเน‰เน„เธ”เน‰ เน„เธ”เน‰เนเธเนˆ 0 เนเธฅเธฐ 1 \n",
+    "เธขเธเธ•เธฑเธงเธญเธขเนˆเธฒเธ‡เธ•เธฑเธงเน€เธฅเธ‚เนƒเธ™เน€เธฅเธ‚เธเธฒเธ™ 2 เน€เธŠเนˆเธ™  1, 101, 1101  เน€เธ›เน‡เธ™เธ•เน‰เธ™"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "# Terminology\n",
+    "** Bit **\n",
+    ": 0 or 1\n",
+    "\n",
+    "** Byte ** \n",
+    ": 8 bits\n",
+    "\n",
+    "** Real **\n",
+    ": 4 bytes **single precision**\n",
+    ": 8 bytes **double precision**\n",
+    "\n",
+    "** Integer **\n",
+    ": 1, 2, 4, or 8 byte signed\n",
+    ": 1, 2, 4, or 8 byte unsigned\n",
+    "\n",
+    "> เธ‚เธถเน‰เธ™เธญเธขเธนเนˆเธเธฑเธšเธ เธฒเธฉเธฒเน‚เธ›เธฃเนเธเธฃเธกเธงเนˆเธฒเธˆเธฐเนƒเธŠเน‰เธชเธฒเธขเธ—เธตเนˆเธกเธตเธ„เธงเธฒเธกเธขเธฒเธงเน€เธ—เนˆเธฒเน„เธซเธฃเนˆ 8, 16, 32 เธซเธฃเธทเธญ 64 เน€เธ›เน‡เธ™เธ•เน‰เธ™\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "# เธ‚เน‰เธญเธ•เธเธฅเธ‡\n",
+    "\n",
+    "* เน€เธžเธทเนˆเธญเธ‡เนˆเธฒเธขเธ•เนˆเธญเธเธฒเธฃเธ„เธณเธ™เธงเธ“เน€เธฃเธฒเธˆเธฐเนƒเธŠเน‰เธชเธฒเธขเธ—เธตเนˆเธกเธตเธ„เธงเธฒเธกเธขเธฒเธง 8 เนเธฅเธฐเน€เธ‚เธตเธขเธ™เนเธขเธเน€เธ›เน‡เธ™เธเธฅเธธเนˆเธกเธฅเธฐ 4 เน€เธžเธทเนˆเธญเธ‡เนˆเธฒเธขเธ•เนˆเธญเธเธฒเธฃเธ„เธณเธ™เธงเธ™ \n",
+    "\n",
+    "> เน€เธŠเนˆเธ™  1 = 0000 0001\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "# Binary $\\rightarrow$ Integer\n",
+    "\n",
+    "|      |      |      |      |      |      |      |      |\n",
+    "|------|------|------|------|------|------|------|------|\n",
+    "|   1  |   1  |   1  |   0  |   0  |   1  |   1  |   1  |\n",
+    "|$2^7$ |$2^6$ |$2^5$ |$2^4$ |$2^3$ |$2^2$ |$2^1$ |$2^0$ |\n",
+    "\n",
+    "$1\\times2^7 + 1\\times2^6 + 1\\times2^5 + 0\\times2^4 + 0\\times2^3 + 1\\times2^2 + 1\\times2^1 + 1\\times2^0$\n",
+    "\n",
+    "$1\\times 128+ 1\\times 64 + 1\\times 32 + 0\\times 16 + 0\\times 8 + 1\\times 4 + 1\\times 2 + 1 \\times 1$\n",
+    "\n",
+    "\n",
+    "$128 + 64 + 32 + 0 + 0 + 4 + 2 + 1$\n",
+    "\n",
+    "**Answer**\n",
+    "> $231$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "# เน€เธ‚เธตเธขเธ™เน‚เธ›เธฃเนเธเธฃเธกเธ—เธ”เธชเธญเธš\n",
+    "\n",
+    "* เธ„เธณเธ™เธงเธ“เธซเธฒเธœเธฅเธฅเธฑเธžเธ˜เนŒ\n",
+    "```python\n",
+    "1*2**7 + 1*2**6 + 1*2**5 + 0*2**4 + 0*2**3 + 1*2**2 + 1*2**1 + 1*2**0\n",
+    "```\n",
+    "\n",
+    "* เธ„เธณเธชเธฑเนˆเธ‡เนเธ›เธฅเธ‡เน€เธฅเธ‚เธเธฒเธ™เธ•เนˆเธฒเธ‡เน†\n",
+    "```python\n",
+    "int('11100111', 2)  # เนเธ›เธฅเธ‡ str '11100111' เธเธฒเธ™ 2 เน€เธ›เน‡เธ™ int\n",
+    "oct(35)             # เนเธ›เธฅเธ‡ 35 เธเธฒเธ™เธชเธดเธš เนƒเธซเน‰เน€เธ›เน‡เธ™เธเธฒเธ™ 8\n",
+    "hex(35)             # เนเธ›เธฅเธ‡ 35 เธเธฒเธ™เธชเธดเธš เนƒเธซเน‰เน€เธ›เน‡เธ™เธเธฒเธ™ 16\n",
+    "bin(35)             # เนเธ›เธฅเธ‡ 35 เธเธฒเธ™เธชเธดเธš เนƒเธซเน‰เน€เธ›เน‡เธ™เธเธฒเธ™ 2\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {
+    "slideshow": {
+     "slide_type": "skip"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "#int('11100111', 2)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "#### Exercise\n",
+    "เธˆเธ‡เนเธชเธ”เธ‡เธเธฒเธฃเนเธ›เธฅเธ‡เธ•เธฑเธงเน€เธฅเธ‚เธเธฒเธ™เธชเธญเธ‡เธ•เนˆเธญเน„เธ›เธ™เธตเน‰เน€เธ›เน‡เธ™เธˆเธณเธ™เธงเธ™เน€เธ•เน‡เธก\n",
+    "* 10011001\n",
+    "* 00010011\n",
+    "* 00011111"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "### Binary $\\rightarrow$ Float\n",
+    "เธเธณเธซเธ™เธ”เธ•เธณเนเธซเธ™เนˆเธ‡เธ—เธตเนˆเน€เธฅเธ‚เธชเธญเธ‡เธเธณเธฅเธฑเธ‡เน€เธ›เน‡เธ™เธจเธนเธ™เธขเนŒ (fix-point representation)\n",
+    "\n",
+    "|      |      |      |      |      |      |      |      |\n",
+    "|------|------|------|------|------|------|------|------|\n",
+    "|   1  |   1  |   1  |   0  |   0  |   1  |   1  |   1  |\n",
+    "|$2^5$ |$2^4$ |$2^3$ |$2^2$ |$2^1$ |$2^0$ |$2^-1$ |$2^-2$ |\n",
+    "\n",
+    "$1\\times 2^5+1\\times 2^4+1\\times 2^3+0\\times 2^2+9\\times 2^1+1\\times 2^0+1\\times 2^{-1}+1\\times 2^{-2}$\n",
+    "\n",
+    "$1\\times2^5 + 1\\times2^4 + 1\\times2^3 +0\\times 2^2+0\\times2^1+1\\times 1+\\frac{1}{2}+\\frac{1}{4}$\n",
+    "\n",
+    "$32 + 16 + 8 + 0 + 0 + 1 + 0.5 + 0.25$\n",
+    "\n",
+    "**Answer**\n",
+    "> 57.75"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "metadata": {
+    "slideshow": {
+     "slide_type": "skip"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "#1*2**5 + 1*2**4 + 1*2**3 + 0*2**2 + 0*2**1 + 1*2**0 + 1*2**(-1) + 1*2**(-2)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "#### Binary Fixed-Point Arithmetic\n",
+    "|      |      |      |      |      |      |      |      |      |\n",
+    "|------|------|------|------|------|------|------|------|------|\n",
+    "|   1  |   1  |   1  | ...  |   0  |  0  |   ...  |   1  |   1  |\n",
+    "| sign ||$2^{m-1}$ |$2^{m-2}$ | ... |$2^0$ |$2^{-1}$ | ... |$2^{-n+1}$ |$2^{-n}$ |\n",
+    "\n",
+    "* Parameters: $m, n \\in Z$\n",
+    "* $m$ เธ„เธงเธฒเธกเธขเธฒเธงเธ‚เธญเธ‡เธชเธฒเธข(เธˆเธณเธ™เธงเธ™ bit) เธ—เธตเนˆเนƒเธŠเน‰เน€เธ›เน‡เธ™เธˆเธณเธ™เธงเธ™เน€เธ•เน‡เธก(integer portion)\n",
+    "* $n$ เธ„เธงเธฒเธกเธขเธฒเธงเธ‚เธญเธ‡เธชเธฒเธข(เธˆเธณเธ™เธงเธ™ bit) เธ—เธตเนˆเนƒเธŠเน‰เน€เธ›เน‡เธ™เธ•เธฑเธงเธซเธฒเธฃ(fractional portion)\n",
+    "* เธ„เธงเธฒเธกเธขเธฒเธงเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ‚เธญเธ‡เธชเธฒเธขเน€เธ›เน‡เธ™ $m+n+1$ เธฃเธงเธกเธเธฑเธš bit เธ—เธตเนˆเนƒเธŠเน‰เธšเธญเธเน€เธ„เธฃเธทเนˆเธญเธ‡เธซเธกเธฒเธข (+/-)\n",
+    "* เธ„เธงเธฒเธกเธฃเธนเน‰เน€เธžเธดเนˆเธกเน€เธ•เธดเธก: [Fixed-Point Numbers](https://en.wikibooks.org/wiki/Floating_Point/Fixed-Point_Numbers)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "# Error in Binary Fixed-Point Arithmetic\n",
+    "\n",
+    "** เธชเธกเธกเธ•เธดเธงเนˆเธฒเธกเธตเนเธ„เนˆ 2 bit เนƒเธซเน‰เนƒเธŠเน‰ ** \n",
+    "\n",
+    "> $m = 1, n=1$ เน‚เธ”เธขเธ—เธตเนˆเน„เธกเนˆเธ„เธดเธ” sign bit\n",
+    "\n",
+    "$0.1 \\times 0.1 = 0.01 \\approx 0.0$ \n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "# Binary Floating-Point Arithmetic\n",
+    "1. IEEE single precision format\n",
+    "\n",
+    "|  0   |     1-8       |       9-31        |\n",
+    "|:----:|:-------------:|:-----------------:|\n",
+    "| $s$  |      $e$      |        $f$        |\n",
+    "| $0$  |   $00001001$  |   $0011011...01$  |\n",
+    "\n",
+    "$ = (-1)^s \\times 2^{e-127} \\times 1.f $\n",
+    "\n",
+    "เน‚เธ”เธขเธ—เธตเนˆ\n",
+    " * **sign** $s \\in {0, 1}$\n",
+    " * **biased exponent** $0 \\le e \\le 255$\n",
+    " * **exponent** $p=e-127$ so $-126 \\le p \\le 127$\n",
+    " * **significand** $1.f$ "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "# Binary Floating-Point Arithmetic \n",
+    "2. IEEE double precision format\n",
+    "\n",
+    "|  0   |     1-11      |       12-63       |\n",
+    "|:----:|:-------------:|:-----------------:|\n",
+    "| $s$  |      $e$      |        $f$        |\n",
+    "| $0$  | $00001000111$ |   $0011011...01$  |\n",
+    "\n",
+    "$ = (-1)^s \\times 2^{e-1023} \\times 1.f $\n",
+    "\n",
+    "เน‚เธ”เธขเธ—เธตเนˆ\n",
+    " * **sign** $s \\in {0, 1}$\n",
+    " * **biased exponent** $0 \\le e \\le 2047$\n",
+    " * **exponent** $p=e-1023$ so $-1022 \\le p \\le 1024$\n",
+    " * **significand** $x = 1.f$ "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "# Example \n",
+    "\n",
+    "เธˆเธ‡เน€เธ‚เธตเธขเธ™เธ„เธณเธชเธฑเนˆเธ‡เน€เธžเธทเนˆเธญเธซเธฒเธ„เนˆเธฒเธ‚เธญเธ‡เธ•เธฑเธงเน€เธฅเธ‚เธ•เธฒเธกเธ‚เน‰เธญเธ•เนˆเธญเธเธณเธซเธ™เธ”เธ•เนˆเธญเน„เธ›เธ™เธตเน‰ เน‚เธ”เธขเนƒเธŠเน‰ IEEE single precision format\n",
+    "> 0 1111 0000 0000 1010 0000 0000 0000 000\n",
+    " \n",
+    "**Answer** \n",
+    "เธซเธฒเธ„เนˆเธฒ $s, e, f$ เธˆเธฒเธเน‚เธˆเธ—เธขเนŒ\n",
+    "> $s = 0$\n",
+    "\n",
+    "> $e$ = 11110000\n",
+    "\n",
+    "> $f$ = 0000101 \n",
+    "\n",
+    "```python\n",
+    "s = 0\n",
+    "e = int('11110000', 2)\n",
+    "x = 1 + 0*2**(-1) + 0*2**(-2) + 0*2**(-3) + 0*2**(-4) + 1*2**(-5) + 0*2**(-6) + 1*2**(-7)\n",
+    "print( (-1)**s * 2**(e-127) * x )\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "# Exercise \n",
+    "1. เธˆเธ‡เน€เธ‚เธตเธขเธ™เธ„เธณเธชเธฑเนˆเธ‡เน€เธžเธทเนˆเธญเธซเธฒเธ„เนˆเธฒเธ‚เธญเธ‡เธ•เธฑเธงเน€เธฅเธ‚เธ•เธฒเธกเธ‚เน‰เธญเธ•เนˆเธญเธเธณเธซเธ™เธ”เธ•เนˆเธญเน„เธ›เธ™เธตเน‰ เน‚เธ”เธขเนƒเธŠเน‰ IEEE single precision format\n",
+    " * $s = 0$\n",
+    " * $e$ = 1111 0000 0000\n",
+    " * $f$ = 0000 1010 \n",
+    " \n",
+    "2. เธˆเธ‡เน€เธ‚เธตเธขเธ™เธ„เธณเธชเธฑเนˆเธ‡เน€เธžเธทเนˆเธญเธซเธฒเธ„เนˆเธฒเธ‚เธญเธ‡เธ•เธฑเธงเน€เธฅเธ‚เธ•เธฒเธกเธ‚เน‰เธญเธ•เนˆเธญเธเธณเธซเธ™เธ”เธ•เนˆเธญเน„เธ›เธ™เธตเน‰ เน‚เธ”เธขเนƒเธŠเน‰ IEEE double precision format\n",
+    " * $s = 1$\n",
+    " * $e$ = 0000 0011 0000\n",
+    " * $f$ = 0110 1010 \n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "slideshow": {
+     "slide_type": "slide"
+    }
+   },
+   "source": [
+    "# Error Calculation\n",
+    "\n",
+    "* **Absolute Error** \n",
+    "    $\\rightarrow E_{abs} = \\| x_0 - x \\|$\n",
+    "* **Relative Error**\n",
+    "    $\\rightarrow E_{rel} = \\frac { E_{abs} }{x} $\n",
+    "* **Percentage Error**\n",
+    "    $\\rightarrow E_{per} = E_{rel} \\times 100$"
+   ]
+  }
+ ],
+ "metadata": {
+  "anaconda-cloud": {},
+  "celltoolbar": "Slideshow",
+  "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.5.2"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
-- 
2.18.1