A collection of Pi generators.

PiGen : Generators For Digits of Pi

Overview

A small collection of generators and functions for digits of pi. Maybe you’ve an art or math project and need to generate a few thousand to a few million digits of pi? This will help with that.

Generators

Spigot’s Algorithm | pigen.spigot_pi

• spigot_pi is a generator function.

• Useful when you only need a single digit at a time.

• Not as fast as frac_pi but a classic…

from pigen import spigot_pi as spi

pi_gen = spi()
for _ in range(100): # Let's iterate through the first 100 digits of pi.
digit = next(pi_gen)
# do something with digit

Fractional Continuation | pigen.frac_pi

• frac_pi is a generator function.

• Useful when you only need a single digit at a time.

• Fastest single digit generator currently in the package.

• You can pass your own lambda functions for other well behaved irrational numbers!

• You can specify the base for output as well, i.e., decimal, hex, etc.

from pigen import frac_pi as fpi

pi_gen = fpi()
for _ in range(100): # Let's iterate through the first 100 digits of pi.
digit = next(pi_gen)
# do something with digit

# We can pass lambdas to get different transcendental numbers.
# The golden ratio
phi_gen = fpi(lambda a: 1, lambda b: 1, base=10)
for _ in range(1000): # Let's iterate through the first 1000 digits of phi.
digit = next(phi_gen)
# do something with digit

Chudnovsky’s Binary Search | pigen.chudnovsky_pi

• chudnovsky_pi is a regular function.

• Useful if you need many digits at once.

• The absolute fastest across the board. If you need a million

• digits or more, this has got you covered.

• You need only pass the number of digits you’d like to generate.

• Makes heavy use of gmpy2 and the associated libs. Very fast but you may need to install other platform specific dependencies.

from pigen import chudnovsky_pi as cpibs
n = 1000000
n_pi_digits = cpi(n) # An integer n digits long containing digits of pi

• TODO

• CLI

• Examples

Credits

• The Chudnovsky’s BS Algorithm was pulled and updated from an example by Nick Craig-Wood.

History

0.1.2 (2020-01-27)

• First release on PyPI.

• Completely removed slower Chudnovsky function. It didn’t generate the correct sequence.

Project details

Uploaded source
Uploaded py2 py3