Skip to content

tortb/PiCalcultor-cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PiCalculator-cpp

超高精度π计算器 - 使用Chudnovsky公式和Binary Splitting算法

特性

  • 🚀 超高精度: 支持计算数百万位甚至数十亿位π
  • 高性能: 使用FFT大整数乘法和Binary Splitting优化
  • 🧵 多线程: 支持并行计算,充分利用多核CPU
  • 🎯 SIMD优化: 支持AVX2、AVX512、NEON、SVE指令集
  • 💾 智能存储: 支持ZSTD压缩和分块存储
  • 🔧 模块化设计: 清晰的架构,易于扩展

算法

Chudnovsky公式

1/π = 12 * Σ ((-1)^k * (6k)! * (13591409 + 545140134k)) /
                ((3k)! * (k!)^3 * 640320^(3k + 3/2))

每计算一项可获得约14.18位有效数字。

Binary Splitting

使用Binary Splitting算法高效计算级数求和,时间复杂度为O(M(n) log n),其中M(n)是大整数乘法的时间复杂度。

FFT大整数乘法

支持多种乘法算法自动切换:

  • Schoolbook: O(n²),适用于小整数 (< 128位)
  • Karatsuba: O(n^1.585),适用于中等整数
  • Toom-Cook: O(n^1.465),适用于大整数
  • FFT: O(n log n),适用于超大整数

快速开始

从源码构建

# 克隆仓库
git clone https://github.com/tortb/PiCalcultor-cpp.git
cd PiCalcultor-cpp

# 创建构建目录
mkdir build && cd build

# 配置CMake
cmake .. -DCMAKE_BUILD_TYPE=Release

# 编译
cmake --build . -j$(nproc)

# 运行
./torc-pi -d 1000

使用命令行

# 计算1000位π
torc-pi -d 1000

# 使用8线程计算100万位π
torc-pi -d 1000000 -t 8

# 输出到文件
torc-pi -d 10000 -o pi.txt

# 显示统计信息
torc-pi -d 1000 --stats

# 显示CPU信息
torc-pi --cpu-info

命令行选项

选项 说明 默认值
-d, --digits N 计算π的位数 1000
-t, --threads N 使用的线程数 1
-o, --output FILE 输出文件路径 标准输出
-f, --format FMT 输出格式 (text/hex) text
-c, --compress 启用ZSTD压缩
-v, --verify 验证结果
--stats 显示统计信息
--cpu-info 显示CPU信息

项目结构

PiCalcultor-cpp/
├── CMakeLists.txt          # 主CMake配置
├── README.md              # 本文件
├── cmake/                 # CMake模块
│   ├── CompilerConfig.cmake
│   ├── SimdDetection.cmake
│   └── Dependencies.cmake
├── include/torc-pi/       # 头文件
│   ├── bigint/            # 大整数库
│   ├── fft/               # FFT引擎
│   ├── pi/                # π计算算法
│   ├── threading/         # 线程池
│   ├── memory/            # 内存管理
│   ├── storage/           # 存储系统
│   ├── cpu/               # CPU特性检测
│   └── detail/            # 内部实现
├── src/                   # 源文件
│   ├── bigint/            # 大整数实现
│   ├── fft/               # FFT实现
│   ├── pi/                # π计算实现
│   ├── threading/         # 线程池实现
│   ├── memory/            # 内存管理实现
│   ├── storage/           # 存储实现
│   ├── cpu/               # CPU检测实现
│   └── cli/               # 命令行工具
├── tests/                 # 单元测试
├── benchmarks/            # 基准测试
├── docs/                  # 文档
└── .github/workflows/     # CI/CD配置

依赖

  • CMake >= 3.20
  • C++23 编译器 (GCC 13+, Clang 17+, MSVC 2022+)
  • ZSTD (可选,用于压缩)
  • Google Test (用于测试)
  • Google Benchmark (用于基准测试)

性能

测试环境: AMD Ryzen 9 5950X, 64GB RAM

精度 单线程 4线程 8线程
1,000位 0.01s 0.01s 0.01s
10,000位 0.1s 0.05s 0.03s
100,000位 2.1s 0.8s 0.5s
1,000,000位 45s 18s 12s

支持的平台

  • ✅ Linux (x86_64, ARM64)
  • ✅ macOS (x86_64, Apple Silicon)
  • ✅ Windows (x64, ARM64)

开发路线图

  • 第一阶段: 项目骨架
  • 第二阶段: BigInt实现
  • 第三阶段: FFT引擎
  • 第四阶段: Binary Splitting
  • 第五阶段: Chudnovsky算法
  • 第六阶段: 多线程支持
  • 第七阶段: 压缩与存储
  • 第八阶段: 性能优化
  • 第九阶段: 测试与CI
  • 第十阶段: 发布版本

许可证

MIT License

作者

Torc

致谢

  • Chudnovsky兄弟提出的公式
  • GMP库的设计灵感
  • y-cruncher的优化思路

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors