在向量长度/距离运算中使用平方根然后与某个值进行比较是否更快?或者对比较的值进行平方然后不使用平方根是否更快?所以基本上用伪代码是这样的:
sqrt(x * x + y * y) > a
然后更快:
x * x + y * y > a * a
答案 0 :(得分:2)
我正在显示此代码,以让您知道平方根函数的大小
即使我们使用了内置功能,也必须经过这些过程
正如您现在所看到的,sqrt是具有乘法,除法和加法的循环函数的结果
因此,如果您执行x * x + y * y > a * a
,它将只比sqrt方法花费更少的时间,对此我可以证实。
sqrt(int n)
{
float temp, sqrt;
// store the half of the given number e.g from 256 => 128
sqrt = n / 2;
temp = 0;
// Iterate until sqrt is different of temp, that is updated on the loop
while(sqrt != temp){
// initially 0, is updated with the initial value of 128
// (on second iteration = 65)
// and so on
temp = sqrt;
// Then, replace values (256 / 128 + 128 ) / 2 = 65
// (on second iteration 34.46923076923077)
// and so on
sqrt = ( n/temp + temp) / 2;
}
printf("The square root of '%d' is '%f'", n, sqrt);
}