Calculate PI
by SHELDON PASCIAK
HTML
<script src="http://cdn.jsdelivr.net/bignumber.js/1.1.0/bignumber.min.js"></script>
JavaScript
/*jslint maxerr: 50, indent: 4, browser: true, white: true, devel: true */
/*global BigNumber */
(function() {
"use strict";
function pi(digits) {
digits = Math.floor(digits);
var config = BigNumber.config(),
previousConfig = {},
k = 0,
prop,
sum,
ta,
tb,
divisor,
a,
b;
for (prop in config) {
if (config.hasOwnProperty(prop)) {
previousConfig[prop] = config[prop];
}
}
BigNumber.config({
DECIMAL_PLACES : digits,
ROUNDING_MODE : 4,
EXPONENTIAL_AT : [-7, 20],
RANGE : [-1000000000, 1000000000],
ERRORS : true
});
sum = new BigNumber(0);
a = ta = new BigNumber(16).div(5);
b = tb = new BigNumber(-4).div(239);
while (!a.equals(b)) {
divisor = 2 * k + 1;
a = ta.div(divisor);
b = tb.div(divisor);
sum = sum.plus(a).plus(b);
ta = ta.neg().div(25);
tb = tb.neg().div(57121);
k += 1;
}
for (prop in previousConfig) {
if (previousConfig.hasOwnProperty(prop)) {
config[prop] = previousConfig[prop];
}
}
return sum;
}
console.log(pi(200).toString());
}());