最近,我一直在研究berkeley-hardfloat(https://github.com/ucb-bar/berkeley-hardfloat/blob/master/src/main/scala/DivSqrtRecF64_mulAddZ31.scala)的代码。我已经绘制了DivSqrtRecF64ToRaw_mulAddZ31的时序图,但是我无法理解它的算法,尤其是用乘法和加法代替除法的原理(第439-711行)。谁可以向我详细解释?
答案 0 :(得分:0)
查看同级文件DivSqrtRecFN_small.scala
,它包含正在发生的事情的公式,并且看来两者的方法是相同的。
对于高速除法或平方根的另一种方法,您可以搜索例如Goldschmidt除法-它是在AMD x86 CPU中实现的。