【问题标题】:Is there a standard power function over IEEE 754 double precision numbers?IEEE 754 双精度数是否有标准幂函数?
【发布时间】:2014-07-25 16:09:32
【问题描述】:

大多数语言在其标准库中都带有一个幂函数。例如,在 C 中,“math.h”提供了

double pow(double a, double b);

我将假设几乎所有语言的结果都是近似的。也就是说:调用 pow 的结果不一定是最接近精确解的双精度数,也不是精确版本的四舍五入。我的这个假设基于这样一个事实,即这样做需要昂贵的区间算术。

1) 这个假设正确吗?

如果它确实是正确的,也许没关系。毕竟,也许最大误差在双打范围内是已知的……但也许这不是因为有很多双打可以测试。

2) 是已知 pow 函数相对误差的绝对(与参数无关)界限

如果不是……那么也许我们可以为了一致性而放弃准确性。即使结果是近似的并且界限不明确,也许至少我们可以确定该函数将始终在各种实现中为相同的输入返回相同的结果。也许还有一个标准近似的 pow 函数?

3) 任何语言中是否有一个标准的幂函数,它具有精确的语义并保证在不同的库版本或编译器版本之间保持一致?

编辑: 显然,(1)被称为“制表者的困境”http://www.cs.berkeley.edu/~wkahan/LOG10HAF.TXT

【问题讨论】:

    标签: floating-accuracy floating-point-precision


    【解决方案1】:

    不同的语言和框架对超越函数的准确性提供不同的保证,因为在许多平台上,产生接近正确结果的函数可能比保证结果在正确结果的 0.51LSB 以内的函数快得多, 一个只精确到 50 位的函数通常比一个需要两倍时间才能达到 52 位精度的函数更有用,特别是如果应用程序无论如何都要扔掉除前 15 位左右的所有位(常见在图形代码中)。

    还值得注意的是,某些语言对整数和浮点指数具有单独的幂函数。许多具有整数指数的幂函数可以毫无怨言地接受负基数,当指数为零时,有些函数会无条件返回 1,即使基数是 NaN 或 +/- Infinity,而接受浮点指数的幂函数通常会返回在后一种情况下为 NaN。

    【讨论】:

      猜你喜欢
      • 2021-10-06
      • 1970-01-01
      • 2014-05-28
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多