The Babylonian method is described in Wikipedia here:
Babylonian method.
The following image shows how each step of a revised value for the square root is calculated.
We calculate the square root of S by using an inital guess and then revise that step by adding that guess with S divided by the guess and dividing by 2. The revised value is then used again as the new guess value. We stop iterating when the margin of error is below a given treshold. In the calculus, x is the step guess value and e is the error.
We start the calculation sample by adding in Bootstrap CSS and jQuery.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script data-require="jquery@*" data-semver="3.1.1" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<link data-require="bootstrap-css@*" data-semver="4.0.0-alpha.4" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.4/css/bootstrap.min.css" />
</head>
<body>
<br />
<div class="container">
<h2>Find square root in JS with long division algorithm</h2>
<hr />
<!-- html code here -->
<h3>Estimate Square Root</h3> Enter Number:
<input id="num" value="700" size="2" type="text" />
<br />
<input id="submitButton" value="Calculate" type="submit" />
<br />
<br />
<div id="details"></div>
</div>
<script type="text/javascript">
"use strict";
var x = 25;
var guess = 9;
var marginOfError = 0.1;
var error = 0;
var counter = 0;
var htmlout = "";
$(document).ready(function() {
// function code goes here
function getGuess(g) {
console.log(g);
var newguess = (g + x / g) / 2;
return newguess;
}
$('#submitButton').click(function() {
// JavaScript code here
console.clear();
counter = 0;
x = parseFloat($('#num').val());
guess = Math.floor(Math.random() * x + 1);
error = Math.abs(guess * guess - x);
while (error >= marginOfError) {
guess = getGuess(guess)
error = Math.abs(guess * guess - x);
//console.log(guess);
counter += 1;
}
console.log('Count is ' + counter)
htmlout = "Square Root is " + guess.toFixed(2) + ". It took " + counter + " guesses";
$('#details').html(htmlout);
});
});
</script>
</body>
</html>
Let us clean up the code using classes in Ecmascript 6 (ES6) and use Traceur to support the ES6 syntax.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="https://google.github.io/traceur-compiler/bin/traceur.js"></script>
<script src="https://google.github.io/traceur-compiler/bin/BrowserSystem.js"></script>
<script src="https://google.github.io/traceur-compiler/src/bootstrap.js"></script>
<script data-require="jquery@*" data-semver="3.1.1" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<link data-require="bootstrap-css@*" data-semver="4.0.0-alpha.4" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.4/css/bootstrap.min.css" />
</head>
<body>
<br />
<div class="container">
<h2>Find square root in JS with long division algorithm</h2>
<hr />
<!-- html code here -->
<h3>Estimate Square Root</h3> Enter Number:
<input id="num" value="700" size="2" type="text" />
<br />
<input id="submitButton" value="Calculate" type="submit" />
<br />
<br />
<div id="details"></div>
</div>
<script type="text/javascript">
"use strict";
class BabylonianSquareRootSolver {
constructor(x_0, S, marginOfError = 0.1){
this.S = S;
this.x_0 = x_0;
this.marginOfError = marginOfError;
}
getRevisedSquareRoot (x_n, S){
var revisedValue = (x_n + (S/x_n)) / 2;
return revisedValue;
}
calculateSqrt(){
var counter = 0;
var error = 0;
var guess = this.x_0;
error = Math.abs(this.x_0 * this.x_0 - S);
while (error >= marginOfError) {
guess = this.getRevisedSquareRoot(guess, this.S)
error = Math.abs(guess * guess - this.S);
console.log(guess);
counter += 1;
if (counter > 10)
break;
}
var result = {
S : this.S,
error : error,
iterations : counter,
root : guess
};
return result;
}
}
var S = 1;
var guess = Math.floor(Math.random()*S);
var marginOfError = 0.1;
var error = 0;
var counter = 0;
var htmlout = "";
$(document).ready(function() {
// function code goes here
$('#submitButton').click(function() {
// JavaScript code here
console.clear();
counter = 0;
S = parseFloat($('#num').val());
guess = Math.floor(Math.random()*S);
var bab = new BabylonianSquareRootSolver(guess, S);
console.log(bab);
var res = bab.calculateSqrt();
htmlout = "Square Root is approximated to " + res.root.toFixed(2) + ". It took " + res.iterations
+ " iterations. The error for this approximation is: " + res.error.toFixed(4);
$('#details').html(htmlout);
console.log(bab.calculateSqrt());
});
});
</script>
</body>
</html>
You can test out the code yourself with the following Plunk:
Babylonian method - Plunk Here is an image of the GUI:


Caching images in web sites and web applications is possible to achieve using many methods. This article presents an image cache provider to use in MVC applications using Redis as a caching server.
