Solidot 登录
[ 创建一个新帐号 ]
源自Quake3的快速求InvSqrt()函数
matrix 写道 "人们很早就在Quake3源代码中发现了如下的C代码,它可以快速的求1/sqrt(x),在3D图形向量计算方面应用很广。
float InvSqrt(float x){
float xhalf=0.5f*x;
long i=*(long*)&x;
i=0x5f3759df - (i>>1);
x=*(float *)&i;
x=x*(1.5f-xhalf*x*x);
return x;
}
Beyond3D.com的Ryszard Sommefeldt一直在想到底是哪个家伙写了这些神奇的代码?2003年Chris Lomont还写了一篇文章(PDF)对这些代码进行了分析。毫无疑问写出这些代码的人绝对是天才。" 是John Carmack?Michael Abrash?John Carmack在邮件回复中明确表示不是他,也不是Michael,可能是Terje Matheson。于是侦探Ryszard又向Terje Mathisen寻求答案。Terje说他写过类似的高效代码,但上面的不是。他猜测可能在MIT的旧文档中可以找到。Ryszard的求证之路显然无止境。
float InvSqrt(float x){
float xhalf=0.5f*x;
long i=*(long*)&x;
i=0x5f3759df - (i>>1);
x=*(float *)&i;
x=x*(1.5f-xhalf*x*x);
return x;
}
Beyond3D.com的Ryszard Sommefeldt一直在想到底是哪个家伙写了这些神奇的代码?2003年Chris Lomont还写了一篇文章(PDF)对这些代码进行了分析。毫无疑问写出这些代码的人绝对是天才。" 是John Carmack?Michael Abrash?John Carmack在邮件回复中明确表示不是他,也不是Michael,可能是Terje Matheson。于是侦探Ryszard又向Terje Mathisen寻求答案。Terje说他写过类似的高效代码,但上面的不是。他猜测可能在MIT的旧文档中可以找到。Ryszard的求证之路显然无止境。
声明:
下面的评论属于其发表者所有,不代表本站的观点和立场,我们不负责他们说什么。













等等吧
(得分:1)( http://www.small-island.org )
终于有人调查这个了
(得分:1)如上
(得分:1)( 最新日志: 2006年12月15日 16时53分 星期五 )
http://home.pipeline.com/~hbaker1/hakmem/hakmem.h
http://www.cl.cam.ac.uk/~am21/hakmemc.html [cam.ac.uk]
滴水之恩當以淵淵相報;吃水不忘外星人;一朝被蛇咬,十年怕洗澡
Origin of Quake3's Fast InvSqrt() - Part Two
(得分:1)( 最新日志: 2006年12月20日 16时17分 星期三 )
1 1 2 3 5 8 13 21 34 55