\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 -3.273486217319098334989555417998997525257 \cdot 10^{79}:\\
\;\;\;\;\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 2.125563079851438727208684227808951636731 \cdot 10^{135}:\\
\;\;\;\;\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{\left(\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right) \cdot \sqrt[3]{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}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}\\
\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 r31424 = b;
double r31425 = 0.0;
bool r31426 = r31424 >= r31425;
double r31427 = 2.0;
double r31428 = c;
double r31429 = r31427 * r31428;
double r31430 = -r31424;
double r31431 = r31424 * r31424;
double r31432 = 4.0;
double r31433 = a;
double r31434 = r31432 * r31433;
double r31435 = r31434 * r31428;
double r31436 = r31431 - r31435;
double r31437 = sqrt(r31436);
double r31438 = r31430 - r31437;
double r31439 = r31429 / r31438;
double r31440 = r31430 + r31437;
double r31441 = r31427 * r31433;
double r31442 = r31440 / r31441;
double r31443 = r31426 ? r31439 : r31442;
return r31443;
}
double f(double a, double b, double c) {
double r31444 = b;
double r31445 = -3.2734862173190983e+79;
bool r31446 = r31444 <= r31445;
double r31447 = 0.0;
bool r31448 = r31444 >= r31447;
double r31449 = 2.0;
double r31450 = c;
double r31451 = r31449 * r31450;
double r31452 = -r31444;
double r31453 = r31444 * r31444;
double r31454 = 4.0;
double r31455 = a;
double r31456 = r31454 * r31455;
double r31457 = r31456 * r31450;
double r31458 = r31453 - r31457;
double r31459 = sqrt(r31458);
double r31460 = r31452 - r31459;
double r31461 = r31451 / r31460;
double r31462 = r31455 * r31450;
double r31463 = r31462 / r31444;
double r31464 = r31449 * r31463;
double r31465 = r31464 - r31444;
double r31466 = r31452 + r31465;
double r31467 = r31449 * r31455;
double r31468 = r31466 / r31467;
double r31469 = r31448 ? r31461 : r31468;
double r31470 = 2.1255630798514387e+135;
bool r31471 = r31444 <= r31470;
double r31472 = cbrt(r31458);
double r31473 = r31472 * r31472;
double r31474 = r31473 * r31472;
double r31475 = sqrt(r31474);
double r31476 = r31452 + r31475;
double r31477 = r31476 / r31467;
double r31478 = r31448 ? r31461 : r31477;
double r31479 = r31444 - r31464;
double r31480 = r31452 - r31479;
double r31481 = r31451 / r31480;
double r31482 = r31452 + r31459;
double r31483 = r31482 / r31467;
double r31484 = r31448 ? r31481 : r31483;
double r31485 = r31471 ? r31478 : r31484;
double r31486 = r31446 ? r31469 : r31485;
return r31486;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.2734862173190983e+79Initial program 43.7
Taylor expanded around -inf 8.9
if -3.2734862173190983e+79 < b < 2.1255630798514387e+135Initial program 9.0
rmApplied add-cube-cbrt9.2
if 2.1255630798514387e+135 < b Initial program 36.0
Taylor expanded around inf 7.2
Final simplification8.7
herbie shell --seed 2019306 +o rules:numerics
(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))))