【发布时间】:2012-06-29 15:56:06
【问题描述】:
谁能推荐任何包含维护各种浮点运算稳定性的策略的 C++ 库/例程/包?
示例:假设您想在单位间隔 (0,1) 内对一百万个long double 的向量/数组求和,并且每个数字的数量级大致相同。天真地求和 for (int i=0;i<1000000;++i) sum += array[i]; 是不可靠的 - 对于足够大的 i,sum 将比 array[i] 大得多,因此 sum += array[i] 将等效于 sum += 0.00。
(注意:这个例子的解决方案是二元求和策略。)
我处理数千/数百万个微小概率的总和和乘积。我正在使用具有 2048 位有效位的任意精度库 MPFRC++,但同样的问题仍然适用。
我主要关心:
- 精确求和多个数字的策略(例如上面的示例)。
- 什么时候乘法和除法可能不稳定? (如果我想对大量数字进行归一化,我的归一化常数应该是多少?最小值?最大值?中位数?)
【问题讨论】:
标签: c++ math floating-accuracy stability numerical-stability