{
const output = [];
let state = {
n: 3,
results: []
};
for (var i = 0; i < 4; ++i) {
nativeJavaScript(state);
output.push(state.results[i + 2]);
}
function nativeJavaScript(state) {
const n = state.n;
state.results[0] = 1 / 6;
state.results[1] = -1 / 30;
let k = n - 2;
let denom = 2;
let accumulatingFraction = (2 * n) / denom;
let accumulatingTotal = 0;
accumulatingTotal += -(2 * n - 1) / (2 * n + 1) / 2;
accumulatingTotal += accumulatingFraction * state.results[0];
let numerator = 2 * n;
let indexToResult = 1;
do {
accumulatingFraction *= (numerator - 1) / (denom + 1);
accumulatingFraction *= (numerator - 2) / (denom + 2);
accumulatingTotal += accumulatingFraction * state.results[indexToResult];
numerator -= 2;
denom += 2;
++indexToResult;
} while (--k > 0);
state.results[indexToResult] = -accumulatingTotal;
state.n++;
}
return output;
}