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]);