源自Quake3的快速求InvSqrt()函数

"人们很早就在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的求证之路显然无止境。  

你可能感兴趣的:(源自Quake3的快速求InvSqrt()函数)