Unit in the last place (ulp) 計算方式

筆記一下 Unit in the last place (ulp) 的計算方式

這個議題分類在 精確的算術運算 章節。

  • 複習 : IEEE 754 規定運算中的數值會多保留兩個額外的位元
    一個叫 G (保護位元),一個叫 R (捨入位元)

  • 捨入時的精準度測量,有個單位叫做 "Unit in the last place (ulp)"

我們來看看 100年交大資聯的題目吧

100年交大資聯

這題答案,你可以說是 A,也可以說是 AC。

先來計算一下, 2.85*10^4 + 5.16*10^6 = 5.1885*10^6
題目要求只取到 3 位,此時的 G = 8, R = 5
如果考慮有 GR 的進位,那答案就會是 5.19*10^6,也就是 A 選項;
如果不考慮 GR 的進位,那答案就會是 5.18*10^6,故 B 選項錯誤。

那 ulp 呢 ?
如果用比較簡單的方式來看,不考慮 GR 也就是捨棄兩位,故 ulp = 2。

不過有趣的是,那時交大給的答案是 AC,也就是 C 是正確的,那,0.15 是怎麼算出來的 ?

從誤差的角度來看,算一個 ulp 的誤差是以給定的有效位元數+標準化之後的結果取最後一個位元為單位

這題考慮 GR 的答案是 5.19*10^6,
有效位元是 3,取最後一位為單位,所以1 ulp 是 0.01*10^6
若題目問的是 GR 前後的誤差值,把 GR 前後的值相減,
再除以單位 ulp 就知道是相對上多少的 ulp 了。

算式 : ( 5.19*10^6 - 5.1885*10^6 ) / 0.01*10^6 = 0.0015/0.01 = 0.15
也就是為何要選 C 的原因了。


End
-----------------------------------

2019.11.04