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;
}