foxpi

๐ŸฆŠ FoxPi

High-precision terminal ฯ€ explorer โ€” Chudnovsky, Ramanujan, Machin, and BBP spigot algorithms.

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


๐Ÿ“‹ Table of Contents


Installation

Requirements

FoxPi requires:

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]
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


Contributing

Contributions are welcome. Suggested areas:

  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. ๐ŸฆŠ