High-precision π explorer and mathematical visualization toolkit for the command line.
FoxPi is a Python-based CLI application for computing and exploring the digits of π using several famous algorithms. It provides fast high-precision computation, convergence visualization, benchmarking tools, and hexadecimal digit extraction via the Bailey–Borwein–Plouffe (BBP) formula.
Multiple computation algorithms:
foxpi/
│
├── cli.py # Command-line interface
└── core/
├── algorithms.py # Mathematical algorithms
└── visualize.py # CLI visualization utilities
Clone the repository:
git clone <repository-url>
cd foxpi
Python 3.9+ is recommended.
No external packages are required.
Run with a subcommand:
python cli.py digits 100
python cli.py alone (with no subcommand) prints usage and exits with an error — a subcommand (digits, explore, compare, or bbp) is required.
or
python -m cli
Compute π using one of the supported algorithms.
python cli.py digits 1000
Specify the algorithm:
python cli.py digits 5000 --method chudnovsky
python cli.py digits 1000 --method ramanujan
python cli.py digits 1000 --method machin
Watch the approximation converge term by term.
python cli.py explore
Choose an algorithm:
python cli.py explore --method ramanujan
python cli.py explore --method chudnovsky
Limit the number of displayed terms:
python cli.py explore --terms 20
Benchmark the available implementations.
python cli.py compare
Current benchmark compares:
Retrieve hexadecimal digits beginning at a specified position without computing previous digits.
python cli.py bbp 1
Example:
python cli.py bbp 1000
Outputs the next 16 hexadecimal digits beginning at that position.
Uses
π = 4 × (4 arccot(5) − arccot(239))
Advantages:
Supports direct extraction of hexadecimal digits of π.
Unlike traditional algorithms, BBP allows accessing hexadecimal digits beginning at an arbitrary position without computing all preceding digits.
Compute 100 digits:
python cli.py digits 100
Compute 5000 digits using Chudnovsky:
python cli.py digits 5000 --method chudnovsky
Visualize convergence:
python cli.py explore --method chudnovsky --terms 15
Benchmark:
python cli.py compare
Extract hexadecimal digits:
python cli.py bbp 250
Only Python standard library modules are used:
No external dependencies are required.
There are currently no configuration files.
Precision and algorithm selection are controlled through command-line arguments.
Ensure the project directory structure matches the expected layout:
core/
algorithms.py
visualize.py
Very large digit counts require significant CPU time.
For best performance:
Higher requested precision naturally requires more computation time and memory due to large integer arithmetic.
Contributions are welcome.
Possible improvements include:
No license information was provided in the source files.
Consider adding a LICENSE file (for example MIT, Apache-2.0, or GPL-3.0) before publishing the project.