首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sqrt(x)和pow(x,0.5)之间的差异

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

Stack Overflow用户
提问于 2013-07-02 12:37:43
回答 3查看 15.7K关注 0票数 11

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

代码语言:javascript
复制
pow(x,0.5);

对于pow(x,0.5)sqrt(x)有什么不同。使用sqrt函数有什么特殊的原因吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-02 12:56:45

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

1.

代码语言:javascript
复制
for(int i=0;i<100000000;i++) 
    pow(double(i),0.5);

2.

代码语言:javascript
复制
for(int i=0;i<100000000;i++)
    sqrt(double(i));  

第一个花了大约20秒,而第二个在我的电脑上花了大约2秒。所以性能要好得多。正如其他人已经提到的,可读性是另一个原因。

票数 17
EN

Stack Overflow用户

发布于 2013-07-02 12:44:28

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

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

编辑:根据IEEE-754,应该实现pow()函数和sqrt(),以便四舍五入的值是最接近实际值的浮点表示。但是,sqrt()仍然应该更快。

票数 6
EN

Stack Overflow用户

发布于 2013-07-02 12:43:03

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

但就计算结果的算法而言,sqrt是特定于某一事物的,而pow是通用的。

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17417490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档