High-precision terminal π explorer — Chudnovsky, Ramanujan, Machin, and BBP spigot algorithms.
FoxPi is a pure-Python command-line toolkit for computing, exploring, benchmarking, and validating π using several classical and modern algorithms.
It supports arbitrary-precision decimal computation with Chudnovsky, Ramanujan, and Machin, plus direct hexadecimal digit extraction using the Bailey–Borwein–Plouffe (BBP) formula.
The implementation uses integer-scaled arithmetic and includes an independent test suite that checks computed decimal and hexadecimal digits against reference values rather than merely comparing algorithms against themselves.
- 🧮 Arbitrary-precision decimal computation of π
- ⚡ Chudnovsky computation with binary splitting
- 📜 Ramanujan's rapidly convergent hypergeometric series
- 📐 Classical Machin formula
- 🔢 BBP hexadecimal digit extraction
- 🔬 Term-by-term convergence exploration
- 📊 Built-in algorithm benchmarking
- 🧱 Integer-scaled arithmetic for high-precision calculations
- 🧪 Automated tests against independent reference digits
- 📦 Standard-library implementation with no runtime dependencies
- 🐍 Python package/CLI entry point via
pyproject.toml - 📄 MIT licensed
- Installation
- Quick Start
- CLI Reference
- Algorithms
- Precision and Implementation
- Testing
- Project Structure
- Development
- Performance
- Limitations
- Contributing
- License
FoxPi requires:
- Python 3.8 or newer
pipfor optional editable/package installation
The project declares no runtime third-party dependencies.
git clone https://github.com/foxhackerzdevs/foxpi.git
cd foxpipython cli.py digits 100Example output:
π (100 digits) using Chudnovsky:
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Time: 0.00xxs
python3 -m pip install foxpifoxpi digits 100git clone https://github.com/foxhackerzdevs/foxpi.git
cd foxpi
python -m pip install -e .Current version: 0.1.4
# Compute 100 digits
python cli.py digits 100
# Use a specific method
python cli.py digits 1000 --method chudnovsky
python cli.py digits 1000 --method ramanujan
python cli.py digits 1000 --method machin
# Explore convergence
python cli.py explore --method chudnovsky --terms 15
# Benchmark
python cli.py compare
# Extract hexadecimal digits
python cli.py bbp 100FoxPi exposes four commands:
foxpi
├── digits
├── explore
├── compare
└── bbp
Compute a requested number of decimal digits of π.
python cli.py digits COUNT [--method METHOD]| Argument | Description |
|---|---|
COUNT |
Number of decimal digits requested |
--method |
chudnovsky (default), ramanujan, or machin |
python cli.py digits 50
python cli.py digits 1000 --method chudnovsky
python cli.py digits 1000 --method ramanujan
python cli.py digits 1000 --method machinNegative digit counts are rejected.
Explore the convergence of the Ramanujan or Chudnovsky series.
python cli.py explore [--method METHOD] [--terms N]- Default method:
ramanujan - Default terms:
30
python cli.py explore
python cli.py explore --method ramanujan --terms 20
python cli.py explore --method chudnovsky --terms 10Benchmark Chudnovsky and Machin at 1000 decimal digits.
python cli.py compareExtract 16 hexadecimal digits of π starting at a given position.
python cli.py bbp POSITIONPOSITION=1 is the first hexadecimal digit after the point.
python cli.py bbp 1
python cli.py bbp 25
python cli.py bbp 100| Algorithm | Output | Primary purpose |
|---|---|---|
| Chudnovsky | Decimal | High-precision computation |
| Ramanujan | Decimal | Rapid convergence / exploration |
| Machin | Decimal | Classical formula / comparison |
| BBP | Hexadecimal | Direct digit extraction |
Binary-splitting implementation of the Chudnovsky series (~14 digits per term).
This is the default and recommended method for high-precision decimal computation.
python cli.py digits 10000 --method chudnovskyRamanujan’s 1914 hypergeometric series for 1/π:
1/π = (2√2 / 9801) × Σ [ (4k)! × (1103 + 26390k) / ((k!)⁴ × 396⁴ᵏ) ]
Excellent for studying rapid convergence.
python cli.py digits 1000 --method ramanujan
python cli.py explore --method ramanujan --terms 20Classical Machin formula:
π = 4 × (4 arctan(1/5) − arctan(1/239))
python cli.py digits 500 --method machinBailey–Borwein–Plouffe formula allowing direct extraction of hexadecimal digits without computing preceding ones.
python cli.py bbp 1
# → 243F6A8885A308D3FoxPi uses scaled-integer arithmetic with internal guard digits.
No third-party arbitrary-precision library is required at runtime.
A custom Newton–Raphson isqrt implementation is provided and covered by the test suite.
python -m unittest discover -s tests -vTests verify results against independently generated reference digits (mpmath, 250 decimal digits of working precision).
foxpi/
├── core/
│ ├── algorithms.py
│ └── visualize.py
├── tests/
│ ├── test_algorithms.py
│ └── test_cli.py
├── .gitignore
├── LICENSE
├── README.md
├── cli.py
└── pyproject.toml
git clone https://github.com/foxhackerzdevs/foxpi.git
cd foxpi
# Run directly
python cli.py --help
# Run tests
python -m unittest discover -s tests -v
# Editable install
python -m pip install -e .
foxpi --helpChudnovsky with binary splitting is the recommended high-performance path.
Use python cli.py compare for a quick local benchmark.
Performance depends on Python version, CPU, and requested precision.
- Extremely large precisions consume significant time and memory.
- BBP currently returns a fixed 16 hexadecimal digits.
- The
comparecommand uses a fixed 1000-digit workload. - Convergence exploration (
explore) intentionally recomputes for visualization and is not optimized for speed.
Contributions are welcome. Suggested areas:
- Additional algorithms
- Configurable BBP length
- Expanded benchmarks
- More tests
- Documentation improvements
- Fork the repository
- Create a feature branch
- Add tests where appropriate
- Open a pull request
FoxPi is released under the MIT License.
Copyright © 2026 Fox Hackerz
See LICENSE for the full text.
- GitHub: https://github.com/foxhackerzdevs/foxpi
- PyPI: https://pypi.org/project/foxpi/
- Homepage: https://foxhackerzdevs.github.io/foxpi/
Compute it. Explore it. Benchmark it. Verify it. 🦊