Metadata-Version: 2.1
Name: pigen
Version: 0.1.4
Summary: A collection of Pi generators.
Home-page: https://github.com/stkterry/pigen
Author: Steven K Terry
Author-email: stkterry@gmail.com
License: MIT license
Keywords: pigen
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.5
Description-Content-Type: text/x-rst
Requires-Dist: Click (>=7.0)
Requires-Dist: gmpy2 (>=2.0.8)
Requires-Dist: mock (>=3)

===================================================
PiGen : Generators For Digits of Pi
===================================================


.. image:: https://img.shields.io/pypi/v/pigen.svg
        :target: https://pypi.python.org/pypi/pigen

.. image:: https://img.shields.io/travis/stkterry/pigen.svg
        :target: https://travis-ci.com/stkterry/pigen

.. image:: https://readthedocs.org/projects/pigen/badge/?version=latest
        :target: https://pigen.readthedocs.io/en/latest/?badge=latest
        :alt: Documentation Status


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

.. code-block:: python

  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.

.. code-block:: python

  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.

.. code-block:: python

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

Other
-----
* Free software: MIT license

* 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.


