我是靠谱客的博主 务实小懒猪,最近开发中收集的这篇文章主要介绍开平方与魔数0x5F3759DF:Quake III 开源代码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

float Q_rsqrt( float number )
{
  long i;
  float x2, y;
  const float threehalfs = 1.5F;
  x2 = number * 0.5F;
  y = number;
  i = * ( long * ) &y; // evil floating point bit level hacking
  i = 0x5f3759df - ( i >> 1 ); // what the fuck?
  y = * ( float * ) &i;
  y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration
  // y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed

  #ifndef Q3_VM
  #ifdef __linux__
  assert( !isnan(y) ); // bk010122 - FPE?
  #endif
  #endif
  return y;
}

 

float InvSqrt(float x)
{
float xhalf = 0.5f*x;
int i = *(int*)&x; // get bits for floating VALUE
i = 0x5f375a86- (i>>1); // gives initial guess y0
x = *(float*)&i; // convert bits BACK to float
x = x*(1.5f-xhalf*x*x); // Newton step, repeating increases accuracy
return x;
} 

参考:

http://www.matrix67.com/data/InvSqrt.pdf

http://www.guokr.com/post/90718/

转载于:https://www.cnblogs.com/georgethrax/p/4419133.html

最后

以上就是务实小懒猪为你收集整理的开平方与魔数0x5F3759DF:Quake III 开源代码的全部内容,希望文章能够帮你解决开平方与魔数0x5F3759DF:Quake III 开源代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部