x86_64上的快速浮点功率为2

时间:2017-08-23 10:30:50

标签: c++ floating-point vectorization x86-64 pow

有一种快速的方法可以将2.0带到某个浮点x吗?我的意思是比pow(2.0, x)更快的东西,最好用AVX2很好地矢量化。

整数的对应部分是1<<n,但它仅适用于整数n

2 个答案:

答案 0 :(得分:10)

有一个标准std::exp2(double n)

  

计算2加注到给定的幂n

在特定环境中,exp2(x)可能不会比pow(2.0, x)快,但它比一般pow更具体。

答案 1 :(得分:2)

对于整数幂,您可以使用std::ldexp

 double x = std::ldexp(1.0, k); // 2 to the power of k

这比1<<k和铸造要好,因为它不会有中间溢出,也支持负面力量。