什么是Java库' Math.tan(x)的源文件算法?

时间:2016-12-07 20:27:46

标签: java algorithm math

我一直在寻找tan(x)的Java Math库源代码。 它不在我的JDK 1.8_60文件夹中。

我现在问这里,因为我对Math.tan(x)方法中使用的算法/系列感到好奇。

使用MacLaurin系列进行tan(x)需要很多奇怪的术语才能获得高达60度的精确度。使用MacLaurin系列'对于Sin(x)和Cos(x),然后在接近90度时划分精度。

2 个答案:

答案 0 :(得分:1)

Math.tan()只需调用StrictMath.tan(),这是原生方法。

Java的源代码可以在http://hg.openjdk.java.net/

找到

答案 1 :(得分:1)

通常,实现会使用像

这样的三角标识将参数减少到零
tan(a+b)= ( tan(a)+tan(b) ) / (1-tan(a)*tan(b) )

b=45°给出

tan(a+45°) = ( 1+tan(a) ) / ( 1-tan(a) )

如果将切线值硬编码为30°或15°,则可以通过这种方式进一步减少。

也可以将此身份用于半角关系,

tan(a) = 2*tan(a/2) / ( 1-tan(a/2)^2 )

也允许减小角度。

首先限制为[-45°,45°]然后3个角度减半,将达到[-6°,6°]范围,其中较低度泰勒多项式将给出足够好的近似值。