Numerically stable quadratic polynomial roots

function QuadraticRoots(a, b, c)
{
   var q;

   if (c == 0)
      return [ -b / a, 0 ];

   if ((q = b * b - 4 * a * c) >= 0)
   {
      q = Math.sqrt(q);

      if (b < 0)
         q = -q;

      q = (q - b) / 2;

      return [ q / a, c / q ];
   }
}