# Essays/Chudnovsky Algorithm

The Chudnovsky algorithm is a fast method for computing the digits of ${\displaystyle \pi }$. Each term of the series produces an additional 14 decimal digits.

${\displaystyle {\frac {1}{\pi }}=12\sum _{k=0}^{\infty }{\frac {(-1)^{k}(6k)!(13591409+545140134k)}{(3k)!(k!)^{3}640320^{3k+3/2}}}}$

To facilitate its implementation in J, we rewrite the formula so that the terms are rational.

${\displaystyle {\frac {1}{\pi }}={\frac {12}{640320^{1.5}}}\sum _{k=0}^{\infty }{\frac {(-1)^{k}(6k)!(13591409+545140134k)}{(3k)!(k!)^{3}640320^{3k}}}}$

pica=: 3 : 0
k  =. x: i. y
top=. (!6*k) * 13591409+545140134*k
bot=. (!3*k) * ((!k)^3) * 640320^3*k
rt =. -:@(+640320&%)^:(>.2^.1+y) x:%:640320   NB. sqrt 640320 to 14*y digits
% (12 % 640320*rt) * -/ top % bot
)


For example:

   0j100 ": pica 7
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170658
0j100 ": t %~ <.@o. t=. 10^100x
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679