\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -9.84075453500638311 \cdot 10^{147}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left(2 \cdot \frac{a}{\frac{b}{c}} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 7.4471423651860946 \cdot 10^{108}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\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}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}double f(double a, double b, double c) {
double r46001 = b;
double r46002 = 0.0;
bool r46003 = r46001 >= r46002;
double r46004 = -r46001;
double r46005 = r46001 * r46001;
double r46006 = 4.0;
double r46007 = a;
double r46008 = r46006 * r46007;
double r46009 = c;
double r46010 = r46008 * r46009;
double r46011 = r46005 - r46010;
double r46012 = sqrt(r46011);
double r46013 = r46004 - r46012;
double r46014 = 2.0;
double r46015 = r46014 * r46007;
double r46016 = r46013 / r46015;
double r46017 = r46014 * r46009;
double r46018 = r46004 + r46012;
double r46019 = r46017 / r46018;
double r46020 = r46003 ? r46016 : r46019;
return r46020;
}
double f(double a, double b, double c) {
double r46021 = b;
double r46022 = -9.840754535006383e+147;
bool r46023 = r46021 <= r46022;
double r46024 = 0.0;
bool r46025 = r46021 >= r46024;
double r46026 = -r46021;
double r46027 = r46021 * r46021;
double r46028 = 4.0;
double r46029 = a;
double r46030 = r46028 * r46029;
double r46031 = c;
double r46032 = r46030 * r46031;
double r46033 = r46027 - r46032;
double r46034 = sqrt(r46033);
double r46035 = r46026 - r46034;
double r46036 = 2.0;
double r46037 = r46036 * r46029;
double r46038 = r46035 / r46037;
double r46039 = r46036 * r46031;
double r46040 = r46021 / r46031;
double r46041 = r46029 / r46040;
double r46042 = r46036 * r46041;
double r46043 = r46042 - r46021;
double r46044 = r46026 + r46043;
double r46045 = r46039 / r46044;
double r46046 = r46025 ? r46038 : r46045;
double r46047 = 7.447142365186095e+108;
bool r46048 = r46021 <= r46047;
double r46049 = sqrt(r46034);
double r46050 = r46049 * r46049;
double r46051 = r46026 + r46050;
double r46052 = r46039 / r46051;
double r46053 = r46025 ? r46038 : r46052;
double r46054 = r46029 * r46031;
double r46055 = r46054 / r46021;
double r46056 = r46036 * r46055;
double r46057 = 2.0;
double r46058 = r46057 * r46021;
double r46059 = r46056 - r46058;
double r46060 = r46059 / r46037;
double r46061 = r46026 + r46034;
double r46062 = r46039 / r46061;
double r46063 = r46025 ? r46060 : r46062;
double r46064 = r46048 ? r46053 : r46063;
double r46065 = r46023 ? r46046 : r46064;
return r46065;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -9.840754535006383e+147Initial program 37.3
Taylor expanded around -inf 6.5
rmApplied associate-/l*1.4
if -9.840754535006383e+147 < b < 7.447142365186095e+108Initial program 8.7
rmApplied add-sqr-sqrt8.7
Applied sqrt-prod8.8
if 7.447142365186095e+108 < b Initial program 50.2
Taylor expanded around inf 10.9
Final simplification7.8
herbie shell --seed 2020062
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))