我想用除數D除分子N的兩個數字。 我使用牛頓 - 拉夫遜方法,它使用牛頓法找到D(1/D)。然後分子的結果可以通過分子N乘以倒數1/D得到N/D。Newton's找到除法的浮點數的倒數的方法
牛頓 - 拉夫遜算法可以找到here
所以該算法的第一步是啓動與1/d我們稱之爲X_0的初始猜測。
X_0被定義爲X_0 = 48/17-39/17 * d
但是,我們必須首先應用一比特移位到除數d比例它使得0.5≤d≤1相同的應對分子N應用位移,以使商不變。
然後,我們發現X_第(i + 1)使用公式X_第(i + 1)= X_I *(2-d * X_I)
由於兩個分子N,除數d,和結果都浮點IEEE-754 32位格式,我想知道如何正確應用這種縮放,因爲我的1/D值不收斂到一個值,它只是接近-Inf或+ Inf(取決於D)。
我發現的作品雖然是,如果我使X_0小於1/D,算法似乎總是收斂。所以,如果我只是使用查找表,我總是存儲一堆1/D的值,並且我可以始終確保在D> Dmin時存儲1/D值,那麼我應該沒問題。但那是標準做法嗎?