可以先參考筆記: ‣, SongHan 講解得非常清楚

Binary Numbers | Lecture 1

image.png

Double Precision | Lecture 2

image.png

Exponent $e$ 有 11 bits; Significant or Fraction or Mantissa $f$ 有 52 bits.

在 normal number 情況下, eps 表示為 $1$ 與下一個最近的 normal number 之間的差距

根據公式數值 $1$ 可表示為 $s=0$, $e=1023$, $f=0$.

而下一個距離 $1$ 最近的 normal number 為 $s=0$, $e=1023$, $f=2^{-52}$.

所以 $eps=2^{-52}=2.2204e-16$.

Modified from https://x.com/b0rk/status/1624094389399171088

Modified from https://x.com/b0rk/status/1624094389399171088

注意到如果 $0<y/x<eps/2$ 時, 則 $x+y=x$.

這是因為 $x+y=x(1+y/x)$, 而 $y/x<eps/2$ 距離下一個可以表示的數值一半都不到就被 rounding 掉了.

注意到由於 normal number 公式的關係 (參考這個圖示), 數值之間的間格會成 exponent 方式成長, 所以下一次 $2$ 與最接近大於 $2$ 的數值變成 $2*eps$.

因此 $2+\epsilon=2$ (發生 round-off), 但是 $2-\epsilon\neq 2$, 注意看下圖可以表示的 machine number 就知道