gpt4 book ai didi

c++ - 指数为整数时pow(x,p)更快吗?

转载 作者:行者123 更新时间:2023-12-01 15:03:47 29 4
gpt4 key购买 nike

在使用pow(double x, double p)的代码中(大多数情况下为p = 2.0),我观察到,使用p = 2.0时,我的代码执行速度显然比使用p = 2.000000001时要快。我得出的结论是,在我的编译器(gcc 4.8.5)上,pow的实现在运行时检测到它是正方形。

根据这一观察,我得出结论,当我知道p为2时,不需要特定的实现。但是我的代码必须是跨平台的,那么我的问题是:

在大多数c++ 03编译器中,当指数是整数时,是否对pow进行了优化?

在我当前的上下文中,“大多数编译器” =“gcc> = 4.8,使用msvc的intel,unix上的intel”

最佳答案

是的,如果检测到指数是自然数,则标准库会尝试进行运行时优化。查看当前版本的POW的glibc i386版本,您可以找到以下代码。

    /* First see whether `y' is a natural number.  In this case we
can use a more precise algorithm. */
fld %st // y : y : x
fistpll (%esp) // y : x
fildll (%esp) // int(y) : y : x
fucomp %st(1) // y : x
fnstsw
sahf
jne 3f

嵌入执行中。完整代码可在 github中找到。

请注意,对于其他版本的glibc和其他体系结构,答案 可能与不同。

关于c++ - 指数为整数时pow(x,p)更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61358988/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com