The numerical properties of the Quadratic Equation make it unsuitable for general use in software. For example, consider the special case a=0, which a human would obviously recognize. For a computer, special code must be written. More subtly, from Numerical Analysis, we must consider the possibility of cancellation error when b2 is much greater than 4ac. In this case, the solution for one root will be very close to zero, and the other will be close to -b/a. The near-zero number will suffer accuracy problems.

To avoid the difficulty with cancellation, we may compute the roots with the following:

z = -0.5 (b + sign(b)*(b2 - 4ac))

x1 = z/a
x2 = c/z

Source: Numerical Recipes