コードを使用することの違いは何ですかと尋ねていると思います
x1 = -b+sqrt(b*b-4*a*c)/(2*a);
x2 = -b-sqrt(b*b-4*a*c)/(2*a);
そしてコード
q = (-b-sign(b)*sqrt(b*b-4*a*c))/2;
x1 = q/a;
x2 = c/q;
C の数値レシピ - 科学計算の芸術 - 第 2 版という本は、2 番目のコードがより正確な根を与えると言っているだけです。http://apps.nrbook.com/c/index.htmlでこの本をオンラインで参照できます。式は 183 ページと 184 ページのセクション5.6 2 次方程式と 3 次方程式にあります。
Higham 教授の著書Accuracy and Stability of Numerical Algorithms, 2nd Editionには、導入セクション1.8 があります。2 番目のコードについてさらに詳しく説明する二次方程式を解く。おそらく、クエリを使用してGoogleブックで読むことができますhigham 1.8. solving a quadratic equation
。彼は、追加の利点を説明せずに、2 番目のコードの正確さと堅牢性について話しているだけのように思えます。
より長い説明 (Python Scilab コンテキスト) については、Scilab is not naive by Michael Baudin を参照して
ください。 .pdf