from decimal import Decimal, getcontext
getcontext().prec = 102# extra digits for rounding safetydefpi_chudnovsky():
# Chudnovsky algorithm — converges ~14 digits per term
C = 426880 * Decimal(10005).sqrt()
M, X, K, S = Decimal(1), Decimal(1), Decimal(6), Decimal(13591409)
for k inrange(1, 8):
M = M * (K**3 - 16*K) / (k**3)
X *= Decimal(-262537412640768000)
K += 12
S += M / X * (Decimal(13591409) + Decimal(545140134) * k)
return C / S
pi = pi_chudnovsky()
print(f"π = {str(pi)[:102]}") # 1 digit + dot + 100 decimals