开方根运算——没有FPU的解决办法

前言:笔者在做工程时需要用到大数的开方根运算,但是用的芯片没有FPU,。于是,笔者用移位运算自己实现一个开方根运算,当然可能精度就没有那么准确了。


1. “将长方形变得更像正方形”——牛顿迭代法

  查阅了网上很多资料后,发现大多数方法都是通过牛顿迭代法实现。但是鉴于一大堆公式看的头疼(没错我就是个学渣┭┮﹏┭┮),接下来选择一种更常见得方法简单解释——“将长方形变得更像正方形”。

  • 假设n是一个要进行开方根运算的数,现在将n看作是一个长方形的面积,假设其长为x,那宽为n/x。
    在这里插入图片描述

  • 当发现x和x/n很不接近后,计算新的x = (x+x/n)/2,另一边长度为n/x,不断逼近一个正方形的形状,达到开方根的目的。
    在这里插入图片描述
      当然,这种方法是通过不断迭代找到最逼近的那个数,当遇到很大的数的时候,探测次数较多,花费时间可能较长,但我的程序要求在4s内跑完,数字也不会很大

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值