VimIy微民网,让世界倾听微民的声音! 设为首页 | 加入收藏 | 网站地图
当前位置:主页 > 大杂烩 >

【码农相关】这个传说中开平方取倒数效率最高的程序中的常数是怎么出来的啊???

整理时间:2013-06-19 02:51 来源:www.vimiy.com 作者:编辑 点击:

【楼主】2013-06-17 21:45

» 这个传说中开平方取倒数效率最高的程序中的常数是怎么出来的啊???
    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;
    }
    
    以上
    


网友评论2013-06-17 21:50


    上帝数字
    这算法是雷神之锤的创造者写出来的,具体参考wiki
    MIT有数学系的教授研究过
    http://zh.wikipedia.org/wiki/%E5%B9%B3%E6%96%B9%E6%A0%B9%E5%80%92%E6%95%B0%E9%80%9F%E7%AE%97%E6%B3%95
    


网友评论2013-06-17 21:53


    和编码格式与数值分析有关,一篇论文特别证明过,并且还证明这个数字不是最优的
    http://ezonas.googlecode.com/hg-history/6d057aff3b48ffa0b15430b5821a236a5c5abba8/_files/InvSqrt.pdf
    
网友评论2013-06-17 21:56


    卡马克大神,膜拜,天才就是天才,涨知识了
    
网友评论2013-06-17 21:57


    虽不明 但觉吊
    
网友评论2013-06-17 22:04


    卡马克找出来的一个数字,后来有个教授不服写了程序算了几个月找出一个比这个略好的
    
网友评论2013-06-17 22:08


    m67大神曾经谈论过这个问题
    http://www.matrix67.com/blog/archives/362
    
    事实上现在wolfram的人就在专门研究类似的常数 但是很多结论是不会公开的
    发表回复

    
    
    

关于网站 | 网站声明 | 用户反馈 | 合作伙伴 | 联系我们
Copyright © 2012年2月8日