suchasplus
作家
作家
  • 铜币16枚
  • 威望11点
  • 贡献值1点
阅读:1554回复:9

John Carmack密码:0x5f3759df

楼主#
更多 发布于:2006-06-14 04:23
有人在Quake III的源代码里面发现这么一段用来求平方根的代码:

/*================SquareRootFloat================*/

float SquareRootFloat(float number) {
    long i;
    float x, y;
    const float f = 1.5F;
    x = number * 0.5F;
    y  = number;
    i  = * ( long * ) &y;
    i  = 0x5f3759df - ( i >> 1 );  //注意这一行
    y  = * ( float * ) &i;
    y  = y * ( f - ( x * y * y ) );
    y  = y * ( f - ( x * y * y ) );
    return number * y;
}

0x5f3759df? 这是个什么东西? 学过数值分析就知道,算法里面求平方根一般采用
的是无限逼近的方法,比如牛顿迭代法,抱歉当年我数值分析学的太烂,也讲不清楚
。简单来说比如求5的平方根,选一个猜测值比如2,那么我们可以这么算

5/2 = 2.5; 2.5+2/2 = 2.25; 5/2.25 = xxx; 2.25+xxx/2 = xxxx ...
这样反复迭代下去,结果必定收敛于sqrt(5),没错,一般的求平方根都是这么算的
。而卡马克的不同之处在于,他选择了一个神秘的猜测值0x5f3759df作为起始,使得
整个逼近过程收敛速度暴涨,对于Quake III所要求的精度10的负三次方,只需要一
次迭代就能够得到结果。

好吧,如果这还不算牛b,接着看。

普渡大学的数学家Chris Lomont看了以后觉得有趣,决定要研究一下卡马克弄出来的
这个猜测值有什么奥秘。Lomont也是个牛人,在精心研究之后从理论上也推导出一个
最佳猜测值,和卡马克的数字非常接近, 0x5f37642f。卡马克真牛,他是外星人吗?


传奇并没有在这里结束。Lomont计算出结果以后非常满意,于是拿自己计算出的起始
值和卡马克的神秘数字做比赛,看看谁的数字能够更快更精确的求得平方根。结果是
卡马克赢了... 谁也不知道卡马克是怎么找到这个数字的。

最后Lomont怒了,采用暴力方法一个数字一个数字试过来,终于找到一个比卡马克数
字要好上那么一丁点的数字,虽然实际上这两个数字所产生的结果非常近似,这个暴
力得出的数字是0x5f375a86。

Lomont为此写下一篇论文,"Fast Inverse Square Root"。

John Carmack, ID的无价之宝。


------------------------------------------------------------------------------------------------
ps:论文地址:
www.math.purdue.edu/~clomont/ Math/Papers/2003/InvSqrt.pdf
The history of these days will be written in blood... By crushing the armies of our enemy, by seizing the weapons they thought to turn against us, we were fighting for our very existence!
永
著名写手
著名写手
  • 铜币90枚
  • 威望18点
  • 贡献值0点
1C#
发布于:2006-08-16 22:35
Re:John Carmack密码:0x5f3759df
今天 高兴 我就顶~
我们都是普通人,普普通通的老百姓! 但是我们也有自己的思想,我们也有自己的语言,精辟的言语不光是出自社会知名人士,不光出自上层名流!
mumu
写手
写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
2C#
发布于:2006-06-20 14:54
Re:John Carmack密码:0x5f3759df
非典型密码
王小波说:“中年妇女在中国是一种自然灾害,这倒不是因为她们不好看,而是因为她们故意要恶心人。” 一天,我乘坐公交车,一位MM突然转过头来对我说:“你帅吗?”我说:“我不帅!”MM突然给我一巴掌,并说:“我最讨厌说谎的人了!” 如果你更热爱金钱而非自由,更习惯于被奴役的安宁而畏惧令人充满活力的争取自由的抗争,那么,请你静静地走开。我们不会乞求你的建议或是帮助。伏下身去讨好那喂养你的人吧。但愿身上的锁链不会给你造成太多的痛苦,但愿未来的人们不会记起你曾经是我们的国人 Samuel Adams: 18世纪美国独立革命重要领袖,著有“殖民者的权利”
mumu
写手
写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
3C#
发布于:2006-06-20 14:53
Re:John Carmack密码:0x5f3759df
典型的没事找骂,密码个屁.

