std::remquo的目的和用法

std::remquo purpose and usage?

本文关键字:用法 std remquo      更新时间:2023-10-16

std::remquo函数的目的是什么? 何时使用它而不是常规std::remainder功能的示例是什么?

假设我正在实现一个正弦函数。实现正弦的一个典型方法是设计一些多项式 s,使 s(x) 近似于 x 的正弦,但多项式仅适用于 -π/4 <= x <= π/4。在该区间之外,多项式偏离正弦(x),是一个糟糕的近似值。(使多项式在较大的区间内变好需要具有更多项的多项式,并且在某些时候,多项式变得大于有用值。通常,我们还会设计一个多项式 c,使得 c(x) 在类似的区间内近似 x 的余弦。

remquo 函数帮助我们使用这些多项式来实现正弦。我们可以使用 "r = remquo(x, pi/2, &q)" 并使用 q 来确定圆圈 x 的哪一部分。(请注意,正弦是周期为 2π 的周期,因此我们只需要知道商的低位。较高的位仅表示 x 已环绕圆圈并重复正弦值。根据圆圈 x 所在的哪个部分,例程将返回 x(的正弦值的

s(r)、-s(r)、c(r) 或 -c(r)。

当然,有装饰,但这是基本思想。它仅适用于小于 x 的值,不超过 2π 的几个倍数。这是因为每次 x 加倍时,除数的另一位就会进入精确结果的计算中。但是,我们不能将 π/2 精确地传递给 remquo,因为双精度类型的精度是有限的。因此,随着 x 的增长,误差也会增加。

remquo在C++之前首次出现在C99中,以下是C99的基本原理:

remquo 函数旨在实现参数缩减,这些参数缩减可以利用商的几个低阶位。请注意,x 相对于 y 的量级可能太大,以至于商的精确表示是不切实际的。