And*_*zos 3 c c++ floating-point c99 c++11
这个std::remquo功能的目的是什么?什么时候使用它而不是常规std::remainder函数?
remquo 在使用C++之前首先出现在C99中,这是C99基本原理所说的:
remquo函数用于实现参数减少,这可以利用商的一些低阶位.注意,x的幅度可能相对于y太大,以至于商的精确表示是不实际的.
假设我正在实现一个正弦函数.实现正弦的典型方法是设计一些多项式s,使得s(x)近似x的正弦,但多项式仅适用于-π/ 4 <= x <=π/ 4.在该间隔之外,多项式偏离正弦(x)并且是不正确的近似.(在更大的区间内使多项式更好需要具有更多项的多项式,并且在某些时候,多项式变得大于有用的.)通常,我们还将设计多项式c,使得c(x)近似于余弦x,在类似的时间间隔内.
remquo函数帮助我们使用这些多项式来实现正弦.我们可以使用"r = remquo(x,pi/2,q)"并使用q来确定圆x的哪个部分.(注意,正弦是周期性的,周期为2π,所以我们只需要知道低的几个商的位数.较高的位表示x已绕过圆圈并重复正弦值.)根据圆x的哪个部分,例程将返回s(r), - s(r),c (r),或-c(r)表示x的正弦.
当然有装饰,但这是基本的想法.它仅适用于小的x值,不超过2π的几倍.这是因为每次x加倍时,除数的另一位移动到精确结果的计算中.但是,我们不能将π/ 2完全传递给remquo,因为double类型的精度是有限的.因此,随着x的增长,错误会增加.