\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 r999416 = b;
double r999417 = 0.0;
bool r999418 = r999416 >= r999417;
double r999419 = 2.0;
double r999420 = c;
double r999421 = r999419 * r999420;
double r999422 = -r999416;
double r999423 = r999416 * r999416;
double r999424 = 4.0;
double r999425 = a;
double r999426 = r999424 * r999425;
double r999427 = r999426 * r999420;
double r999428 = r999423 - r999427;
double r999429 = sqrt(r999428);
double r999430 = r999422 - r999429;
double r999431 = r999421 / r999430;
double r999432 = r999422 + r999429;
double r999433 = r999419 * r999425;
double r999434 = r999432 / r999433;
double r999435 = r999418 ? r999431 : r999434;
return r999435;
}
double f(double a, double b, double c) {
double r999436 = b;
double r999437 = -1.1322413381639178e+101;
bool r999438 = r999436 <= r999437;
double r999439 = 0.0;
bool r999440 = r999436 >= r999439;
double r999441 = 2.0;
double r999442 = c;
double r999443 = r999441 * r999442;
double r999444 = -r999436;
double r999445 = r999436 * r999436;
double r999446 = 4.0;
double r999447 = a;
double r999448 = r999446 * r999447;
double r999449 = r999448 * r999442;
double r999450 = r999445 - r999449;
double r999451 = sqrt(r999450);
double r999452 = sqrt(r999451);
double r999453 = r999452 * r999452;
double r999454 = r999444 - r999453;
double r999455 = r999443 / r999454;
double r999456 = r999441 * r999447;
double r999457 = r999436 / r999442;
double r999458 = r999456 / r999457;
double r999459 = r999458 - r999436;
double r999460 = r999444 + r999459;
double r999461 = r999460 / r999456;
double r999462 = r999440 ? r999455 : r999461;
double r999463 = 1.042426094136288e+152;
bool r999464 = r999436 <= r999463;
double r999465 = r999444 - r999451;
double r999466 = r999443 / r999465;
double r999467 = r999453 + r999444;
double r999468 = r999467 / r999456;
double r999469 = r999440 ? r999466 : r999468;
double r999470 = -2.0;
double r999471 = r999436 * r999470;
double r999472 = r999471 + r999458;
double r999473 = r999443 / r999472;
double r999474 = r999451 + r999444;
double r999475 = r999474 / r999456;
double r999476 = r999440 ? r999473 : r999475;
double r999477 = r999464 ? r999469 : r999476;
double r999478 = r999438 ? r999462 : r999477;
return r999478;
}



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))))