当老马是达芬奇啊..
王小波说:“中年妇女在中国是一种自然灾害,这倒不是因为她们不好看,而是因为她们故意要恶心人。” 一天,我乘坐公交车,一位MM突然转过头来对我说:“你帅吗?”我说:“我不帅!”MM突然给我一巴掌,并说:“我最讨厌说谎的人了!” 如果你更热爱金钱而非自由,更习惯于被奴役的安宁而畏惧令人充满活力的争取自由的抗争,那么,请你静静地走开。我们不会乞求你的建议或是帮助。伏下身去讨好那喂养你的人吧。但愿身上的锁链不会给你造成太多的痛苦,但愿未来的人们不会记起你曾经是我们的国人 Samuel Adams: 18世纪美国独立革命重要领袖,著有“殖民者的权利”
suchasplus
作家
作家
  • 铜币16枚
  • 威望11点
  • 贡献值1点
4C#
发布于:2006-06-15 17:45
Re:John Carmack密码:0x5f3759df
靠~  万闲  什么时候把doom启示录借给我看看
The history of these days will be written in blood... By crushing the armies of our enemy, by seizing the weapons they thought to turn against us, we were fighting for our very existence!
万贤
作家
作家
  • 铜币1枚
  • 威望24点
  • 贡献值1点
5C#
发布于:2006-06-15 17:19
Re:John Carmack密码:0x5f3759df
quakeIII永远的典范,ID公司出的quake,doom系列有的不光只的是游戏,不光只的是技术,不光只的是营销模式.还有很多很多.建议看看<doom启示录>,在此感谢sjs同学的慷慨相赠~ [ 2006-06-15 17:15:30 万贤 修改 ]
suchasplus
作家
作家
  • 铜币16枚
  • 威望11点
  • 贡献值1点
6C#
发布于:2006-06-15 01:51
Re:John Carmack密码:0x5f3759df
社会工程学和这个有什么关系?
The history of these days will be written in blood... By crushing the armies of our enemy, by seizing the weapons they thought to turn against us, we were fighting for our very existence!
mumu
写手
写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
7C#
发布于:2006-06-14 19:57
Re:John Carmack密码:0x5f3759df
木木说话老是说一半儿。快来解释一下


以后面授机宜不好嘛:(

搜"社会工程"即知.
王小波说:“中年妇女在中国是一种自然灾害,这倒不是因为她们不好看,而是因为她们故意要恶心人。” 一天,我乘坐公交车,一位MM突然转过头来对我说:“你帅吗?”我说:“我不帅!”MM突然给我一巴掌,并说:“我最讨厌说谎的人了!” 如果你更热爱金钱而非自由,更习惯于被奴役的安宁而畏惧令人充满活力的争取自由的抗争,那么,请你静静地走开。我们不会乞求你的建议或是帮助。伏下身去讨好那喂养你的人吧。但愿身上的锁链不会给你造成太多的痛苦,但愿未来的人们不会记起你曾经是我们的国人 Samuel Adams: 18世纪美国独立革命重要领袖,著有“殖民者的权利”
松柏
论坛版主
论坛版主
  • 铜币371枚
  • 威望39点
  • 贡献值0点
  • 社区居民
8C#
发布于:2006-06-14 09:49
Re:John Carmack密码:0x5f3759df
木木说话老是说一半儿。快来解释一下
[color=#0000FF]馋嘴蜗牛[/color] 我的博客:[url]http://osnaile.osdn.cn/[/url]
mumu
写手
写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
9C#
发布于:2006-06-14 08:48
Re:John Carmack密码:0x5f3759df
看过这篇论文,这位老哥典型没学过社会工程学.
王小波说:“中年妇女在中国是一种自然灾害,这倒不是因为她们不好看,而是因为她们故意要恶心人。” 一天,我乘坐公交车,一位MM突然转过头来对我说:“你帅吗?”我说:“我不帅!”MM突然给我一巴掌,并说:“我最讨厌说谎的人了!” 如果你更热爱金钱而非自由,更习惯于被奴役的安宁而畏惧令人充满活力的争取自由的抗争,那么,请你静静地走开。我们不会乞求你的建议或是帮助。伏下身去讨好那喂养你的人吧。但愿身上的锁链不会给你造成太多的痛苦,但愿未来的人们不会记起你曾经是我们的国人 Samuel Adams: 18世纪美国独立革命重要领袖,著有“殖民者的权利”
游客

返回顶部