Advertisement
jukaukor

ChudnovskyPI.py

Jun 14th, 2022
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.91 KB | None | 0 0
  1. # Chudnovsky algorithm for Pi
  2. # https://en.wikipedia.org/wiki/Chudnovsky_algorithm
  3. # Juhani Kaukoranta 14.6.2022
  4. from decimal import Decimal, getcontext
  5. import time
  6. def PI(maxK, prec, digits):
  7. # maxK iterations, prec precision, digits decimals
  8. getcontext().prec = prec
  9. K, M, L, X, S = 6, 1, 13591409, 1, 13591409
  10. for k in range(1, maxK+1):
  11. M = (K**3 - 16*K) * M // k**3
  12. L += 545140134
  13. X *= Decimal(-262537412640768000)
  14. S += Decimal(M * L) / X
  15. K += 12
  16. pi = 426880 * Decimal(10005).sqrt() / S
  17. pi = Decimal(str(pi)[:digits+2]) # show only decimals
  18. return pi
  19. digits = int(input("How many decimal digits in Pi "))
  20. maxK = int(digits*0.071)+2 # iterations
  21. prec =digits+8 # internal computing precision
  22. time0 = time.perf_counter()
  23. Pi = PI(maxK,prec,digits)
  24. time1 = time.perf_counter()
  25. print("computing and printing time ",time1-time0," seconds")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement