-1

在向量长度/距离运算中使用平方根然后与某个值进行比较是否更快,或者将比较的值平方然后不使用平方根是否更快?所以基本上在伪代码中,是这样的:

sqrt(x * x + y * y) > a 

比这个更快:

x * x + y * y > a * a 
4

1 回答 1

3

我正在展示这段代码,让你知道平方根函数有多大

即使我们使用了一个内置函数,它也必须经过这些过程。

正如你现在所看到的,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);
}
于 2020-09-08T13:40:28.833 回答