如何降低C / C ++浮点舍入(How to reduce C/C++ floating-poin

2019-09-22 14:40发布

是否有任何普遍适用的技巧来减少浮点舍入误差的C或C ++的积累? 我主要是想怎么写被编译成最佳汇编语言指令代码,虽然整体算法设计策略也欢迎。

Answer 1:

我所知道的唯一诀窍是,当你总结一串数字,不要做一次一个 - 它们分组,以便增加上大致相同大小的数字。 综上所述巨大例如随机数的阵列,通过对递归总结。



Answer 2:

数值分析是数学的整个领域,它不会降低到一些小技巧可以盲目申请。



Answer 3:

人们得到博士学位的写作这个东西,这样你就不会得到真正在这里固体的意见,只是提示。 一个尖端是避免减去在数值上非常接近号码; 放大所述噪声位的效果。



Answer 4:

您可以启用扩展FPU浮点精度,内部使用10个字节。 这就是我们使用。

http://www.website.masmforum.com/tutorials/fptute/fpuchap1.htm

您也可以号码,这样的操作是在类似规模的数字进行排序。



Answer 5:

有许多小事情可以做,比如在一个单一的表达做尽可能多的浮点运算越好,并确保所有输入操作转换成浮点格式。 当浮动之间的切换点和整数确保整数转换之前的0.5的因子添加到浮子以确保值被舍入为最接近的整数。 用双打或双打长将增加的精度量,从而减轻舍入/累积误差的意义。

将有舍入误差的一些量,所以你真的想要把他们过去,你要寻找的意义。 其中一个选择是使用扩展精度浮点软件库,如高精度运算库 。 使用图书馆有较高的精度在运行速度较慢的成本是有利的。



文章来源: How to reduce C/C++ floating-point roundoff