Numerical Methods

quadratic equation

by zero3495

JavaScript

function solve (a,b,c) {
	var x1, x2;
    var d = b*b-4*a*c;
    if (d >= 0) {
        var sd = Math.sqrt(d);
        x1 = (-b+sd)/2/a;
        x2 = (-b-sd)/2/a;
	//	console.log (x1 + ', ' + x2);
        return [x1,x2];
    } else { 
        // no real roots
        return [];
    }
}

//
// from http://mathworld.wolfram.com/QuadraticEquation.html
//
function solveBetter (a,b,c) {
	var x1, x2;
	var d = b*b - 4*a*c;
    if (d >= 0) {
        var sgnB = b > 0 ? 1 : -1;
        var q = -(b + sgnB*Math.sqrt(b*b - 4*a*c))/2;
        x1 = q/a;
        x2 = c/a/x1;
        return [x1,x2];
    } else { 
        // no real roots
        return [0,0];
    }
}

var roots = solveBetter (1,2,-3);
//console.log (roots);
if (roots.length === 0)
    console.log ('no real roots');
else 
    console.log ('x1: ' + roots[0] + '; ' + 
                 'x2: ' + roots[1]);