\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 -2.29531655658226465 \cdot 10^{153}:\\
\;\;\;\;\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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.45407357295376792 \cdot 10^{77}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(\sqrt[3]{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right) \cdot \sqrt[3]{\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}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\left(\sqrt[3]{a} \cdot \sqrt[3]{a}\right) \cdot \left(\sqrt[3]{a} \cdot \frac{c}{b}\right)\right) - 2 \cdot b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r33458 = b;
double r33459 = 0.0;
bool r33460 = r33458 >= r33459;
double r33461 = 2.0;
double r33462 = c;
double r33463 = r33461 * r33462;
double r33464 = -r33458;
double r33465 = r33458 * r33458;
double r33466 = 4.0;
double r33467 = a;
double r33468 = r33466 * r33467;
double r33469 = r33468 * r33462;
double r33470 = r33465 - r33469;
double r33471 = sqrt(r33470);
double r33472 = r33464 - r33471;
double r33473 = r33463 / r33472;
double r33474 = r33464 + r33471;
double r33475 = r33461 * r33467;
double r33476 = r33474 / r33475;
double r33477 = r33460 ? r33473 : r33476;
return r33477;
}
double f(double a, double b, double c) {
double r33478 = b;
double r33479 = -2.2953165565822647e+153;
bool r33480 = r33478 <= r33479;
double r33481 = 0.0;
bool r33482 = r33478 >= r33481;
double r33483 = 2.0;
double r33484 = c;
double r33485 = r33483 * r33484;
double r33486 = -r33478;
double r33487 = r33478 * r33478;
double r33488 = 4.0;
double r33489 = a;
double r33490 = r33488 * r33489;
double r33491 = r33490 * r33484;
double r33492 = r33487 - r33491;
double r33493 = sqrt(r33492);
double r33494 = r33486 - r33493;
double r33495 = r33485 / r33494;
double r33496 = r33489 * r33484;
double r33497 = r33496 / r33478;
double r33498 = r33483 * r33497;
double r33499 = r33498 - r33478;
double r33500 = r33486 + r33499;
double r33501 = r33483 * r33489;
double r33502 = r33500 / r33501;
double r33503 = r33482 ? r33495 : r33502;
double r33504 = 1.454073572953768e+77;
bool r33505 = r33478 <= r33504;
double r33506 = cbrt(r33494);
double r33507 = r33506 * r33506;
double r33508 = r33507 * r33506;
double r33509 = r33485 / r33508;
double r33510 = r33486 + r33493;
double r33511 = r33510 / r33501;
double r33512 = r33482 ? r33509 : r33511;
double r33513 = cbrt(r33489);
double r33514 = r33513 * r33513;
double r33515 = r33484 / r33478;
double r33516 = r33513 * r33515;
double r33517 = r33514 * r33516;
double r33518 = r33483 * r33517;
double r33519 = 2.0;
double r33520 = r33519 * r33478;
double r33521 = r33518 - r33520;
double r33522 = r33485 / r33521;
double r33523 = r33482 ? r33522 : r33511;
double r33524 = r33505 ? r33512 : r33523;
double r33525 = r33480 ? r33503 : r33524;
return r33525;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.2953165565822647e+153Initial program 63.6
Taylor expanded around -inf 11.6
if -2.2953165565822647e+153 < b < 1.454073572953768e+77Initial program 8.8
rmApplied add-cube-cbrt9.3
if 1.454073572953768e+77 < b Initial program 27.7
Taylor expanded around inf 6.6
rmApplied *-un-lft-identity6.6
Applied times-frac3.3
Simplified3.3
rmApplied add-cube-cbrt3.3
Applied associate-*l*3.3
Final simplification8.0
herbie shell --seed 2020042
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))