On Jan 9, 11:31 am, "Richard D. Moores" <rdmoo...@gmail.com> wrote:
> Machin's Equation is
>
> 4 arctan (1/5) - arctan(1/239) = pi/4
> [...]
>
> Is there a way in Python 3.1 to calculate pi to greater accuracy using
> Machin's Equation? Even to an arbitrary number of places?

Here's some crude code (no error bounds,  possibility of infinite
loops, ...) that computes pi to 1000 places using Machin's formula and
the decimal module.  The last few digits will be bogus, and should be
ignored.

from decimal import Decimal, getcontext

def atan(x):
    # reductions
    reductions = 0
    while 100*abs(x) > 1:
        reductions += 1
        x /= 1 + (1+x*x).sqrt()

    # Taylor series
    sum = 0
    xpow = x
    x2 = x*x
    k = 1
    while True:
        term = xpow/k
        oldsum = sum
        sum += term
        if sum == oldsum:
            break
        k += 2
        xpow *= -x2

    return sum * 2**reductions

getcontext().prec = 1000
one = Decimal(1)
print(16*atan(one/5) - 4*atan(one/239))
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to