I想知道为什么C/C ++中有SQRT()函数,因为我们可以使用相同的方法 POW(X,0.5); POW(X,0.5)的SQRT(X)有何不同。是否有具有SQRT函数的特定原因?

问题描述 投票:0回答:3

对于

sqrt(x)
的不同。是否有具有SQRT函数的特定原因?

我进行了一次测试,以检查
pow(x,0.5)

sqrt(x)
c++ c sqrt
3个回答
19
投票
的性能

1.

pow(x,0.5)
2

for(int i=0;i<100000000;i++) pow(double(i),0.5);

第1秒大约花了20秒钟,第二个在我的计算机上花了大约2秒钟。因此性能更好。由于其他已经提到的可读性是其他原因。

我记得在某个地方阅读SQRT()是一种特殊情况,可以正确地将IEEE规范保证。我会寻找一个来源。它也应该更快一点,因为它只需要处理一个案例。

即使它们是一样的,很高兴有一个常用功能的内置别名!

Edit:根据IEEE-754,POW()函数和SQRT()均应实现,以使圆形值是最接近的浮点表示,距离实际值。但是,sqrt()仍然应该更快。
    

,如果您只会想到数学等价...

6
投票
但就计算结果的算法而言,

for(int i=0;i<100000000;i++) sqrt(double(i));

是特定于一件事的,而

sqrt

是通用的。

因此,您可以(正确地)假设可以为

pow

5
投票
sqrt

函数。

© www.soinside.com 2019 - 2024. All rights reserved.