|
|

楼主 |
发表于 2007-8-2 13:17:00
|
显示全部楼层
我是搂主 :0
果然有人认出来了,我花了两个小时去找以前学过的知识,才发现这是用泰勒公式推出来的著名牛顿迭代法。
开方的迭代式如下:
X(k+1)=X(k)*3/2-(X(k)^3)/2 //就是上面那个
而在牛顿里面,最主要的找到初始迭代值,使得f(X(k))/f'(X(k))<0 && f(X(k+1))/f'(X(k+1))>0
quake里面用的是一个浮点数转长整型后用一个很奇怪的数0x5f3759df "整型"相减,然后再变回来.
如果是按IEEE 745标准来算,这个数实在是没什么意思,是个很小的数,但是整型相减他就很大了,减去要计算的数.
这里仿佛找不到什么数学依据,i(转整后),右移一位是干什么的?是为了把指数部分的符号去掉变成一个大数么?
谁能解答??
还有,这个函数本身与机器没什么关系,很奇怪的是,我用它在quake工程里用,很正常,试了了几个数.
可是我用在自己的文件里面就不知道为什么不准了.
还有intel math里面函数像什么样子,能展出来看看么?
看来高手还是很多的.
"天下岂无马耶,实无伯乐已"
|
|