我正在尝试实现区间算术的三角函数,最好是< ulp
误差,这需要手动精确计算三角函数。第一步通常是论点减少,但我不确定论点减少通常是如何实现的。例如,使用Python,我得到以下结果:
>>> import math
>>> math.sin(1e100)
-0.3806377310050287
我期望它做的是应用模2 * math.pi
,但这给了我一个不同的结果:
>>> math.sin(1e100 % (2 * math.pi))
0.6806339877607344
>>> math.sin(math.remainder(1e100, 2 * math.pi))
0.6806339877607344
三角函数的参数约简是如何完成的?
这似乎是大多数实现简单地使用高精度pi
的情况。当然也存在其他策略,但它们都归结为以某种方式使用大量的精确度。一旦你有了一个非常精确的pi
值,你可以简单地取x % (2 * pi)
并以此为基础进行计算。