2015-10-23 25 views
0

我想更好地理解浮點運算。我知道機器epsilon(e)被定義爲1和下一個最大數字之間的差值(即1之後的下一個最大數字,可以在浮點中精確表示爲1 + e)。然而,當我乘(1 + e)*(1 + e)時,我會得到什麼浮點數?理論上它應該是1 + 2 * e + e^2,但是(假設e^2 < e,所以e^2將不是完全準確的。這個答案是以浮點形式回答的?機器epsilon乘法

+0
+0

@ user2357112那麼爲什麼'1 + 2 * e + e^2'不能代表? – bnorm

+0

準確地表示它會比所討論的浮點格式需要更多的精度。相反,'e^2'只需要一點精度。 – user2357112

回答

1

正如註釋eps^2中所述,在任何浮點系統中都可以正確表示。但是當添加到> = 1時,它會簡單地截斷。沒有足夠的精度來包含它,而「1.0」這個詞表示指數。因此 -

(1.0 + eps)^2 -> 1.0 + 2*eps 

您需要在硬件上進行驗證。我已經學會了難以實現的方式,即浮點硬件並不總是表現得如人們所期望的那樣,而且我看到高級數字軟件執行初始化代碼不僅可以估計可用eps(不一定是定義的浮點系統),還可以攜帶爲了提供正確的結果,該算法需要對eps行爲進行驗證。

專業人員從來沒有把任何事情視爲理所當然。有時fp硬件執行不正確。有時fp系統有奇怪的邊界條件行爲。信任但驗證將是我的建議。