std::remquo的目的和用法
std::remquo purpose and usage?
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 的量级可能太大,以至于商的精确表示是不切实际的。
相关文章:
- 如何找到"using namespace std"的违规用法?
- std::condition_variable 在 QThread::run() 中的用法
- std::conditional - 嵌套用法
- 我不理解 std::result_of 和 decltype 的这些用法
- std::forward 在参数传递中的用法是什么?
- std::decimal::decial64正确用法,g++4.6.3
- std::move()用法错误
- std::future的错误用法
- std::forward与std::move的用法
- std::vector<decltype(iter)>-decltype的有效用法
- std::map 的线程安全用法
- 继承自 std::函数、语法和用法
- std::remquo的目的和用法
- std::线程管理:用法和最佳实践
- 对"std::istreambuf_iterator"的用法感到困惑
- std::initializer_list的泛型类型用法
- 条件与 std::atomic <T>的基本用法
- 修改SFINAE习惯用法,使用std::is_athmetic检查函数的返回类型
- 派生类与基类的std::shared_ptr的用法
- 从 std::unique 返回的迭代器的用法