任何人都可以解釋最低精度的ULP單位嗎? 我有以下定義,但仍不明確最低精度的ULP單位
「表示分數時的誤差大小與所存儲數量的大小成正比ULP或最小精度單位定義了您可以獲得的最大誤差當存儲一個數字時,存儲的數字越大,ULP越大。「
這是什麼意思? 在此先感謝
任何人都可以解釋最低精度的ULP單位嗎? 我有以下定義,但仍不明確最低精度的ULP單位
「表示分數時的誤差大小與所存儲數量的大小成正比ULP或最小精度單位定義了您可以獲得的最大誤差當存儲一個數字時,存儲的數字越大,ULP越大。「
這是什麼意思? 在此先感謝
每個浮點數表示實數的區間。該間隔相對於其浮點數(解釋爲二元分數)的方式取決於舍入模式。該誤差與間隔中的任何實數與浮點數的最大距離有關。
所以最安全的答案是到任何一方下一個浮點數的距離。如果舍入模式是通常舍入到最接近的浮點數,則最大錯誤是其一半。
在浮點格式,數字被表示帶符號小號,一個有效數(也稱爲分數)˚F,和一個指數ë。例如,具有二進制浮點,該值由小號,˚F,和ë是(-1)小號•˚F•2 ë
表示f被限制爲一定數量的數字,並且在二進制中通常要求至少一個且少於兩個。數字中可以做出的最小變化(在下面討論的某些例外情況下)是將最後一位數字f修改爲1.例如,如果f限制爲六個二進制數字,則其值爲1.00000到1.11111,可以做的最小變化是0.00001。給定指數e,則0.00001中的變化0.00001改變由0.00001·2 e表示的值。這是最低精度單位(ULP)
請注意,ULP根據指數而變化。
我提到的例外發生在最大的可表示的有限值(其中數字只能通過產生無窮大來增加),最小的(最負的)可表示的有限值,零和低於正常的數字與分數和指數)以及指數變化的邊界。在這些邊界處,您正在減小指數,這意味着最低有效位的數值減少,所以該步驟實際上是舊的ULP的1/2。
當計算僅受浮點系統可以表示的數字限制時,則結果中的最大錯誤爲ULP的1/2。這是因爲,如果您的數學精確結果超過ULP的1/2,則可以將計算結果更改爲1 ULP,以使其誤差在幅度上減小。 (例如,如果確切的結果是3。75,從3更改爲4將誤差從0.75更改爲0.25)
基本算術運算(如加法,乘法和除法)應提供四捨五入到最接近的可表示結果的結果,最多隻有一個ULP。平方根也應該這樣實施。數學庫函數(如餘弦和對數)的目標是提供良好的舍入,但很難得到正確的舍入,所以商業圖書館通常不能保證正確舍入。從十進制
換算(例如,在ASCII文本)到內部浮點格式應該被正確的舍入,而不是全部的軟件庫或語言實現正確地做到這一點。
複合操作(例如執行許多計算以獲得結果的子例程)將具有許多舍入誤差,並且通常不會返回在數學上精確結果的ULP範圍內的結果。
請注意,這不是技術上是正確的零碎時說,誤差的大小正比於存儲的號碼的大小。在錯誤的勢必大致比例,我們可以說½ULP是一個綁定上的錯誤,以及ULP大致是成正比的數量。它只是大致成比例,因爲它的變化因數爲2(當使用二進制時),因爲分數範圍從1到2。例如,1和1.9375具有相同的ULP,因爲它們使用相同的指數,但ULP比1的1.9375更大。
,只有在錯誤的邊界大致成正比。實際的錯誤取決於涉及的數字。例如,如果我們加1和1,我們得到2沒有錯誤。
在IEEE 754,浮點數據表示恰好一個實數。它們不代表間隔。所表示的值在第3.3節中規定。 –
我沒有說它實現區間算術。但是你稱之爲arctan(1)'或'sqrt(2)'是浮點數的過程是什麼? – LutzL
舍入。理想情況下,通過'arctan'或其他初等函數返回的值是根據規則和適用的舍入模式(通常到最接近的值的方向取整的確切數學結果到最接近的表示數,朝向偶數關係的結果低位,但其他模式包括向+無窮大舍入,向無窮大舍入,向零舍入)。 'sqrt'可以很容易地用這個屬性來實現。但是,在實踐中,大多數數學庫不會使用此屬性實現'arctan'和其他函數。 –