【问题标题】:Units in the last place definition末位单位定义
【发布时间】:2018-10-24 03:59:08
【问题描述】:

我正在阅读什么Every Computer Scientist Should Know About Floating Point

ulps 的概念似乎很简单。然而,在一个早期的例子中,作者提出了一个声明(在 Guard Digits 部分)

即,当比较计算值时:(0.02 x 10) 与计算 (10.1 - 9.93) 的真实值 (0.17) strong>,误差为 30ulps

根据论文前面给出的公式,错误应该是:

|0.02 - 0.017| * 100 = 0.3ulps,这对我来说很有意义。

显然,我在这里遗漏了一些相当重要的东西。

【问题讨论】:

    标签: floating-point


    【解决方案1】:

    有 2 位数字并不意味着 1 ulp 是 0.01。该单位的全部意义在于它与特定数字的精度有关。 0.02 是 2.00 * 10-2; 0.017 是 1.70 * 10-2; 1.70 和 2.00 之间有 30 个步骤

    Err = | 2.00 - 1.70 | (10²)
        = 30 ulps
    

    (由于这两个结果恰好具有相同的指数,因此我们可以避免确定哪个“定义”ulp 的困难,但我们没有在 10.1 或 9.93 中定义它。)

    【讨论】:

      【解决方案2】:

      在说明减法时,Goldberg 将结果显示为 0.02 × 101。这将保留在输入和减法中使用的指数。但是,它不是结果的归一化指数。

      在示例中,精度 p 为 3 位。因此,计算结果 .02 × 101 可以表示为 2.00 × 10-1,精确的数学结果将是 1.70 × 10-1。这两种表示的 ULP 均为 0.01 × 10-1,计算结果与数学结果相差 30 ULP。

      【讨论】:

      • 啊——我真傻。出于科学背景,在结果中增加准确性的想法从未出现过。我想这是 FP 危险的一部分。感谢您的答复;很清楚。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多