[英]Is there a bug in Algorithm 4.3.1D of Knuth's TAOCP?
您可以找到算法 4.3.1D 的解释,它出现在计算机编程艺术卷。 2 (第 272-273 页)由 D. Knuth 在此问题的附录中提供。
看起来,在步骤D.6 中, qhat
预计最多关闭 1。
让我们假设基数是2^32
(即我们正在使用无符号 32 位数字)。 让u = [238157824, 2354839552, 2143027200, 0]
和v = [3321757696, 2254962688]
。 此分部的预期输出为4081766756
链接
u
和v
都已经按照D.1 中的描述进行了归一化( v[1] > b / 2
并且u
是零填充的)。
循环D.3到D.7 的第一次迭代是无操作的,因为在第一次迭代中qhat = floor((0 * b + 2143027200) / (2254962688)) = 0
。
在循环的第二次迭代中, qhat = floor((2143027200 * b + 2354839552) / (2254962688)) = 4081766758
Link 。
我们不需要计算步骤D.4和D.5来了解为什么这是一个问题。 由于在D.6 中qhat
会减一,因此算法的结果将是4081766758 - 1 = 4081766757
,但是,结果应该是4081766756
Link 。
我认为算法中存在错误是否正确,或者我的推理是否存在谬误?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.