雷达 · 通信 · 电子战 / 基础精学 148
倒数的Newton迭代把每步误差平方,在归一化正输入和合适初值下快速收敛;定点舍入最终形成精度底限。
正输入归一化到 1≤ d<2,实数初值取 r0=1/2,每步定点运算使用加宽中间量。
d:归一化正除数(无量纲)
rk:倒数近似(无量纲)
ϵk:相对残差(无量纲)
F:定点小数位(bit)
对 f(r)=1/r−d=0 使用Newton法,
得到
每步只需要乘法和减法。
令 ϵk=1−drk,则
当 |ϵ0|<1 时二次收敛。
所选区间和初值给出 0<ϵ0≤1/2,故 |ϵk|≤2−2k。
整数尺度 S=2F,D表示d,R表示r,可采用
两处取整引入误差,精确平方律不再严格成立;
迭代到残差接近一个量化单位后应停止,并单独处理零、负数及去归一化指数。
精确倒数迭代 x+=x(2−dx) 的相对残差定义为 e=1−dx,代入得到
只要初始 |e|<1,精确算术残差二次收敛。
若一次迭代的实际输出另含绝对误差 η,则
当 e2 已与 |dη| 相当,继续迭代不再保证精度按平方改善;
甚至可能在几个相邻码之间停留。初值区间、乘积宽度和每次缩放位置共同决定可用精度。零分母没有倒数,负数或未归一化输入也不能未经处理套用正分母初值范围。
每次迭代利用当前乘积偏离1的程度纠正倒数,正确位数在实数模型中近似倍增。
对归一化区间密集扫描,验证前4步实数误差平方律和Q14整数实现最终误差,检查端点及单步整数公式。
| 量 | 数值 |
|---|---|
| 小数位数 | 14 |
| denominator count | 16384 |
| square law error | 3.47197163194e-16 |
| initial relative residual | 0.5 |
| iteration4 relative residual | 1.52587890625e-05 |
| Q14 max absolute error | 6.103515625e-05 |
| Q14 error in lsb | 1 |
图 1 Newton迭代定点倒数的理论关系与固定参数验证
表中数值和图中曲线由 MATLAB 实际运行得到,随机种子为 20261067;运行版本与完整结果另存为独立文件。
RTL实现Q14单步更新,输入a为D、b为R,使用64位乘积和两次算术右移,输出新R;归一化、初值、迭代计数与异常输入处理由外部完成。 RTL 采用同步有效信号和异步低有效复位;
空拍保持状态且输出无效。除另有说明外,输入为16位有符号整数,结果为64位有符号整数,测试范围内不截断或饱和。输出在采样时钟上升沿更新。自检覆盖连续样本、空拍和复位;
未进行器件布局布线、时序收敛或功耗验证。
独立自检程序已在 Icarus Verilog 13.0 中实际运行并通过。该结果不包含器件综合、静态时序分析或板级测试。
Newton倒数用于归一化增益、比例计算和以乘法替代除法的数据通路。归一化指数可独立保存,尾数在固定区间内迭代。输入为零或接近最小正值时应有单独控制路径,不能把常规迭代当作异常值处理。
不满足初始残差小于1时不保证收敛。
输入未归一化会改变字长与初值有效范围。
重复迭代无法消除量化底限,还可能形成循环。
倒数的Newton迭代把每步误差平方,在归一化正输入和合适初值下快速收敛;定点舍入最终形成精度底限。
内容依据:每日精学第 148 课《Newton迭代定点倒数》。图表沿用原课固定参数数值结果,属于数值验证,不代表设备实测。