liangbch 发表于 2017-12-28 22:34:02

另外,这种对比测试对有界面的Maple和Mathematica来说,可能不一定公平。
那到不至于,测试是在循环中运行的,循环次数很多,直到总的测试时间达到1秒。另外,循环的开销也已经扣除。你可以去我的网站下载测试代码看看。所有的测试代码都是一样的流程。
值得奇怪的是,Mapple的测试结果波动性非常大。比如,循环3次,则其中某一次的运行时间是另外2次运行时间的10倍以上。你看一下mathmatica的曲线,你会发现,这个库在较低精度和较高精度的情况下都比MPFR性能更好,所有,循环和脚本解释的代价非常低,不会对总的结果造成影响。

zeroieme 发表于 2017-12-28 22:46:36

回7楼,
我同意,大数库的关键是乘法。同时我有印象您的大数库针对Intel汇编指令做了极致优化,超越GMP。又不清楚对比的AGM算法是调用您自己的大数库还是GMP的。
故有此问。

zeroieme 发表于 2017-12-28 22:51:40

liangbch 发表于 2017-12-28 22:34
那到不至于,测试是在循环中运行的,循环次数很多,直到总的测试时间达到1秒。另外,循环的开销也已经扣 ...

可能跟缓存机制有关。
如Mathematica最好在计算测试部分之前加上
ClearSystemCache[];
Mapple不会,估计也有类似语句。

liangbch 发表于 2017-12-28 22:53:58

又不清楚对比的AGM算法是调用您自己的大数库还是GMP的
是调用自己的算法。性能的不同完全是因为算法不同导致的。

zeroieme 发表于 2017-12-28 23:04:59

liangbch 发表于 2017-12-28 22:53
是调用自己的算法。性能的不同完全是因为算法不同导致的。

明白了

liangbch 发表于 2017-12-28 23:27:54

这里记录下我对这个问题的探索历史
2004-03-11 http://bbs.csdn.net/topics/40410533
2007-7-6   http://bbs.pfan.cn/post-241245.html

liangbch 发表于 2017-12-28 23:35:29

你的对数函数运行速度超过了我一千倍,充分展现了算法的魅力,让我无力追赶
赶上我是困难的,但是如果你采用AGM算法,可轻松提速10倍以上。使用AGM计算对数并不困难,算法也很简单。
关于AGM法计算对数,请参阅 http://calc.ac.cn/2017/12/25/agm_estimate/

zeroieme 发表于 2017-12-28 23:59:26

liangbch 发表于 2017-12-28 23:35
赶上我是困难的,但是如果你采用AGM算法,可轻松提速10倍以上。使用AGM计算对数并不困难,算法也很简单。 ...

我做过AGM,但把握不了要求精度与过程精度的关系。如每轮算术几何平均要保留多少位才能保证100位精度。

gxqcn 发表于 2017-12-29 08:27:02

恭喜楼主!
任意精度的浮点计算,不仅需要核心的大数算法支持,还需在中间过程中采用恰到好处的临时精度,这些都是很大的学问。
并且,咱们要比就与知名的比!与一流的比!且丝毫不逊色,甚至还有反超!

大数算法要追求极致,必须充分发挥软硬件的性能,当然算法原理还是第一位的,很是磨人,但也可在逐渐提升中获得成就感。
因最近几年工作较忙,我的大数开发几乎处于暂停状态。
好消息是,刚刚公司给我配了台笔记本,可以抛弃之前台式机的老掉牙的XP系统了,
我将先慢慢熟悉64位系统下的编程,而后利用闲暇时间开发特定算法。
另一个好消息则是,随着C++11及更高标准的出台,用C++写代码越来越是一种享受了。

mathe 发表于 2017-12-29 10:14:29

恭喜,是不是要准备发表个文章?
页: 1 [2] 3 4 5 6 7
查看完整版本: 重大消息-一种新的任意精度对数算法研制成功