更新:有人问这个算法的原理。其实原理很简单。就是牛顿迭代求根。卡马克算法牛X的地方就是他选了一个常数作为起始值。而这个起始值让他只用一次迭代就够了。
从这里看来的。QuakeIII自然就是传奇高手卡马克的杰作之一了。在有的CPU上,这个函数比普通的(float)(1.0/sqrt(x)快4倍!快的原因之一是用了一个神秘常数,0x5f3759df。普渡大学的Chris Lomont在这篇论文里讨论了这个常数的意义,尝试用严格的方法推导出这个常数(他还提到有人认为这个函数是在NVidia工作过的Gary Tarolli写的)。Chris推出的常数是0x5f37642f),和Q_rsqrt里的稍有不同,而且实际表现也稍有不如。卡马克到底怎么推出这个常数的就是谜了。这种高手不写书,实在可惜。
float Q_rsqrt( float number )
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
i = * ( lo阅读全文>
发表于 @ 2006年03月18日 12:47:00|评论(loading...)|编辑
从罗永浩的博客看到的。笑翻在地。本来不想转,但那么尖锐刻薄的文字,不转憋久了要得脑癌。
Edmund Burke的名言“All that is needed for the triumph of misguided cause is that good people do nothing.”(意为“谬误想要获得胜利,只需好人袖手旁观,”或“误导之所以得逞,就是因为好人无所作为”)被老师无比累赘并且是无中生有地翻译成了“犹存于世的妄言惑众之辞得以甚嚣尘上之势,皆因人类英雄义士袖手旁观麻木不仁。”这就好像是把“no pay, no gain”(指没有付出就没有收获,也可以意译成一分耕耘,一分收获)这样的简洁表达翻译成“试图拒绝卧薪尝胆断然回避付出艰苦卓绝之努力者终将面临颗粒无收晚景凄凉之人生结局”一样。。。。
P.S. csdn有关键词过滤,所以我把可能违禁的词都删了
阅读全文>
发表于 @ 2006年03月14日 05:55:00|评论(loading...)|编辑