\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 -1.3304039805523987 \cdot 10^{+154}:\\
\;\;\;\;\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(2 \cdot \frac{a \cdot c}{b} - b\right) + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 3.0328660348190177 \cdot 10^{+125}:\\
\;\;\;\;\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(\frac{c}{\frac{b}{a}} - 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 r560400 = b;
double r560401 = 0.0;
bool r560402 = r560400 >= r560401;
double r560403 = 2.0;
double r560404 = c;
double r560405 = r560403 * r560404;
double r560406 = -r560400;
double r560407 = r560400 * r560400;
double r560408 = 4.0;
double r560409 = a;
double r560410 = r560408 * r560409;
double r560411 = r560410 * r560404;
double r560412 = r560407 - r560411;
double r560413 = sqrt(r560412);
double r560414 = r560406 - r560413;
double r560415 = r560405 / r560414;
double r560416 = r560406 + r560413;
double r560417 = r560403 * r560409;
double r560418 = r560416 / r560417;
double r560419 = r560402 ? r560415 : r560418;
return r560419;
}
double f(double a, double b, double c) {
double r560420 = b;
double r560421 = -1.3304039805523987e+154;
bool r560422 = r560420 <= r560421;
double r560423 = 0.0;
bool r560424 = r560420 >= r560423;
double r560425 = 2.0;
double r560426 = c;
double r560427 = r560425 * r560426;
double r560428 = -r560420;
double r560429 = r560420 * r560420;
double r560430 = 4.0;
double r560431 = a;
double r560432 = r560430 * r560431;
double r560433 = r560432 * r560426;
double r560434 = r560429 - r560433;
double r560435 = sqrt(r560434);
double r560436 = r560428 - r560435;
double r560437 = r560427 / r560436;
double r560438 = r560431 * r560426;
double r560439 = r560438 / r560420;
double r560440 = r560425 * r560439;
double r560441 = r560440 - r560420;
double r560442 = r560441 + r560428;
double r560443 = r560425 * r560431;
double r560444 = r560442 / r560443;
double r560445 = r560424 ? r560437 : r560444;
double r560446 = 3.0328660348190177e+125;
bool r560447 = r560420 <= r560446;
double r560448 = sqrt(r560435);
double r560449 = r560448 * r560448;
double r560450 = r560428 - r560449;
double r560451 = r560427 / r560450;
double r560452 = r560435 + r560428;
double r560453 = r560452 / r560443;
double r560454 = r560424 ? r560451 : r560453;
double r560455 = r560420 / r560431;
double r560456 = r560426 / r560455;
double r560457 = r560456 - r560420;
double r560458 = r560425 * r560457;
double r560459 = r560427 / r560458;
double r560460 = r560424 ? r560459 : r560453;
double r560461 = r560447 ? r560454 : r560460;
double r560462 = r560422 ? r560445 : r560461;
return r560462;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3304039805523987e+154Initial program 60.9
Taylor expanded around -inf 12.0
if -1.3304039805523987e+154 < b < 3.0328660348190177e+125Initial program 8.2
rmApplied add-sqr-sqrt8.3
if 3.0328660348190177e+125 < b Initial program 32.4
Taylor expanded around inf 6.4
Simplified2.0
Final simplification7.3
herbie shell --seed 2019129
(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))))