\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 -5.738180479687524379069024322817742160506 \cdot 10^{54}:\\
\;\;\;\;\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 8.13128291297911797546814361239497721035 \cdot 10^{93}:\\
\;\;\;\;\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{\sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}}{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{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r36002 = b;
double r36003 = 0.0;
bool r36004 = r36002 >= r36003;
double r36005 = 2.0;
double r36006 = c;
double r36007 = r36005 * r36006;
double r36008 = -r36002;
double r36009 = r36002 * r36002;
double r36010 = 4.0;
double r36011 = a;
double r36012 = r36010 * r36011;
double r36013 = r36012 * r36006;
double r36014 = r36009 - r36013;
double r36015 = sqrt(r36014);
double r36016 = r36008 - r36015;
double r36017 = r36007 / r36016;
double r36018 = r36008 + r36015;
double r36019 = r36005 * r36011;
double r36020 = r36018 / r36019;
double r36021 = r36004 ? r36017 : r36020;
return r36021;
}
double f(double a, double b, double c) {
double r36022 = b;
double r36023 = -5.7381804796875244e+54;
bool r36024 = r36022 <= r36023;
double r36025 = 0.0;
bool r36026 = r36022 >= r36025;
double r36027 = 2.0;
double r36028 = c;
double r36029 = r36027 * r36028;
double r36030 = -r36022;
double r36031 = r36022 * r36022;
double r36032 = 4.0;
double r36033 = a;
double r36034 = r36032 * r36033;
double r36035 = r36034 * r36028;
double r36036 = r36031 - r36035;
double r36037 = sqrt(r36036);
double r36038 = r36030 - r36037;
double r36039 = r36029 / r36038;
double r36040 = r36033 * r36028;
double r36041 = r36040 / r36022;
double r36042 = r36027 * r36041;
double r36043 = 2.0;
double r36044 = r36043 * r36022;
double r36045 = r36042 - r36044;
double r36046 = r36027 * r36033;
double r36047 = r36045 / r36046;
double r36048 = r36026 ? r36039 : r36047;
double r36049 = 8.131282912979118e+93;
bool r36050 = r36022 <= r36049;
double r36051 = r36037 - r36022;
double r36052 = sqrt(r36051);
double r36053 = r36052 * r36052;
double r36054 = r36053 / r36046;
double r36055 = r36026 ? r36039 : r36054;
double r36056 = r36022 - r36042;
double r36057 = r36030 - r36056;
double r36058 = r36029 / r36057;
double r36059 = r36051 / r36046;
double r36060 = r36026 ? r36058 : r36059;
double r36061 = r36050 ? r36055 : r36060;
double r36062 = r36024 ? r36048 : r36061;
return r36062;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -5.7381804796875244e+54Initial program 38.2
Simplified38.2
Taylor expanded around -inf 10.7
if -5.7381804796875244e+54 < b < 8.131282912979118e+93Initial program 8.8
Simplified8.8
rmApplied add-sqr-sqrt8.9
if 8.131282912979118e+93 < b Initial program 29.5
Simplified29.5
Taylor expanded around inf 6.7
Final simplification8.7
herbie shell --seed 2019350
(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))))