我想知道在0和Math.PI * 2之间夹住传递给三角函数的角度是否有什么好处?我有一个函数,它大量使用了三角函数,项目中的某个人将这个添加到了乞讨中:
angle %= Math.PI * 2;这样做有什么好处吗?如果传递的角度在这些值之间,三角函数会更快吗?如果是这样,他们不是应该自己夹住它吗?是否有任何其他情况下应夹紧等同角度?
该语言是JavaScript,最有可能在V8和SpiderMonkey上运行。
发布于 2011-09-07 23:16:47
由于大多数(芯片上)计算三角函数的算法使用CORDIC的一些变体,我打赌这些值无论如何都会在trig函数调用的入口点被钳制在[0,Pi/2]内。
也就是说,如果你有办法在整个算法中保持角度接近于零,那么这样做可能是明智的。实际上,sin( 10^42 )的值几乎没有定义,因为10^42范围内的粒度大约是10^25。
这意味着,例如,如果您要添加角度,并且通过这样做,它们可能会变得很大,那么您应该考虑定期夹紧它们。但是没有必要在三角函数调用之前将它们夹住。
发布于 2014-06-08 02:15:52
将角度限制在- pi /4到pi/4 (根据需要使用正弦或余弦)范围内的优点是,可以确保如果使用pi的某个近似值计算角度,则会使用相同的近似值执行范围缩减。这样的方法有两个好处:它将提高像180度的正弦或90度的余弦这样的东西的精度,并且它将避免让数学库浪费计算周期,以努力通过与计算角度时使用的pi不匹配的pi来执行超精确的范围缩减。
例如,考虑2⁴⁸* pi的正弦。π的最佳double近似值是884279719003555,乘以2^48,这也是2⁴⁸π的最佳双近似值。2⁴⁸π的实际值是884279719003555.03447074。Mod-通过pi的最佳双重逼近将前一个值减去最佳双重逼近,将产生零,其正弦等于2⁴⁸π的正确正弦。Mod-通过π减小由pi的最佳近似放大的值将产生-0.03447074,其正弦值为-0.03446278。
https://stackoverflow.com/questions/7336243
复制相似问题