Skip to content

# xem/miniPi

computing Pi with super short JS code
HTML Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information. .gitattributes .gitignore 1.html 1.min.html 2.html 2.min.html 3.damn.html 3.html 3.min.html README.md

# MiniPi

Mini Pi approximations in JS (WIP)

Gregory-Leibniz series:

π = (4/1) - (4/3) + (4/5) - (4/7) + (4/9) - (4/11) + (4/13) - (4/15) ...

(exponential and very inefficient: ~3h to get 6 decimals, ~18h to get 7 decimals, ...)

Nilakantha series:

π = 3 + (4/(2*3*4)) - (4/(4*5*6)) + (4/(6*7*8)) - ...

(exponential: computes 10+ decimals in a few seconds then it gets very long)

Machin formula:

π = 16*atan(1/5) - 4*atan(1/239)
with atan(x) = x - x^3/3 + x^5/5 - x^7/7...

which is equal to:

π = (16 * (1/5 ^ 1 / 1) - 4 * (1/239 ^ 1 / 1)) + (- 16 * (1/5 ^ 3 / 3) + 4 * (1/239 ^ 3 / 3)) + (16 * (1/5 ^ 5 / 5) - 4 * (1/239 ^ 5 / 5)) + (- 16 * (1/5 ^ 7 / 7) + 4 * (1/239 ^ 7 / 7)) ...

(linear! computes ~1,4 digit per iteration, inspired by http://stephenbrooks.org/misc/jspi/decimal_animated.html)

Other "simple" formulae to test maybe:

• π = x * sin(180 / x), in degrees, for x as big as possible
• π = 2 * (Arcsin(sqrt(1 - x^2)) + abs(Arcsin(x))), for x in [-1;1]
• π = (k_6 sqrt(k_3))/(S), where k_1 = 545140134; k_2 = 13591409; k_3 = 640320; k_4 = 100100025; k_5 = 327843840; k_6 = 53360; S = sum_(n = 0)^oo (-1)^n ((6n)!(k_2 + nk_1))/(n!^3(3n)!(8k_4k_5)^n)
• π = SUM (k=0 to infinity) 16^-k [ 4/(8k+1) - 2/(8k+4) - 1/(8k+5) - 1/(8k+6) ]. (Bailey, Borwein, Plouffe formula)
• π/2 = (2*2)/(1*3)*(4*4)/(3*5)*(6*6)/(5*7)... (Walli's formula)
• and many more!
You can’t perform that action at this time.