NoM*_*ots 6 algorithm math floating-point exponent
我有一个应用程序,需要将一个数字提高到一个分数幂.目标平台是一个FPGA,我可以得到它的FPU大小的估计,但我需要一个算法,只是为了可行性研究将数字提高到一个分数功率.我假设浮点数是最坏的情况,我预计在实践中我们将能够使用捷径,但是现在我想表明我们可以实施最坏情况.
以为我会问这里,看看是否有任何常见的方法可以结账.我知道有这样做的软件方法,我想要一个合理有效的算法开始.我会担心FPGA的实现.
您的输入范围是任意的,还是在一定范围内已知?
在任何一种情况下,x m = exp(m log x),所以如果你可以创建函数来计算exp(x)和log(x)并且有一个乘法,你可能都已经设置了.
您必须弄清楚如何处理x的非正值.
(提示log(x):如果这是IEEE-754浮点数,则根据需要移位有效数字,直到最终得到一个介于2 k和2 k + 1之间的数字值为某个值K.这可以让你处理一个2:1范围不太难以用多项式逼近.那么你只需要少量的方法来处理指数和移位数.
exp(x)的对应提示:写x = k + b其中0 <= b <1且k是整数.然后exp(x)= exp(k)*exp(b); b具有有限的范围,k具有有限数量的离散可能性.)
(提示#2:对于x m = g(mf(x)),数字可能更好,其中f(x)= log 2 x和g(x)= 2 x.)
正如Jason S所说,这是使用身份x m = exp(m log x)完成的.但实际上,您必须处理截断错误.我认为通常这样做的方式是