\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.28731338523231927980681449927859365128 \cdot 10^{78}:\\
\;\;\;\;\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{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 4.010518318216094454334208981549678919556 \cdot 10^{99}:\\
\;\;\;\;\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{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\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 r26971 = b;
double r26972 = 0.0;
bool r26973 = r26971 >= r26972;
double r26974 = 2.0;
double r26975 = c;
double r26976 = r26974 * r26975;
double r26977 = -r26971;
double r26978 = r26971 * r26971;
double r26979 = 4.0;
double r26980 = a;
double r26981 = r26979 * r26980;
double r26982 = r26981 * r26975;
double r26983 = r26978 - r26982;
double r26984 = sqrt(r26983);
double r26985 = r26977 - r26984;
double r26986 = r26976 / r26985;
double r26987 = r26977 + r26984;
double r26988 = r26974 * r26980;
double r26989 = r26987 / r26988;
double r26990 = r26973 ? r26986 : r26989;
return r26990;
}
double f(double a, double b, double c) {
double r26991 = b;
double r26992 = -4.287313385232319e+78;
bool r26993 = r26991 <= r26992;
double r26994 = 0.0;
bool r26995 = r26991 >= r26994;
double r26996 = 2.0;
double r26997 = c;
double r26998 = r26996 * r26997;
double r26999 = -r26991;
double r27000 = r26991 * r26991;
double r27001 = 4.0;
double r27002 = a;
double r27003 = r27001 * r27002;
double r27004 = r27003 * r26997;
double r27005 = r27000 - r27004;
double r27006 = sqrt(r27005);
double r27007 = r26999 - r27006;
double r27008 = r26998 / r27007;
double r27009 = r27002 * r26997;
double r27010 = r27009 / r26991;
double r27011 = r26996 * r27010;
double r27012 = 2.0;
double r27013 = r27012 * r26991;
double r27014 = r27011 - r27013;
double r27015 = r26996 * r27002;
double r27016 = r27014 / r27015;
double r27017 = r26995 ? r27008 : r27016;
double r27018 = 4.0105183182160945e+99;
bool r27019 = r26991 <= r27018;
double r27020 = sqrt(r27006);
double r27021 = r27020 * r27020;
double r27022 = r26999 + r27021;
double r27023 = r27022 / r27015;
double r27024 = r26995 ? r27008 : r27023;
double r27025 = r26991 - r27011;
double r27026 = r26999 - r27025;
double r27027 = r26998 / r27026;
double r27028 = r26999 + r27006;
double r27029 = r27028 / r27015;
double r27030 = r26995 ? r27027 : r27029;
double r27031 = r27019 ? r27024 : r27030;
double r27032 = r26993 ? r27017 : r27031;
return r27032;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.287313385232319e+78Initial program 41.5
rmApplied add-sqr-sqrt41.5
Applied sqrt-prod41.6
Taylor expanded around -inf 10.5
if -4.287313385232319e+78 < b < 4.0105183182160945e+99Initial program 8.8
rmApplied add-sqr-sqrt8.8
Applied sqrt-prod8.9
if 4.0105183182160945e+99 < b Initial program 29.3
Taylor expanded around inf 6.2
Final simplification8.5
herbie shell --seed 2019352 +o rules:numerics
(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))))