hrefspace

 找回密码
 立即注册
搜索
热搜: PHP PS 程序设计
查看: 364|回复: 8

高精度计算圆周率程序

[复制链接]

484

主题

491

帖子

1493

积分

大司空

Rank: 5Rank: 5

积分
1493
发表于 2023-9-25 19:18:48 | 显示全部楼层 |阅读模式
我感觉我已经圆满了。
我从上大学开始就一直在搞这个高精度计算库,现在我把它叫做 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




本帖子中包含更多资源

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

x
回复

使用道具 举报

0

主题

156

帖子

125

积分

关内侯

Rank: 2

积分
125
发表于 2023-9-25 19:19:34 | 显示全部楼层
才打开一亿位的就死机了
回复

使用道具 举报

0

主题

174

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-9-25 19:20:19 | 显示全部楼层
图片中1399个数字是不是有问题……
“77”出现了(第3行2次,第6行2次,第9-14行1次,倒数第六行一次)
肉眼看见了11次
pi一般会认为是一个正规数,也就是00-99出现频率大致相同
77出现的频率是不是太高点了?
回复

使用道具 举报

0

主题

185

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-9-25 19:20:47 | 显示全部楼层
确实很快,赞一个。能做到这个需要超强的毅力和坚持。
目前工作比较忙。任意精度快速算法,暂时放下了。
回复

使用道具 举报

0

主题

212

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-9-25 19:21:23 | 显示全部楼层
这计算圆周率的,还与你使用什么样的算法有关系吧。
不过我没耐心做这个,我只会用mathematica
回复

使用道具 举报

0

主题

185

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-9-25 19:21:30 | 显示全部楼层
你的 ilmp 可以在VB中用吗?我VB懂得多一点。用API的形式 或者 VB类库的形式都行,有这样的方式吗?

另外下载链接都已经过期了,下不了了。
回复

使用道具 举报

275

主题

454

帖子

1014

积分

大司空

Rank: 5Rank: 5

积分
1014
发表于 2023-9-25 19:21:56 | 显示全部楼层
这个,计算圆周率的似乎http://www.numberworld.org/y-cruncher/   用这个更快,不过软件是你的个人作品,比我强太多了,我只会写简单程序
回复

使用道具 举报

0

主题

179

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2023-9-25 19:22:34 | 显示全部楼层
链接无法下载了
回复

使用道具 举报

0

主题

171

帖子

36

积分

新手上路

Rank: 1

积分
36
发表于 2023-9-25 19:23:12 | 显示全部楼层
补个档,这是1楼所说的旧版ilmp代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|hrefspace

GMT+8, 2024-11-22 21:44 , Processed in 0.068709 second(s), 23 queries .

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

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