【发布时间】:2014-10-30 19:35:06
【问题描述】:
我想知道如果可以访问硬件中的浮点平方根单元,是否有任何算法可以加速浮点除法?
如果有,那些算法是什么?
【问题讨论】:
-
如果您有硬件
log可能会有所帮助,但很难看出硬件sqrt对除法有何帮助。 -
这可能是数学上最好的想法——即,你能想出一种方法来表达
A/B的平方根A和/或B吗? -
@starbox:不管你有没有硬件平方根,减法和逆乘法可能会更快。想想“6 / 3”所需的步骤。当您的代码设置和调用硬件平方根设备时,我的代码执行所需的减法并首先完成。
-
@ThomasMatthews:您会对整数和浮点除法之间的差异感到惊讶。对于 FP,可以在除尾数的同时减去指数。并且除尾数实际上更容易,因为它们都是 24 位,并设置了第一位。
-
@starbox 如果它是
sqr单位而不是sqrt那么你可以使用这个stackoverflow.com/a/18398246/2521214 用于sqrt 可能存在一些近似除法的疯狂数学系列,但通常使用更复杂的单位完成更简单的任务是浪费时间和精力,也没有提到让它工作所需的门......嘿,现在我知道这是你的问题:)
标签: c++ c algorithm math floating-point