0
對於哪個輸入是否減少到標識(模1的ulp)?在倒置時關閉雙值
public static double invertTwice(double value) {
double inverse = 1.0/value;
return 1.0/inverse;
}
此外,什麼是最大間隔爲[min, max]
該函數是單位(模1 ULP)?
倒數時,範圍[1E-320 ... 1E-310]中的值如何映射到+ Infinity? (它的後續反轉將導致0.0!)
動機:的一般關係
a/b == a * (1.0/b)
並不適用於所有雙對,即使b != 0.0
,例如a = 0.0
和b = 4.9E-324
。
這有正火的載體時,必須考慮到,例如
[0.0 b 0.0] * (1.0/b) == [NaN Infinity NaN]
但
[0.0/b b/b 0.0/b] == [0.0 1.0 0.0]
備註:我的問題是不是標準化的載體,但什麼我上面寫的。謝謝!
聽起來相似[這個問題](HTTPS://計算器。 COM /問題/ 44623331 /不-A-浮點倒數,總是往返/ 44626041#44626041)。 'invertTwice'函數是區間'[1.0,sqrt(2))'上的標識,並且可以避免使用任何2的冪來縮放該區間的結果,從而避免溢出和溢出。在'[sqrt(2),2.0)'上,它有點隨機,值接近'sqrt(2)'_usually_給出身份,接近'2.0'的值給出的概率約爲0.5。 –
感謝您的指針和部分答案。當[1e-323 ... 1e-310]範圍內的值在倒置時如何映射到無窮大? (我正在使用Java) – datahaki
由於最大可表示的IEEE 754雙精度浮點數大約爲1.8e308,因此對於小於5.56e-309的任何數據,其倒數大於最大可浮點浮點數,因此「無限」變爲無窮大。 –