gpt4 book ai didi

java - 三角函数应该被缓存吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:13:54 25 4
gpt4 key购买 nike

Math.sin()Math.cos() 等函数有多广泛?如果您连续多次使用相同的参数调用该方法,编译器是否会优化代码?如果不是,您应该在调用多少次这些方法时开始将结果缓存到变量中?

最佳答案

三角函数通常作为泰勒展开来实现。他们很快。您可以自己编写并进行比较。

public class Main{
private static double factorial(double n) {
if (n <= 1) // base case
return 1;
else
return n * factorial(n - 1);
}
private static double sin(int n) {
int PRECISION = 10;
double rad = n*1./180.*Math.PI;
double sum = rad;
for (int i = 1; i <= PRECISION; i++) {
if (i % 2 == 0)
sum += Math.pow(rad, 2*i+1) / factorial(2 * i + 1);
else
sum -= Math.pow(rad, 2*i+1) / factorial(2 * i + 1);
}
return sum;
}

public static void main(String []args){
System.out.println(sin(180));
System.out.println(Math.sin(Math.PI));

System.out.println(sin(90));
System.out.println(Math.sin(Math.PI/2));

System.out.println(sin(200));
System.out.println(Math.sin(200*2*Math.PI/360));
}
}

您当然可以缓存这些值,但这些方法可能已经过优化。

关于java - 三角函数应该被缓存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39439271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com