Skip to main content

🦊 FoxPi

High-precision terminal π explorer — Chudnovsky, Ramanujan, Machin, and BBP spigot algorithms.

More about me / other projects: abhrankan.netlify.app

Python License PyPI Algorithms Precision

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

Requirements

FoxPi requires:

  • Python 3.8 or newer
  • pip for 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 compare command uses a fixed 1000-digit workload, and only covers Chudnovsky and Machin (see compare above).
  • 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
  1. Fork the repository
  2. Create a feature branch
  3. Add tests where appropriate
  4. Open a pull request

License

FoxPi is released under the MIT License.

Copyright © 2026 Fox Hackerz

See LICENSE for the full text.


Links


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)

Source distribution for foxpi 0.1.5
File Size Uploaded
foxpi-0.1.5.tar.gz 14.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for foxpi 0.1.5
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page