找回密码
 欢迎注册
楼主: liangbch

[擂台] 计算百万位e

[复制链接]
 楼主| 发表于 2008-4-17 15:24:44 | 显示全部楼层
HugeCalc中大数除法仍有优化的余地,我用自己的除法代码,可将9#程序的除法部分的速度提高10%(使用HugeCalc的代码,计算100万位,除法部分所用时间为2.062,改用我的求倒数再相乘后,除法部分的时间降至1.875),等我有空时,将自己写的大数除法(调用HugeCalc中的大数乘法)贴上来。

大家可能注意到9#的代码包含下面的代码,这就是用来测试我自己写的大数除法用的。
#else
        {
                void inverse( const integer *s, integer *pResult,int len);
                integer t;
                inverse(&q,&t,len);
                p *=t;
        }
#endif
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-17 15:30:42 | 显示全部楼层
欢迎任何改进!

原帖由 无心人 于 2008-4-17 15:14 发表
不是9#

是你给的highCalc.rar


我将他的老版本也打包进去了,请重新下载: HighCalc.rar (235.42 KB)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-4-17 21:35:46 | 显示全部楼层
我说的意思是PiFast内核不可能会领先那么多吧?
也许是我们外围算法或调用没做好。。。

   你这么一说,我也有种感觉,也许Pifast的大数乘法不会快HugeCalc 3倍以上,这太快了,比GMP还快,快的有点不可思议。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-17 21:46:37 | 显示全部楼层
某些算法大数乘法并不需要乘出结果

他可以在FFT上持续计算,直到需要乘法结果时再算出来
可能他利用了N个序列的FFT来合成2N个序列的来持续FFT
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-18 07:52:55 | 显示全部楼层
“持续FFT”?

我以前考虑过,但效率并不理想。

因为要考虑到最终乘积,所以每次的变换长度都是最终的长度,
如果逐级处理,则早些阶段的可用较小的变换长度处理。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-18 08:01:53 | 显示全部楼层
N个序列的FFT可变换成2N个序列的FFT
其操作只是序列的一个复制操作
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-14 12:47:08 | 显示全部楼层

mathematica7.0计算E的百万位代码

input:Timing[N[E, 10^6]]
output:{2.25,一百万位的数字我就不贴出结果了!}

追究简单是我的原则!不到万不得已的情况下,我是
不会选择编程的!我承认自己有时候喜欢现成的!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-14 14:17:58 | 显示全部楼层
你那不叫算法
叫函数调用
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-14 20:52:15 | 显示全部楼层
我建议算e^x
光算个e貌似没有实际价值...怎么算都是常数...
e^x更有挑战性...
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-14 21:10:56 | 显示全部楼层
这个,好像计算e^x不是很困难吧
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-27 04:28 , Processed in 0.042213 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表