float accuracy and error examples
Solve quadratic equation with better accuracy
by mmalex
HTML
<h3>
Solving quadratic equation with better accuracy:
</h3>
<p style="font-family: consolas;">
2*x^2 + 1000*x -1 = 0
</p>
<h4>Root:</h4>
<p id="quadratic"></p>
<p id="citardauq"></p>
<h4>Error:</h4>
<p id="quadratic-error"></p>
<p id="citardauq-error"></p>
CSS
body {
font-family: consolas;
font-size: 11pt;
}
JavaScript
// guess what!
console.log("\r\nfloat error example: ", 1000 + 0.01 - 1000 - 0.01);
let offset = 0; // try set 10 and 100 here
// solve equation:
let a = 2 + offset;
let b = 1000 + offset;
let c = -1 + offset;
console.log(`Solving equation: (${a})*x^2 + (${b})*x + (${c}) = 0`);
let r = Math.sqrt(b*b - 4*a*c);
// see if b close to r => expect poor accuracy of root0
console.log("r - b: ", r - b);
// WARNING !!! by looking into r-b you must decide,
// which formula to use, as Citardauq formula is not always better !!!
console.log("=== Quadratic Formula ===");
let root0 = (-b + Math.sqrt(b*b - 4*a*c)) / (2*a);
console.log("root: ", root0);
let err0 = a*root0*root0 + b*root0 + c;
console.log("error: ", err0);
console.log("=== Citardauq Formula ===");
let root1 = 2*c / (-b - Math.sqrt(b*b - 4*a*c));
console.log("root: ", root1);
let err1 = a*root1*root1 + b*root1 + c;
console.log("error: ", err1);
$("#quadratic").text(root0 + " (Quadratic Formula)");
$("#citardauq").text(root1 + " (Citardauq Formula)");
$("#quadratic-error").text(err0 + " (Quadratic Formula)");
$("#citardauq-error").text(err1 + " (Citardauq Formula)");