【问题标题】:Why do we need IEEE 754 remainder?为什么我们需要 IEEE 754 余数?
【发布时间】:2014-10-31 10:04:17
【问题描述】:

我刚刚阅读了this topic(尤其是最后的 cmets)。

然后我想知道,为什么我们实际上需要这个是为了提供剩余部分。但似乎,之前“在 google 上”的人对此感兴趣的人并不多……

【问题讨论】:

  • @MarkDickinson 这是什么意思?您可以将其添加为完整的答案吗?

标签: floating-point modulo ieee-754


【解决方案1】:

如果您正在寻找您想要它的原因,其中之一就是所谓的“范围缩小”

假设您需要 sind 函数来计算参数的正弦值(以度为单位)。一种天真的方法是

sind(x) = sin(x*pi/180) 

然而这里的pi不是真正的无理数pi,而是最接近pi的浮点数。这会导致诸如sind(180) == 1.2246467991473532e-16 之类的问题,以及诸如thisthis 之类的问题(还有很多很多)。

但是正弦是一个周期函数,所以如果我们计算

remainder(x,90.0)

我们在区间 [-45,45] 上得到一个值。请注意,0、90、180、270 等恰好变为 0,乘​​以 pi/180 仍然是 0。因此,采用适当签名的 sincos,我们可以得到这些值的确切结果(并且如果你做一些基本的错误分析,你可以证明它也减少了其他值的错误)。

两个跟进点:

  1. 如何确定使用哪个sincos?嗯,这就是 remquo 的用途。
  2. 不幸的是,由于中间舍入的变幻莫测,这仍然不会准确地给出sind(30.0) == 0.5。有办法解决这个问题,例如看看Julia library does 是什么。

【讨论】:

  • 所以粗略地总结一下:它在数学中用于获得更正确的无理数结果,对吧?感谢您的解释。我认为我对此还不够深入,无法完全理解它。还有一些东西要学。
  • 这是一个很好的例子,它让我点击它 - 任何周期性的“浮动”数量(如角度)。我知道模数的几十种应用(虽然主要是在整数上),但是尽管看到余数的对称性,我真的无法猜测这种强大的技术是干什么用的。非常感谢您的提问和回答。
  • 那么 N 的余数会产生 (-N/2, N/2) 的范围?
  • @AaronFranke 是的,但是区间是闭合的[-N/2, N/2]。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
  • 2019-06-09
  • 2016-11-06
  • 1970-01-01
  • 2014-06-18
  • 2017-02-26
  • 2011-04-03
相关资源
最近更新 更多