【发布时间】:2017-08-23 10:30:50
【问题描述】:
有没有一种快速的方法可以将2.0 提高到某个浮点数x?我的意思是比 pow(2.0, x) 更快的东西,最好是用 AVX2 很好地矢量化。
整数对应的是1<<n,但它仅适用于整数n。
【问题讨论】:
-
想一想,做
1<<n并投射到两倍怎么样。对不起,如果这听起来很愚蠢:-) -
我怀疑
2 powered to x在浮点中是否有更快的方法。整数版本利用它的存储方式来加速 pow(2,x) 我怀疑你是否会在浮点表示上获得这样的优势 -
@Malice,问题是
x不是整数,而是浮点数。 -
对于整数,这只是写指数项。小数部分需要到非指数部分的对数映射(或倒数)。但实际上,如果可能有较大的加速,x^y = 2^(lg x * y);因此,您可以希望的最大加速是消除一个以 2 为底的对数和一个乘法。你希望做 2 的多少次幂?百万?
-
了解 IEEE-754 您可以自己进行位操作...h-schmidt.net/FloatConverter/IEEE754.html
标签: c++ floating-point vectorization x86-64 pow