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

源码是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

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

最新文章

  1. OCR图像识别技术-Asprise OCR
  2. CSS层模型
  3. iOS开发Facebook POP动效库使用教程
  4. overridePendingTransition动画只设置一个
  5. jquery json 操作(转)
  6. BaiduMap开发,获取公交站点信息。
  7. show processlist 执行状态分析
  8. jqGrid中多选
  9. SPOJ 1812 Longest Common Substring II(后缀自动机)
  10. 百度Web App在线生成平台Site App体验
  11. 属性动画ValueAnimator用法
  12. 朱晔和你聊Spring系列S1E9:聊聊Spring的那些注解
  13. mysql 将一张表的数据更新到另外一张表中
  14. 解决web资源跨域请求问题
  15. swift 各种学习
  16. 解决IIS8中 URLRewriter 不能使用的方法
  17. springMVC一个Controller处理所有用户请求的并发问题
  18. TensorFlow安装,升级,基本操作
  19. MySQL 序列 AUTO_INCREMENT
  20. (转)Python——functools

热门文章

  1. 【luogu P1821 [USACO07FEB]银牛派对Silver Cow Party】 题解
  2. ActiveX控件注册不起作用的解决办法
  3. $_GET 与 $POST
  4. LeetCode7.整数反转 JavaScript
  5. 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)(Finchley版本)
  6. C#中rpt的数据类型和Oracle中数据类型的匹配
  7. NSString+JSON - iOS
  8. Swift 中关于”??”操作符
  9. Qt学习交流(广告)
  10. P3818 小A和uim之大逃离 II(bfs,有条件的广搜)