🦊 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 | Provenance | |
|---|---|---|---|---|
| foxpi-0.1.5.tar.gz | 14.7 kB | Without provenance | 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
|
Security for foxpi 0.1.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.