【发布时间】:2014-06-25 18:29:59
【问题描述】:
我是一名数值物理学家,我在我的社区中看到了一些模拟代码,它们使用中心在 [0.5, 0.5, 0.5] 和标准化长度为 1 的 3D 模拟框(因此框坐标来自 @987654324 @ 到 1.)。在这个盒子里进行了大量的物理计算,通常需要尽可能高的精度。
我认为做这样的事情可以被视为缺陷,但我希望得到确认。我倾向于认为这是一个缺陷,因为我们在0. 附近有更多的数值精度,所以整个盒子的数值精度并没有很好地平衡。
为了有一个很好的平衡,我认为这样的盒子:
- 如果想要围绕框的中心获得对称精度,则应以
0.为中心(从-0.5到0.5) - 如果想在整个框中获得准同质精度,则应以
1.5为中心(从1.到2.)
我是正确的还是完全错误的?
【问题讨论】:
-
如果域是这样有界的,不动点算法可能更合适。在 FP 中使用 [1.0-2.0] 域将仅使用 32 位中的 23 位,或 64 位中的 53 位(假设 IEEE754)。
-
我同意定点。如果这是使用 32 位或 64 位整数来完成的,那么它的性能可能也会更高。并且精度在整个范围内都是一致的。
标签: c++ floating-point precision floating-accuracy numerical-methods