JSFiddle - React, Tailwind, and code Playground
by fordcars
HTML
<h1>Calculate Pi using the Nilakantha series</h1>
<input type="text" id="inputTextId" value="Enter the amount of loops to calculate"></input>
<button id="calculateButId">Calculate Pi!</button>
<p id="outputTimeId">Time eclapsed</p>
<p id="outputPiId">Pi Output</p>
JavaScript
var inputText;
var calculateBut;
var outputTime;
var outputPi;
function start()
{
inputText = document.getElementById("inputTextId");
calculateBut = document.getElementById("calculateButId");
outputTime = document.getElementById("outputTimeId");
outputPi = document.getElementById("outputPiId");
calculateBut.addEventListener("click", calculatePi, false);
}
start();
function calculatePi() // Based on https://cs.uwaterloo.ca/~alopez-o/math-faq/mathtext/node12.html
{
var timeBeforeCalculation = (new Date()).getTime();
var timeAfterCalculation;
var calculatedPi = 3;
var amountOfLoops = inputText.value;
var isAnAddition = true;
var iTimes2 = 0;
for(i=1;i<=amountOfLoops;i++)
{
iTimes2 = i*2;
if(isAnAddition)
{
isAnAddition = false;
calculatedPi = calculatedPi + 4/(iTimes2*(iTimes2+1)*(iTimes2+2));
} else
{
isAnAddition = true;
calculatedPi = calculatedPi - 4/(iTimes2*(iTimes2+1)*(iTimes2+2));
}
}
timeAfterCalculation = (new Date()).getTime();
postOutput(calculatedPi, timeAfterCalculation-timeBeforeCalculation);
}
function postOutput(piToPost, timeToPost)
{
outputTime.innerHTML = timeToPost + " ms";
outputPi.innerHTML = piToPost;
}