gpt4 book ai didi

c - 优化 sqrt(n) - sqrt(n-1)

转载 作者:太空狗 更新时间:2023-10-29 17:09:13 29 4
gpt4 key购买 nike

这是我每秒调用多次的函数:

static inline double calculate_scale(double n) { //n may be int or double
return sqrt(n) - sqrt(n-1);
}

循环调用如下:

for(double i = 0; i < x; i++) {
double scale = calculate_scale(i);
...
}

而且速度很慢。优化此函数以获得尽可能准确的输出的最佳方法是什么?

参数n:从1开始,实际不限,主要用于1-10范围内的小数。它是整数(整数),但它可能同时是 intdouble,具体取决于哪个表现更好。

最佳答案

可以尝试用下面的近似代替

sqrt(n) - sqrt(n-1) == 
(sqrt(n) - sqrt(n-1)) * (sqrt(n) + sqrt(n-1)) / (sqrt(n) + sqrt(n-1)) ==
(n - (n + 1)) / (sqrt(n) + sqrt(n-1)) ==
1 / (sqrt(n) + sqrt(n-1))

对于足够大的 n,最后一个等式非常接近 1/(2 * sqrt(n))。所以你只需要调用一次sqrt。还值得注意的是,即使没有近似值,对于较大的 n,最后一个表达式在相对误差方面在数值上也更稳定。

关于c - 优化 sqrt(n) - sqrt(n-1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41986561/

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