RISC-V MCU中文社区

【分享】 (七)Newton-Raphson算法实现浮点除法

发表于 全国大学生集成电路创新创业大赛 2023-05-21 14:28:20
0
724
0

一、团队介绍

报名编号:CICC1327
团队名称:301小队

二、Newton-Raphson算法

Newton-Raphson算法采用乘法来代替除法运算,即a/b=a(1/b),基本原理如下:
已知曲线方程f(x),我们在xn点做切线,求xn+1

首先我们猜测x0,由f(x)在该点处的切线方程y-f(x0) = f’(x0)(x-x0),找出使y = 0的新的一点x1,则x1更加接近xn.
一般来说,y-f(xi) = f’(xi)(x-xi),令y = 0,我们有新的一点xi+1 = xi – f(xi)/f’(xi)。重复上述过程,一直到xn足够精确为止。
对于a/b计算来说, 令f(x) = 1/x – d,则在x=1/b处f(x0)。根据上述的牛顿迭代算法,一直逼近于f(x) = 0的点,则有xi+1 = xi
(2 - xi b),这样我们能够用下述步骤实现a/b:
1)把b移位,使其满足0.5≤b<1;
2)使用b的高若干位查ROM表得到1/b的近似值x0;
3)迭代xi+1 = xi
(2 - xi b),直到xn足够精确为止;
4)计算a
xn,把结果反向移位以消除第一步造成的影响。

三、仿真验证

3.14159/2.71828的理论值为:1.155727

如上图所示结果为1.15573,浮点除法功能正常。

喜欢0
用户评论
hzzaz

hzzaz 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板