🦊 FoxPi
High-precision terminal π explorer — Chudnovsky, Ramanujan, Machin, and BBP spigot algorithms.
More about me / other projects: abhrankan.netlify.app
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.5
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.
(Ramanujan and BBP aren't included in compare — Ramanujan is geared toward explore's term-by-term convergence view rather than a timed benchmark, and BBP's hex-digit extraction isn't directly comparable to the other three's decimal-digit timing.)
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, and only covers Chudnovsky and Machin (seecompareabove). - Convergence exploration (
explore) intentionally recomputes for visualization and is not optimized for speed. Its internal precision scales with--terms(roughly 15 digits of working precision per requested term) so the requested term count is actually reached rather than silently falling short.
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. 🦊
Metadata
Release files for foxpi 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| foxpi-0.1.5.tar.gz | 14.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| foxpi-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 25.7 kB
Release files / foxpi-0.1.5.tar.gz
| Download URL | foxpi-0.1.5.tar.gz |
|---|---|
| Size | 14.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d5e0c7024591e1e6e2ed0c19460e0ca860627eb673bab87c921da3bcaaff0289
|
|
BLAKE2b-256 checksum How to use checksums |
6a65faa98207e3336c273d52c82a52eb4f8874b496880d71585340a1dfc32bd0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / foxpi-0.1.5-py3-none-any.whl
| Download URL | foxpi-0.1.5-py3-none-any.whl |
|---|---|
| Size | 11.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7f6c4569f80c8a847cf9bb394513bf20760fbfb9d9d9030153ead056995bc13f
|
|
BLAKE2b-256 checksum How to use checksums |
d439268319efe8e2dbcb1f9dd681b0d77e8514c9025939286672c37fbc0e75a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|