Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Chudnovsky algorithm for Pi
- # https://en.wikipedia.org/wiki/Chudnovsky_algorithm
- # Juhani Kaukoranta 14.6.2022
- from decimal import Decimal, getcontext
- import time
- def PI(maxK, prec, digits):
- # maxK iterations, prec precision, digits decimals
- getcontext().prec = prec
- K, M, L, X, S = 6, 1, 13591409, 1, 13591409
- for k in range(1, maxK+1):
- M = (K**3 - 16*K) * M // k**3
- L += 545140134
- X *= Decimal(-262537412640768000)
- S += Decimal(M * L) / X
- K += 12
- pi = 426880 * Decimal(10005).sqrt() / S
- pi = Decimal(str(pi)[:digits+2]) # show only decimals
- return pi
- digits = int(input("How many decimal digits in Pi "))
- maxK = int(digits*0.071)+2 # iterations
- prec =digits+8 # internal computing precision
- time0 = time.perf_counter()
- Pi = PI(maxK,prec,digits)
- time1 = time.perf_counter()
- print("computing and printing time ",time1-time0," seconds")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement