我刚读过this topic(特别是最后的评论)。
然后我想知道,为什么我们真的需要这是给剩下的。但似乎并没有很多人在谷歌和#34;之前对此感兴趣...
答案 0 :(得分:6)
如果你正在寻找你想要它的原因,那就是所谓的"范围减少"
让我们假设您希望sind
函数以度为单位计算参数的正弦值。一个天真的方法是
sind(x) = sin(x*pi/180)
但pi
这里不是真正的无理数pi
,而是最接近pi
的浮点数。这会导致像sind(180) == 1.2246467991473532e-16
这样的问题,以及像this和this这样的问题(还有很多甚至更多)。
但正弦是一个周期函数,所以如果我们计算
remainder(x,90.0)
我们在间隔[-45,45]上得到一个值。请注意,0,90,180,270等正好为0,乘以pi/180
仍为0.因此,如果采用经过适当签名的sin
或cos
,我们可以得到确切的结果。得出这些值(如果你做了一些基本的错误分析,你可以证明它也减少了其他值的错误。)
两个跟进点:
sin
或cos
?那就是remquo
的用途。sind(30.0) == 0.5
。有办法解决这个问题,例如:看看Julia library does。