【问题标题】:remquo: argument reduction?remquo:论点减少?
【发布时间】:2012-06-17 23:05:10
【问题描述】:

在 C99 规范中它提到了 remquo:

remquo 函数旨在实现参数缩减,它可以利用商的一些低位。请注意,x 相对于 y 的大小可能非常大,以至于商的精确表示是不切实际的。

在这种情况下,什么是“参数缩减”,以及可以利用商的几个低位的例子是什么?

【问题讨论】:

  • 似乎与通过将参数“减少”到更小的范围并使用查找和插值来有效地计算超越函数有关。见thesetwo论文。

标签: c math floating-point numerical


【解决方案1】:

参数缩减意味着将周期函数的参数映射到规范周期(例如,(-π,π] 或类似)。如果使用 π/2 作为除数,商的​​低位就足够了用于确定触发函数的正确符号/等。

然而,不幸的是,remquo 对于实现标准的三角参数归约是无用的,因为π 是不合理的;以 π 的 近似值 为模减少大参数会得到没有有效位的结果,即所有错误。

但是,如果您正在编写定义为 sin(πx) 或类似函数的函数 f(x),则句点现在可以用浮点数精确表示,remquo 可以完全满足您的需求,而直接调用 sin(2*M_PI*x)x 很大时,将给出没有有效位(即所有错误)的结果。

【讨论】:

  • 明确地说,适当的 remquo 实现在给定参数的情况下返回准确的结果(没有错误)。它在减少三角函数参数中用途有限的原因是不可能将 π 的值更精确地传递给它,而不是它可以用双精度表示(或 remquol 的长双精度)。所以问题出在输入上,而不是函数计算上。
  • 确实,这不是函数工作方式的错误;这是接口中的一个基本限制,使其无法用于标准三角函数。
猜你喜欢
  • 2021-09-13
  • 2013-08-08
  • 2014-06-22
  • 2014-02-04
  • 2021-10-01
  • 2014-01-03
  • 2017-12-17
  • 2020-08-06
  • 1970-01-01
相关资源
最近更新 更多