\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 -1.132241338163917783305627833046111956144 \cdot 10^{101}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.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{\left(-b\right) + \left(\frac{2 \cdot a}{\frac{b}{c}} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.042426094136287989665052757228371789389 \cdot 10^{152}:\\
\;\;\;\;\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}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{b \cdot -2 + \frac{2 \cdot a}{\frac{b}{c}}}\\
\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 r999418 = b;
double r999419 = 0.0;
bool r999420 = r999418 >= r999419;
double r999421 = 2.0;
double r999422 = c;
double r999423 = r999421 * r999422;
double r999424 = -r999418;
double r999425 = r999418 * r999418;
double r999426 = 4.0;
double r999427 = a;
double r999428 = r999426 * r999427;
double r999429 = r999428 * r999422;
double r999430 = r999425 - r999429;
double r999431 = sqrt(r999430);
double r999432 = r999424 - r999431;
double r999433 = r999423 / r999432;
double r999434 = r999424 + r999431;
double r999435 = r999421 * r999427;
double r999436 = r999434 / r999435;
double r999437 = r999420 ? r999433 : r999436;
return r999437;
}
double f(double a, double b, double c) {
double r999438 = b;
double r999439 = -1.1322413381639178e+101;
bool r999440 = r999438 <= r999439;
double r999441 = 0.0;
bool r999442 = r999438 >= r999441;
double r999443 = 2.0;
double r999444 = c;
double r999445 = r999443 * r999444;
double r999446 = -r999438;
double r999447 = r999438 * r999438;
double r999448 = 4.0;
double r999449 = a;
double r999450 = r999448 * r999449;
double r999451 = r999450 * r999444;
double r999452 = r999447 - r999451;
double r999453 = sqrt(r999452);
double r999454 = sqrt(r999453);
double r999455 = r999454 * r999454;
double r999456 = r999446 - r999455;
double r999457 = r999445 / r999456;
double r999458 = r999443 * r999449;
double r999459 = r999438 / r999444;
double r999460 = r999458 / r999459;
double r999461 = r999460 - r999438;
double r999462 = r999446 + r999461;
double r999463 = r999462 / r999458;
double r999464 = r999442 ? r999457 : r999463;
double r999465 = 1.042426094136288e+152;
bool r999466 = r999438 <= r999465;
double r999467 = r999446 - r999453;
double r999468 = r999445 / r999467;
double r999469 = r999455 + r999446;
double r999470 = r999469 / r999458;
double r999471 = r999442 ? r999468 : r999470;
double r999472 = -2.0;
double r999473 = r999438 * r999472;
double r999474 = r999473 + r999460;
double r999475 = r999445 / r999474;
double r999476 = r999453 + r999446;
double r999477 = r999476 / r999458;
double r999478 = r999442 ? r999475 : r999477;
double r999479 = r999466 ? r999471 : r999478;
double r999480 = r999440 ? r999464 : r999479;
return r999480;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.1322413381639178e+101Initial program 48.2
rmApplied add-sqr-sqrt48.2
Applied sqrt-prod48.2
Taylor expanded around -inf 10.3
Simplified3.6
if -1.1322413381639178e+101 < b < 1.042426094136288e+152Initial program 8.6
rmApplied add-sqr-sqrt8.6
Applied sqrt-prod8.7
if 1.042426094136288e+152 < b Initial program 37.5
rmApplied add-sqr-sqrt37.5
Applied sqrt-prod37.5
Taylor expanded around inf 6.3
Simplified1.8
Final simplification6.6
herbie shell --seed 2019172
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0.0) (/ (* 2.0 c) (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a))))