【问题标题】:How to detect mantissa precision overflow in GMP, before or after it happens?如何在 GMP 发生之前或之后检测尾数精度溢出?
【发布时间】:2009-01-23 12:00:27
【问题描述】:

打算问的问题与尾数有关,而不是exponent,并且与我在本周早些时候提出的有关"missing" digits on the sum of two negative floats.的问题有很大关系

鉴于尾数具有可变精度,如何判断是否已溢出尾数的当前精度设置?或者,从主动方面来说,如何判断尾数精度是否可能溢出?

亲切的问候, 布鲁斯。

【问题讨论】:

    标签: c overflow detection gmp


    【解决方案1】:

    有一些数值方法可以判断您是否会失去精度,但最重要的是您需要更好地理解精度的定义。

    -4939600281397002.2812

    -4939600281397002.2812000000000000

    不是同一个数字。

    添加时

    -2234.6016114467412141

    -4939600281397002.2812

    一起,正确输出将只有 20 位精度,因为较小数字中的额外 12 位数字毫无意义,因为较大数字中的 12 个类似大小的数字是未知的。您可以暗示它们为零,但如果是这种情况,那么您必须明确声明它们为零,并使用可以处理它的编号系统 - 计算机不善于理解隐含意图。

    至于检测何时会遇到此问题,您需要做的就是找出它们是否具有相同的指数(假设归一化尾数 +/- 1 或类似的二进制等效项)。如果它们没有被标准化,那么您需要对它们进行标准化以进行比较,或者使用稍微复杂的指数比较。

    精度和准确度不是一回事...

    -亚当

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多