数学研发论坛

 找回密码
 欢迎注册
查看: 4644|回复: 14

[分享] 高精度计算圆周率程序

[复制链接]
发表于 2018-6-12 06:51:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?欢迎注册

x
我感觉我已经圆满了。
我从上大学开始就一直在搞这个高精度计算库,现在我把它叫做 ilmp,以前不是这个名字。
这个库,见证了我从学习vb语言,到C++,到C,到汇编的历程。
它从内部用10进制,到10000进制,到1亿进制,再到2^64进制……
从算六千万位数的乘法要五百秒,到100秒,40秒,13秒,7秒,最后是2.5秒……
从代码垃圾得不能看,到现在已经有了相当的自解释能力……
陪我走过四年,如今我也要毕业了。终于可以说,有一个不错的结果了。

我在这里分享一堆源码和一个程序,这些源码是两年前的 ilmp 版本,在 VS 上可以直接编译算圆周率,百万位带输出大概2.5秒左右,这速度不是很快。
里面的 SSA 算法的部分是我下最大精力的部分。直到现在的 ilmp 里,关于SSA的源码基本都是从这拷过来的。

而程序是用现在的 ilmp 版本写的,用来算圆周率。单线程百万位带输出 0.47 秒,我对这个速度很满意了。
如此大的加速,主要来自于
1.汇编过程的手工循环展开,这几乎把所有过程加速100%。
2.写了更多汇编和C的整数除法过程,除法加速了300%以上。
3.快速的 Integer 类,与支持浮点的 Number 类不同,Integer 在每次计算时尽量在原内存上计算,减少 new/delete 的次数。
new和delete 对性能影响很严重,在算圆周率时能让性能折半,而在对小数据计算时甚至会拖慢程序 30 倍。

旧版 ilmp 的代码:
链接:https://pan.baidu.com/s/1oLq_ajiHZ7j6p6014w4dOQ 密码:fqzm

基于新版 ilmp 的圆周率计算器:
https://pan.baidu.com/s/1oWAfzq7TRy2x8-MXZq_yPQ



补充内容 (2022-8-25 04:55):
旧版代码可见9楼,新版程序可见 https://bbs.emath.ac.cn/thread-9477-1-1.html

1M,0.47秒

1M,0.47秒

10M,7.46秒

10M,7.46秒

100M,118秒

100M,118秒

1G,27分16秒

1G,27分16秒

1G的最后几位

1G的最后几位
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-6-12 09:06:16 | 显示全部楼层
才打开一亿位的就死机了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-6-15 03:40:38 | 显示全部楼层
图片中1399个数字是不是有问题……
“77”出现了(第3行2次,第6行2次,第9-14行1次,倒数第六行一次)
肉眼看见了11次
pi一般会认为是一个正规数,也就是00-99出现频率大致相同
77出现的频率是不是太高点了?

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-6-19 18:04:56 | 显示全部楼层
确实很快,赞一个。能做到这个需要超强的毅力和坚持。
目前工作比较忙。任意精度快速算法,暂时放下了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-8-31 14:55:35 | 显示全部楼层
.·.·. 发表于 2018-6-15 03:40
图片中1399个数字是不是有问题……
“77”出现了(第3行2次,第6行2次,第9-14行1次,倒数第六行一次)
...

这计算圆周率的,还与你使用什么样的算法有关系吧。
不过我没耐心做这个,我只会用mathematica
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-10-1 08:22:47 | 显示全部楼层
你的 ilmp 可以在VB中用吗?我VB懂得多一点。用API的形式 或者 VB类库的形式都行,有这样的方式吗?

另外下载链接都已经过期了,下不了了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-11-27 10:18:32 | 显示全部楼层
这个,计算圆周率的似乎http://www.numberworld.org/y-cruncher/   用这个更快,不过软件是你的个人作品,比我强太多了,我只会写简单程序
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2022-7-31 17:23:50 | 显示全部楼层
链接无法下载了

点评

已补。  发表于 2022-8-25 04:56
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2022-8-25 04:54:32 | 显示全部楼层
补个档,这是1楼所说的旧版ilmp代码
旧版ilmp代码.zip (50.91 KB, 下载次数: 0)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2022-10-2 17:02 , Processed in 0.082365 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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