\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -4.297522851756149307625287590446857172218 \cdot 10^{130} \lor \neg \left(b \le 1.900113883782617364045683497909180234101 \cdot 10^{53}\right):\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\frac{a}{\sqrt{b}} \cdot \frac{c}{{b}^{\frac{1}{2}}}\right) - 2 \cdot b}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - e^{\log \left(\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r34986 = b;
double r34987 = 0.0;
bool r34988 = r34986 >= r34987;
double r34989 = 2.0;
double r34990 = c;
double r34991 = r34989 * r34990;
double r34992 = -r34986;
double r34993 = r34986 * r34986;
double r34994 = 4.0;
double r34995 = a;
double r34996 = r34994 * r34995;
double r34997 = r34996 * r34990;
double r34998 = r34993 - r34997;
double r34999 = sqrt(r34998);
double r35000 = r34992 - r34999;
double r35001 = r34991 / r35000;
double r35002 = r34992 + r34999;
double r35003 = r34989 * r34995;
double r35004 = r35002 / r35003;
double r35005 = r34988 ? r35001 : r35004;
return r35005;
}
double f(double a, double b, double c) {
double r35006 = b;
double r35007 = -4.2975228517561493e+130;
bool r35008 = r35006 <= r35007;
double r35009 = 1.9001138837826174e+53;
bool r35010 = r35006 <= r35009;
double r35011 = !r35010;
bool r35012 = r35008 || r35011;
double r35013 = 0.0;
bool r35014 = r35006 >= r35013;
double r35015 = 2.0;
double r35016 = c;
double r35017 = r35015 * r35016;
double r35018 = a;
double r35019 = sqrt(r35006);
double r35020 = r35018 / r35019;
double r35021 = 0.5;
double r35022 = pow(r35006, r35021);
double r35023 = r35016 / r35022;
double r35024 = r35020 * r35023;
double r35025 = r35015 * r35024;
double r35026 = 2.0;
double r35027 = r35026 * r35006;
double r35028 = r35025 - r35027;
double r35029 = r35017 / r35028;
double r35030 = 1.0;
double r35031 = r35016 / r35006;
double r35032 = r35006 / r35018;
double r35033 = r35031 - r35032;
double r35034 = r35030 * r35033;
double r35035 = r35014 ? r35029 : r35034;
double r35036 = -r35006;
double r35037 = r35006 * r35006;
double r35038 = 4.0;
double r35039 = r35038 * r35018;
double r35040 = r35039 * r35016;
double r35041 = r35037 - r35040;
double r35042 = sqrt(r35041);
double r35043 = log(r35042);
double r35044 = exp(r35043);
double r35045 = r35036 - r35044;
double r35046 = r35017 / r35045;
double r35047 = r35036 + r35042;
double r35048 = r35015 * r35018;
double r35049 = r35047 / r35048;
double r35050 = r35014 ? r35046 : r35049;
double r35051 = r35012 ? r35035 : r35050;
return r35051;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.2975228517561493e+130 or 1.9001138837826174e+53 < b Initial program 34.6
Taylor expanded around inf 21.6
rmApplied add-sqr-sqrt21.6
Applied times-frac19.3
Simplified19.3
Taylor expanded around -inf 5.9
Taylor expanded around 0 3.7
Simplified3.7
if -4.2975228517561493e+130 < b < 1.9001138837826174e+53Initial program 9.0
rmApplied add-exp-log10.4
Final simplification7.6
herbie shell --seed 2019362
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))