繁体   English   中英

计算平方根时,IEEE-754正确的结果是什么?

[英]What is accepted as the IEEE-754 correct result when computing this square root?

我有一个Newton-Raphson平方根算法,用于计算输入值的单精度平方根。 但是,使用我输入的测试平台,我发现某些输入值未收敛到最接近实际平方根的答案。 当我说实际的平方根时,我的意思是您得到的结果将比32位IEEE-754更精确。 结果,我想知道在IEEE-754中执行平方根时,应该获得什么正确的值。 这个论坛上的一些人告诉我,最接近的值不一定是最正确的,这就是我要问的原因。

计算单精度IEEE-754 32位值0x3f7fffff的平方根时,什么被认为是正确的结果,为什么?

此外,计算0x7F7FFFFF的平方根时,什么是正确的结果?

0x3f7fffff1.0 - u ,其中u = 2**-24 sqrt(1 + x)的泰勒级数为:

sqrt(1 + x) = 1 + x/2 - x^2/8 + O(x^3)

如果将-u插入x ,则会得到:

sqrt(1 - u) = 1 - u/2 - u^2/8 - O(u^3)

1 - u/2是两个最接近的可表示浮点数1-u1之间的精确中间点; 由于泰勒级数的下一项为负,因此sqrt(1 - u)值仅小一点,因此结果四舍五入为1 - u

0x7f7fffff仅为2**128*(1-u) ,因此数学上精确的平方根为2**64*(1 - u/2 - u^2/8 - ...) 0x7f7fffff 2**64*(1 - u/2 - u^2/8 - ...) ,四舍五入为2**64 * (1-u) ,如上所述。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM