\begin{array}{l}
\mathbf{if}\;b \ge 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 -4.463381827278506 \cdot 10^{+97}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{2 \cdot \left(\frac{a}{\frac{b}{c}} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 1.9790239803107722 \cdot 10^{+149}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\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:\\
\;\;\;\;\frac{\left(\frac{c}{\frac{b}{a}} - b\right) \cdot 2}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}double f(double a, double b, double c) {
double r560436 = b;
double r560437 = 0.0;
bool r560438 = r560436 >= r560437;
double r560439 = -r560436;
double r560440 = r560436 * r560436;
double r560441 = 4.0;
double r560442 = a;
double r560443 = r560441 * r560442;
double r560444 = c;
double r560445 = r560443 * r560444;
double r560446 = r560440 - r560445;
double r560447 = sqrt(r560446);
double r560448 = r560439 - r560447;
double r560449 = 2.0;
double r560450 = r560449 * r560442;
double r560451 = r560448 / r560450;
double r560452 = r560449 * r560444;
double r560453 = r560439 + r560447;
double r560454 = r560452 / r560453;
double r560455 = r560438 ? r560451 : r560454;
return r560455;
}
double f(double a, double b, double c) {
double r560456 = b;
double r560457 = -4.463381827278506e+97;
bool r560458 = r560456 <= r560457;
double r560459 = 0.0;
bool r560460 = r560456 >= r560459;
double r560461 = -r560456;
double r560462 = r560456 * r560456;
double r560463 = 4.0;
double r560464 = a;
double r560465 = r560463 * r560464;
double r560466 = c;
double r560467 = r560465 * r560466;
double r560468 = r560462 - r560467;
double r560469 = sqrt(r560468);
double r560470 = r560461 - r560469;
double r560471 = 2.0;
double r560472 = r560471 * r560464;
double r560473 = r560470 / r560472;
double r560474 = r560466 * r560471;
double r560475 = r560456 / r560466;
double r560476 = r560464 / r560475;
double r560477 = r560476 - r560456;
double r560478 = r560471 * r560477;
double r560479 = r560474 / r560478;
double r560480 = r560460 ? r560473 : r560479;
double r560481 = 1.9790239803107722e+149;
bool r560482 = r560456 <= r560481;
double r560483 = sqrt(r560469);
double r560484 = r560483 * r560483;
double r560485 = r560461 + r560484;
double r560486 = r560474 / r560485;
double r560487 = r560460 ? r560473 : r560486;
double r560488 = r560456 / r560464;
double r560489 = r560466 / r560488;
double r560490 = r560489 - r560456;
double r560491 = r560490 * r560471;
double r560492 = r560491 / r560472;
double r560493 = r560469 + r560461;
double r560494 = r560474 / r560493;
double r560495 = r560460 ? r560492 : r560494;
double r560496 = r560482 ? r560487 : r560495;
double r560497 = r560458 ? r560480 : r560496;
return r560497;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.463381827278506e+97Initial program 30.3
Taylor expanded around -inf 5.9
Simplified2.1
if -4.463381827278506e+97 < b < 1.9790239803107722e+149Initial program 9.0
rmApplied add-sqr-sqrt9.0
Applied sqrt-prod9.1
if 1.9790239803107722e+149 < b Initial program 58.8
rmApplied add-sqr-sqrt58.8
Applied sqrt-prod58.8
Taylor expanded around inf 12.1
Simplified2.8
Final simplification6.7
herbie shell --seed 2019139
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))