我正在努力更好地理解浮点算术。我知道机器ε(e)被定义为1和下一个最大数之间的差(即1之后可以用浮点精确表示的下一个最大数是1+e)。
然而,当我乘以(1+e) * (1+e)时,我在浮点中得到了什么?从理论上讲,它应该是1+ 2*e+ e^2,但(假设e<1) e^2
发布于 2015-12-06 12:47:14
正如注释中所指出的,eps^2在所讨论的任何浮点系统中都完全可以表示。但是,当添加到任何>= 1中时,它将简单地截断。没有足够的精度位来包含它,而"1.0“项固定了指数。因此-
(1.0 + eps)^2 -> 1.0 + 2*eps您需要在您的硬件上验证这一点。我已经学到了浮点硬件并不总是像人们期望的那样工作,我看到高级数值软件执行初始化代码,不仅是为了接近可用的eps (并不总是浮点系统定义的eps ),而且还对eps行为进行验证,算法依靠这些行为来提供正确的结果。
专业人士从不认为任何事情都是理所当然的。有时fp硬件实现不正确。有时fp系统具有奇怪的边界条件行为。信任但验证将是我的建议。
https://stackoverflow.com/questions/33294168
复制相似问题