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