我试图使用汇编代码使用汇编代码计算x的浮点平方根,首先找到平方根(1 / sqrt(x)),然后乘以x找到sqrt(x) )。
然而,我正在阅读有关newton-raphson分区的维基百科页面,看起来根据你如何计算X_ {i + 1},你需要在中间步骤中有不同的精度。
来自Wikipedia:
从计算的角度来看,表达式X_ {i + 1} = X_i + X_i(1-DX_i)和X_ {i + 1} = X_i(2-DX_i)不相等。获得一个 当使用第二个时,结果具有n位的精度 表达式必须计算X_i和(2-DX_i)之间的乘积 加倍所需的精度(2n位)。相比之下的产品 在X_i和(1-DX_i)之间只需要以n的精度计算 位“。
所以,我有两个问题:
我不明白为什么必须用两倍所需的精度(2n位)来计算X_i和(2-DX_i)之间的乘积,以获得精度为n位的结果。有人可以解释一下原因吗?
Newton-Raphson Square Root是否有类似的东西?例如,我正在计算X_ {i + 1} = X_ {i}(3/2 - 1/2 N X_ {i} ^ 2),但这也可以计算为X_ {i} + X_ {i}( 1/2 - 1/2 N X_ {i} ^ 2)。一个表达式是否需要更高的中间精度,就像Newton-Raphson分部一样?是否有一种不同的格式我应该只需要n位精度来获得n位精度的结果?
我正在寻找一个错误< = 1 ulp
的结果