\begin{array}{l}
\mathbf{if}\;b \ge 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 -3.031133968044182 \cdot 10^{+117}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \left(a \cdot \frac{c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 4.466989066425707 \cdot 10^{+89}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\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}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(a \cdot \frac{c}{b} - b\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r1216983 = b;
double r1216984 = 0.0;
bool r1216985 = r1216983 >= r1216984;
double r1216986 = 2.0;
double r1216987 = c;
double r1216988 = r1216986 * r1216987;
double r1216989 = -r1216983;
double r1216990 = r1216983 * r1216983;
double r1216991 = 4.0;
double r1216992 = a;
double r1216993 = r1216991 * r1216992;
double r1216994 = r1216993 * r1216987;
double r1216995 = r1216990 - r1216994;
double r1216996 = sqrt(r1216995);
double r1216997 = r1216989 - r1216996;
double r1216998 = r1216988 / r1216997;
double r1216999 = r1216989 + r1216996;
double r1217000 = r1216986 * r1216992;
double r1217001 = r1216999 / r1217000;
double r1217002 = r1216985 ? r1216998 : r1217001;
return r1217002;
}
double f(double a, double b, double c) {
double r1217003 = b;
double r1217004 = -3.031133968044182e+117;
bool r1217005 = r1217003 <= r1217004;
double r1217006 = 0.0;
bool r1217007 = r1217003 >= r1217006;
double r1217008 = 2.0;
double r1217009 = c;
double r1217010 = r1217008 * r1217009;
double r1217011 = -r1217003;
double r1217012 = r1217003 * r1217003;
double r1217013 = 4.0;
double r1217014 = a;
double r1217015 = r1217013 * r1217014;
double r1217016 = r1217015 * r1217009;
double r1217017 = r1217012 - r1217016;
double r1217018 = sqrt(r1217017);
double r1217019 = r1217011 - r1217018;
double r1217020 = r1217010 / r1217019;
double r1217021 = r1217009 / r1217003;
double r1217022 = r1217014 * r1217021;
double r1217023 = r1217022 - r1217003;
double r1217024 = r1217008 * r1217023;
double r1217025 = r1217008 * r1217014;
double r1217026 = r1217024 / r1217025;
double r1217027 = r1217007 ? r1217020 : r1217026;
double r1217028 = 4.466989066425707e+89;
bool r1217029 = r1217003 <= r1217028;
double r1217030 = sqrt(r1217018);
double r1217031 = r1217030 * r1217030;
double r1217032 = r1217011 - r1217031;
double r1217033 = r1217010 / r1217032;
double r1217034 = r1217018 + r1217011;
double r1217035 = r1217034 / r1217025;
double r1217036 = r1217007 ? r1217033 : r1217035;
double r1217037 = r1217010 / r1217024;
double r1217038 = r1217007 ? r1217037 : r1217035;
double r1217039 = r1217029 ? r1217036 : r1217038;
double r1217040 = r1217005 ? r1217027 : r1217039;
return r1217040;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.031133968044182e+117Initial program 48.7
Taylor expanded around -inf 8.7
Simplified2.9
if -3.031133968044182e+117 < b < 4.466989066425707e+89Initial program 8.8
rmApplied add-sqr-sqrt8.8
Applied sqrt-prod8.9
if 4.466989066425707e+89 < b Initial program 28.7
rmApplied add-sqr-sqrt28.7
Applied sqrt-prod28.8
Taylor expanded around inf 6.4
Simplified2.9
Final simplification6.6
herbie shell --seed 2019107
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))