🦊 FoxPi
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.
✨ Features
- 🧮 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
📋 Table of Contents
- Installation
- Quick Start
- CLI Reference
- Algorithms
- Precision and Implementation
- Testing
- Project Structure
- Development
- Performance
- Limitations
- Contributing
- License
Installation
Requirements
FoxPi requires:
- Python 3.8 or newer
pipfor optional editable/package installation
The project declares no runtime third-party dependencies.
Clone the repository
git clone https://github.com/foxhackerzdevs/foxpi.git
cd foxpi
Run directly
python cli.py digits 100
Example output:
π (100 digits) using Chudnovsky:
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Time: 0.00xxs
Install the CLI
Install from PyPI
python3 -m pip install foxpi
foxpi digits 100
Install from Source
git clone https://github.com/foxhackerzdevs/foxpi.git
cd foxpi
python -m pip install -e .
Current version: 0.1.4
Quick Start
# 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 100
CLI Reference
FoxPi exposes four commands:
foxpi
├── digits
├── explore
├── compare
└── bbp
digits
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 |
Examples
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 machin
Negative digit counts are rejected.
explore
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 10
compare
Benchmark Chudnovsky and Machin at 1000 decimal digits.
python cli.py compare
bbp
Extract 16 hexadecimal digits of π starting at a given position.
python cli.py bbp POSITION
POSITION=1 is the first hexadecimal digit after the point.
python cli.py bbp 1
python cli.py bbp 25
python cli.py bbp 100
Algorithms
| Algorithm | Output | Primary purpose |
|---|---|---|
| Chudnovsky | Decimal | High-precision computation |
| Ramanujan | Decimal | Rapid convergence / exploration |
| Machin | Decimal | Classical formula / comparison |
| BBP | Hexadecimal | Direct digit extraction |
Chudnovsky
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 chudnovsky
Ramanujan
Ramanujan’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 20
Machin
Classical Machin formula:
π = 4 × (4 arctan(1/5) − arctan(1/239))
python cli.py digits 500 --method machin
BBP hexadecimal spigot
Bailey–Borwein–Plouffe formula allowing direct extraction of hexadecimal digits without computing preceding ones.
python cli.py bbp 1
# → 243F6A8885A308D3
Precision and Implementation
FoxPi 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.
Testing
python -m unittest discover -s tests -v
Tests verify results against independently generated reference digits (mpmath, 250 decimal digits of working precision).
Project Structure
foxpi/
├── core/
│ ├── algorithms.py
│ └── visualize.py
├── tests/
│ ├── test_algorithms.py
│ └── test_cli.py
├── .gitignore
├── LICENSE
├── README.md
├── cli.py
└── pyproject.toml
Development
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 --help
Performance
Chudnovsky 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.
Limitations
- 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.
Contributing
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
License
FoxPi is released under the MIT License.
Copyright © 2026 Fox Hackerz
See LICENSE for the full text.
Links
- 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. 🦊
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file foxpi-0.1.4.tar.gz.
File metadata
- Download URL: foxpi-0.1.4.tar.gz
- Upload date:
- Size: 13.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f93cd60ff200d1d0aa2541c9ee0715a067144a857335c2e147209d766374515f
|
|
| MD5 |
f8e177aad0f2f4141c03b8ea88c1fd24
|
|
| BLAKE2b-256 |
4090436015ee55b7a4ab87eec309ab6e8e7a75b13737455fe0128a1675c9ea85
|
File details
Details for the file foxpi-0.1.4-py3-none-any.whl.
File metadata
- Download URL: foxpi-0.1.4-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0aad1dd061baf36bbf8641cde7c9366bc7fbfc4a1ce6c0f11d2ce2c1d307b450
|
|
| MD5 |
13b13d53c0c90d08fb86d9d2f9805243
|
|
| BLAKE2b-256 |
c3adcb107c65c555795840d3053cdd6a7e83cfd14cd4c1f22fabc24fb6dea807
|