Python. Невысокоточное исчисление числа Пи

Написал подобный код по вычислению числа пи по алгоритму Гаусса-Лежандра, отлично работает в пределах float значений, т.е. до числа 79 с 13 знака после запятой. В чём заключается проблема, и можно ли каким-либо образом использовать Decimal не для каждого значения каждый раз? Немного перебрал с ним, написав его в каждое место.

from decimal import *;
a=Decimal(1)
b=Decimal(1/math.sqrt(2))
t=Decimal(1/4)
p=Decimal(1)
an=Decimal(1);
start=time.time()
getcontext().prec = 1000
for i in range(2000):
    a=Decimal(an)
    an=(Decimal(a)+Decimal(b))/Decimal(2)
    b=Decimal(math.sqrt(Decimal(a)*Decimal(b)))
    t=Decimal(t)-Decimal(p)*(Decimal(a)-Decimal(an))**Decimal(2)
    p=Decimal(2)*Decimal(p)
    pii=Decimal(((Decimal(a)+Decimal(b))**Decimal(2))/(Decimal(4)*Decimal(t)))
print(Decimal(pii))
print('Time elapsed: {0} ms.'.format(time.time()-start))

Ответы (0 шт):