擂台:超大整数高精度快速算法(续2)
本人在业余时间开发了一套"超大整数完全精度快速算法库"HugeCalc,
支持任意不同进制下快速相互转换,
还可完成超大整数数组的最大公约数,最小公倍数等数论运算,
现在,该套软件已被华军,天空,电脑之家,天天等下载站点收录.
该算法库采用标准 C++ 开发,未调用任何算法库,
虽然未针对硬件作任何相应的特殊汇编优化,但其速度已非常快!
其最核心的乘法算法现已优于当前的 apfloat,Mathematica,Maple,甚至 GMP!
HugeCalc 仅需 2.562s,可立即输出结果;
所以特借这块宝地广泛征集类似算法或软件,以期达到相互促进的目的.
2,声明 设此擂台的目的是为了相互促进,而非争强斗胜(其实我的计算机水平非常有限,只是比较充分地运用了数学知识而已);
3,算法或软件不限于自身原创,欢迎提供第三方链接信息,谢谢!
4,并不要求所有功能均须强于我现有的软件,有一两项也请及时告诉我,谢谢!
5,特别欢迎各种算法的讨论,本人也将在适当的时机整理出一些核心算法,以便与大家交流;
6,为了在交流中完善该软件,现决定免费公开 HugeCalc.dll 的所有接口文件!大家可以更自由地调用 HugeCalc!
HugeCalc Ver3.0.2.1(beta 版;10月18日将正式发布),已含所有公共接口文件:
(主页服务器不太稳定,有时很难下载;可直接与我联系 )
但其速度完全可与大型专业数学工具软件媲美!
谢谢你的关注,我意指32K digitals,实际是64K digitals
希望能互相交流,我的QQ249156409请注册CSDN
⊙ 新增16进制算法系统(可与原10进制算法系统灵活转换)
⊙ 改写了部分核心算法,解掉几处小bug
它含有两套进制系统,各有 A,B,C,D,E,F 六个变量,它们是相互对立的,这点必须注意.
另,现在对应的帮助文件正在编写中,压缩包中的 HugeCalc.chm 仍为旧版 HugeCalc V4.0.0.0 的,请不要被误导;同时停止办理对 HugeCalc V4.0.0.0 的(免费)注册.
HugeCalc V5.0.0.1 实现了许多突破,其正式版本最迟可于2005年6月初面世,敬请关注!
如果您发现问题,或有好的建议,请及时反馈,谢谢!
由于本贴已限制楼主回复(30条所限),所以本人将于"5.1"长假后一周内关闭本贴.
并将视大家对该话题的感兴趣程度决定是否开新贴继续讨论.
祝各位五一快乐!
另,由于我家上网不方便,所以对网友的回复都将在长假结束后进行,请见谅!
轮到俺上场,就意味着该话题到了不得已而结贴的地步了.
很高兴能看到有类似功能的软件问世.愿我们可以相互交流,共同促进.
但我不太明白你说的"32K长度的双数相乘"的确切意义,是指32K bits?还是32K digitals(即我们通常数学意义上的位)?又或是你内部数据结构中需要32K个内存单元存储的数?32K是乘数及被乘数的大小,还是积的大小?
注:之所以选择用 Fibonacci 数列测试,是因为其尾部不会产生大片的连续"0"(如果出现这种情况,乘法可优化,使测试"缩水"),且大家容易得到.
程序没有调用汇编指令,因此可以轻易移值到其它OS环境中.经测试,32K长度的双数相乘,大约耗时1~2秒.(P2.4G 512RAM)
我已经写好了一套超大整数(长度不受限制)的基本运算库,但除法运算有些问题.望楼主能告之除法运算原理,谢谢先!
我也来凑凑热闹,写了一个阶乘的算法,由于数学知识欠缺,未作数学上的优化,只是在代码上下了一些功夫,速度也还可以了,10000!1.3s,没有上限,需要代码的朋友可以留下MAIL,交流交流!
我将对算法作数学上的优化,争取能够快一些,向楼主学习!
该 bug 是由中国科学技术大学的一位同学在科研中用 HugeCalc 发现的,我已更正,请大家及时更新.
我正在开发下一版 HugeCalc,在保留现有的10进制的 CHugeInt 基础上,将新增16进制版本 CHugeIntX(暂用名),并新增与,或,异或等逻辑运算;同时改写内部核心算法,预计速度将会再次提高.
请大家对新版本的期望和建议反馈给我,以使新版本开发更完善,谢谢!
正如你的"很可惜,我用的linux平台,无法做些测试工作了",我在 windows 平台,无法测试 GMP,所以不好对比.
曾有人说 Maple 用的是 GMP 的内核,所以我才与 Maple 进行比较.
回应你上面作的测试,我给个GMP的数据:
我还是GMP 的支持者,
如果GMP 比Hugecalc快,又开放源码,支持多平台,
而且没有开放源码,很可惜,我用的linux平台,无法做些测试工作了,
就目前我对GMP 大数乘法的了解,他的速度已经相当的不错了,
除了些特别的情况比如两个数位数相差特别大等等.
所以,如果条件允许,我倒是愿意看看楼主的算法(我主要是关心大数相乘)
如果有谁作过和gmp的详细比较,不妨帖出来看看.
很高兴,还有不少人对该问题感兴趣,在关注本话题.
下面介绍一下我自己近来的一些进展:对程序进一步进行了一些优化,某些模块甚至提高了数十倍效率;还有大量的对比实验去做(有时候算法研究,不仅仅是理论推导,也需要一些特定的测试实验).而这所有的一切,我只能在有限的业余时间进行;同时初为人父的我,还必须尽一个父亲的责任和义务,所以版本的升级更新相对会放迟缓一些了.
但关于高精度快速算法的研究,我仍会继续,并关注各位网友的反馈,如果大家有任何建议和问题,请访问如下链接(因为我会经常去浏览的):
这个帖现在还在讨论啊,难得!我好久前就看到过了,确实有几位高手在,俺刚来csdn混的时候就知道mathe这个人经常发帖,数学比较强的人!