I am assuming you are asking what are the differences between using the code
x1 = -b+sqrt(b*b-4*a*c)/(2*a);
x2 = -b-sqrt(b*b-4*a*c)/(2*a);
and the code
q = (-b-sign(b)*sqrt(b*b-4*a*c))/2;
x1 = q/a;
x2 = c/q;
The book Numerical recipes in C - The Art of Scientific Computing - Second Edition just says the second code will give you more accurate roots. You can consult online the book at http://apps.nrbook.com/c/index.html and you will find the formulae at page 183 and 184 in the section 5.6 Quadratic and cubic equations.
Professor Higham's book Accuracy and Stability of Numerical Algorithms, 2nd Edition has the introductory section 1.8. Solving a Quadratic Equation which elaborates further about the second code. Maybe you can read it through Google books with the query higham 1.8. solving a quadratic equation
; it seems to me he just talk about the accuracy and robustness of the second code without describing any additional advantage.
For a longer explanation (in the Python Scilab context) you can look at Scilab is not naive by Michael Baudin available here: http://forge.scilab.org/index.php/p/docscilabisnotnaive/downloads/get/scilabisnotnaive_v2.2.pdf