两段计算log2(x)的代码, 怎么理解?

18 views
Skip to first unread message

Jing

unread,
Feb 21, 2009, 8:40:19 AM2/21/09
to TopLanguage
我在网上找到一段计算log2的代码, 看不懂, 这断代码有一堆输出, 也不知道什么意思。 望各位大牛指点一下。

PS: 原文连接找不到了, 原文就是给了这么一段代码


main(){
int a=1000,b=0,c=7973,d,f[7974],n=800,k;
for(;b<c;f[b++]=5);
for(;n--;d+=*f*a,printf("%.3d",d/a),*f=d%a)
for(d=0,k=c;--k;d/=b,d*=k)
f[k]=(d+=f[k]*a)%(b=2*k+2);
}

main(){

int a=1000,b=0,c=2658,d=75,f[2659],n=800,k;
for(;b<c;f[b++]=d,d=-d);
for(;n--;d+=*f*a,printf("%.3d",d/a),*f=d%a)
for(d=0,k=c;--k;d/=b,d*=k)
f[k]=(d+=f[k]*a)%(b=8*k+4);
}

hack...@sina.com

unread,
Feb 21, 2009, 8:55:58 AM2/21/09
to TopLanguage
不明白,不过代码风格似乎很烂。

> }- Hide quoted text -
>
> - Show quoted text -

pongba

unread,
Feb 22, 2009, 2:51:59 AM2/22/09
to pon...@googlegroups.com
你想从代码来学习如何求解log2?你应该去找本数值计算基础教程才是吧。
2009/2/21 Jing <l.jing...@googlemail.com>



--
刘未鹏(pongba)
Blog | Mind Hacks
http://mindhacks.cn
TopLanguage
http://groups.google.com/group/pongba

Li Xunhao

unread,
Feb 22, 2009, 3:08:56 AM2/22/09
to pon...@googlegroups.com
用的应该是Tylor展开式吧(话说也没别的方法了),但是代码看不明白。

2009/2/21 Jing <l.jing...@googlemail.com>:

--
Xunhao Li
A USTC Alumnus

Sent from: Edmonton Ab Canada.

free.wang

unread,
Feb 22, 2009, 3:28:28 AM2/22/09
to pon...@googlegroups.com
我还以为是计算复杂度为LOG2N的代码段。 结果怎么看都没啊可能出来。

2009/2/22 Li Xunhao <dante....@gmail.com>



--
真正的杰出,不是妙用规则的错层,而是极致的偏执于信念.
The Crankiness of  Belief achieves Greate , not the Trick of Regulation.

Jing

unread,
Feb 22, 2009, 4:07:49 AM2/22/09
to TopLanguage
有道理, 我去找找看。

但现在这段代码有人写了, 如果能解释一下就更好了。

On 2月22日, 下午3时51分, pongba <pon...@gmail.com> wrote:
> 你想从代码来学习如何求解log2?你应该去找本数值计算基础教程才是吧。
> 2009/2/21 Jing <l.jingyua...@googlemail.com>
>
>
>
> --
> 刘未鹏(pongba)
> Blog | Mind Hackshttp://mindhacks.cn
> TopLanguagehttp://groups.google.com/group/pongba

Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted

居振梁

unread,
Feb 22, 2009, 7:34:21 AM2/22/09
to pon...@googlegroups.com
食神里有个片段说:即使你做的料理再好吃,但是你人长得太丑,我根本就吃不下,能给你第一名吗?

这段代码的性质跟上面的意思差不多

2009/2/22 Jing <l.jing...@googlemail.com>
有道理, 我去找找看。

但现在这段代码有人写了, 如果能解释一下就更好了。


--
自学走了不少弯路,更浪费了太多的时间,寻找良师益友。
追求黑客精神和清心寡欲的心态。
http://wargrey.yo2.cn
http://wargrey.blogspot.com

counhsung

unread,
Feb 22, 2009, 7:41:17 AM2/22/09
to TopLanguage
C混乱代码大赛的作品,其实有的也比较程式化,看一两个例子就好了。

张鹏程

unread,
Feb 22, 2009, 9:07:48 AM2/22/09
to pon...@googlegroups.com
看不明白也就罢了,可结果好像也不对啊,不是log2的值啊。我用win的计算器算了,然后又看了结果,差了太多。

2009/2/22 counhsung <coun...@gmail.com>
C混乱代码大赛的作品,其实有的也比较程式化,看一两个例子就好了。

张鹏程

unread,
Feb 22, 2009, 9:17:28 AM2/22/09
to pon...@googlegroups.com
又看了一下,不是计算log2的,是计算ln2的。
难懂,对这算法不熟。

2009/2/22 张鹏程 <holme...@gmail.com>

Quanta

unread,
Feb 22, 2009, 2:00:00 PM2/22/09
to pon...@googlegroups.com
能直接表达你的意思吗?


 
2009/2/22 居振梁 <juzhe...@gmail.com>



--
Quanta

Quanta

unread,
Feb 22, 2009, 2:00:56 PM2/22/09
to pon...@googlegroups.com

估计是ln2的连分数展开吧
和那个外星人计算pi的程序有些类似
2009/2/22 张鹏程 <holme...@gmail.com>



--
Quanta

居振梁

unread,
Feb 22, 2009, 10:55:05 PM2/22/09
to pon...@googlegroups.com
风格让我不舒服,不想看

2009/2/23 Quanta <qdk...@gmail.com>
能直接表达你的意思吗?

居振梁

unread,
Feb 22, 2009, 10:55:51 PM2/22/09
to pon...@googlegroups.com
运行了一下,输出不知所然

2009/2/23 居振梁 <juzhe...@gmail.com>
Reply all
Reply to author
Forward
0 new messages