Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ sqrt(x)和pow(x,0.5)之间的差异_C++_C_Sqrt - Fatal编程技术网

C++ sqrt(x)和pow(x,0.5)之间的差异

C++ sqrt(x)和pow(x,0.5)之间的差异,c++,c,sqrt,C++,C,Sqrt,我想知道为什么C/C++中有sqrt()函数,因为我们可以使用 pow(x,0.5); sqrt(x)与pow(x,0.5)有何不同。有sqrt函数的具体原因吗?当然,如果你只考虑数学等价性 但就计算结果的算法而言,sqrt只针对一件事,而pow是通用的 因此,您可以(正确地)假设为sqrt编写一个比编写通用pow函数更快的函数是可能的。我记得在某个地方读到过,sqrt()是IEEE规范保证正确舍入的特例。我会查一查,找到消息来源。它也应该快一点,因为它只需要处理一个案例 即使它们是相同的,对

我想知道为什么C/C++中有sqrt()函数,因为我们可以使用

pow(x,0.5);

sqrt(x)
pow(x,0.5)
有何不同。有sqrt函数的具体原因吗?

当然,如果你只考虑数学等价性

但就计算结果的算法而言,
sqrt
只针对一件事,而
pow
是通用的


因此,您可以(正确地)假设为
sqrt
编写一个比编写通用
pow
函数更快的函数是可能的。

我记得在某个地方读到过,sqrt()是IEEE规范保证正确舍入的特例。我会查一查,找到消息来源。它也应该快一点,因为它只需要处理一个案例

即使它们是相同的,对于一个常用函数有一个内置别名也是很好的


编辑:根据IEEE-754,pow()函数和sqrt()函数的实现应确保舍入值是最接近实际值的浮点表示形式。但是,sqrt()应该更快。

我为您运行了一个测试来检查
sqrt(x)
pow(x,0.5)

一,


for(int i=0;iI)不认为有什么特殊原因。因为平方根运算非常常见,
sqrt(x)
pow()相比提高了可读性
。有自行车的时候为什么会有自行车?当你可以在循环中添加时为什么会有乘法?为什么会被否决?这是一个合法的问题!!很高兴知道为什么sqrt在我的电脑上运行得更快。我得到了相反的结果…我实际上运行了三次测试来确定。我没有得到太多的变化。请检查再次确认..使用-O3和更高的优化,像您这样的基准测试将不会运行,因为实际上没有计算任何值…使用int main(){double tot;clock_t t1;tot=0.0;t1=clock();for(int i=0;ifor(int i=0;i<100000000;i++) pow(double(i),0.5);
for(int i=0;i<100000000;i++)
    sqrt(double(i));