JavaScript实现算术平方根算法-代码超简单


Posted in Javascript onSeptember 11, 2015

前几天看见了一个来自雷神之槌的平方根源码,原理多方有介绍,不赘述。

源码是c语言写的,我思考后发现这样的算法在javascript中也是可以完成的。

function InvSqrt(x){
  var h=0.5*x;
  var b=new ArrayBuffer(4);
  var d=new DataView(b,0);
  d.setFloat32(0,x);
  var i=d.getInt32(0);
  i=0x5f375a86-(i>>1);
  d.setInt32(0,i);
  var r=d.getFloat32(0);
  r=r*(1.5-h*r*r);
  return r;
}

测试:

console.time("t");
for(var i=0;i<10000000;i++){
 InvSqrt(i);
}
console.timeEnd("t");

console.time("t");
for(var i=0;i<10000000;i++){
 1/Math.sqrt(i);
}
console.timeEnd("t");
VM2303:18 t: 33438.000ms
VM2303:24 t: 16720.000ms

虽然结果还是比系统库慢,而且精度本来就低。不过我很满意。

以上就是用javascript实现算术平方根算法算法,怎么样,代码很简单吧,需要的朋友快来学习吧。!

Javascript 相关文章推荐
关于javascript document.createDocumentFragment()
Apr 04 Javascript
jQuery 跨域访问问题解决方法
Dec 02 Javascript
JavaScript调试工具汇总
Dec 23 Javascript
Javascript动态创建div的方法
Feb 09 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
Jul 14 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
Jul 26 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
Dec 20 Javascript
react以create-react-app为基础创建项目
Mar 14 Javascript
Vue 中mixin 的用法详解
Apr 23 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
Nov 20 Javascript
纯js实现无缝滚动功能代码实例
Feb 21 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
Sep 07 Javascript
js图片卷帘门导航菜单特效代码分享
Sep 10 #Javascript
jQuery超精致图片轮播幻灯片特效代码分享
Sep 10 #Javascript
手机端转盘抽奖代码分享
Sep 10 #Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
Sep 10 #Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
Sep 10 #Javascript
JS+CSS实现电子商务网站导航模板效果代码
Sep 10 #Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
Sep 10 #Javascript
You might like
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
JQuery和PHP结合实现动态进度条上传显示
2016/11/23 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
详解vue中使用微信jssdk
2019/04/19 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
2020/08/18 Javascript
[01:10:24]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第一场 2月28日
2021/03/11 DOTA
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
Python中Collection的使用小技巧
2014/08/18 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
python截取两个单词之间的内容方法
2018/12/25 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
tensorflow tf.train.batch之数据批量读取方式
2020/01/20 Python
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
自荐信格式简述
2014/01/25 职场文书
中专生毕业个人鉴定
2014/02/26 职场文书
农村葬礼主持词
2014/03/31 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
房地产端午节活动方案
2014/08/24 职场文书
高中军训的心得体会
2014/09/01 职场文书
2014年派出所工作总结
2014/11/21 职场文书
稽核岗位职责范本
2015/04/13 职场文书
交通安全温馨提示语
2015/07/14 职场文书
幼儿园2016年圣诞活动总结
2016/03/31 职场文书
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL
Java使用Unsafe类的示例详解
2021/09/25 Java/Android
解决MySQL报“too many connections“错误
2022/04/19 MySQL