我正在实施D. E. Knuth的计算机编程艺术第2卷第4.3.2节的算法D.
在步骤D3中,我应该计算q = floor(u[j+n]*BASE+u[j+n-1] / v[n-1])
和r = u[j+n]*BASE+u[j+n-1] mod v[n-1]
。这里,u
(被除数)和v
(除数)分别是长度为m+n
和n
的单精度*数组。 BASE
是表示基,对于32或64位的二进制计算机,分别等于2 ^ 32或2 ^ 64。
我的问题是q
和r
的精确度。据我了解算法的其余部分,它们应该是单精度*,但很容易发现许多情况,它们必须是双精度*以适应结果。
这些值应如何计算?精确度如何?
*
表达式单/双精度是指整数运算,而不是浮点运算。
答案 0 :(得分:1)
当除数被归一化(最高位设置)时,商总是适合单个单词。利用两个基本表示的幂,通过廉价的左移操作实现归一化。