Tag: taylor series

对Goldschmidt部门进行良好的初步估计

我正在使用Goldschmidt部门在Q22.10中计算固定点倒数,用于ARM上的软件光栅化器。 这是通过将分子设置为1来完成的,即分子成为第一次迭代的标量。 说实话,我在这里盲目地遵循维基百科算法。 文章说,如果分母在半开范围内缩放(0.5,1.0),那么良好的初步估计可以仅基于分母:设F为估计标量,D为分母,则F = 2 – D. 但是当这样做时,我会失去很多精确度。 如果我想找到512.00002f的倒数。 为了缩小数字,我在分数部分失去了10位精度,它被移出。 所以,我的问题是: 有没有办法选择一个不需要标准化的更好估计? 为什么? 为什么不? 为什么这是或不可能的数学certificate将是伟大的。 此外,是否可以预先计算第一个估计值,以便系列收敛得更快? 现在,它平均在第4次迭代后收敛。 在ARM上,这是大约50个周期的最坏情况,并且没有考虑到clz / bsr的仿真,也没有考虑内存查找。 如果可能的话,我想知道这样做是否会增加错误,以及增加多少错误。 这是我的测试用例。 注意:第13行的clz的软件实现来自我的post。 如果需要,可以用内在替换它。 clz应返回前导零的数量,并返回值32的32。 #include #include const unsigned int BASE = 22ULL; static unsigned int divfp(unsigned int val, int* iter) { /* Numerator, denominator, estimate scalar and previous denominator */ unsigned long long […]