\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.00655881829761357 \cdot 10^{145}:\\
\;\;\;\;\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{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 4.402171051432718 \cdot 10^{122}:\\
\;\;\;\;\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{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\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}{\left(-b\right) - \left(b - 2 \cdot \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right)\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 r40406 = b;
double r40407 = 0.0;
bool r40408 = r40406 >= r40407;
double r40409 = 2.0;
double r40410 = c;
double r40411 = r40409 * r40410;
double r40412 = -r40406;
double r40413 = r40406 * r40406;
double r40414 = 4.0;
double r40415 = a;
double r40416 = r40414 * r40415;
double r40417 = r40416 * r40410;
double r40418 = r40413 - r40417;
double r40419 = sqrt(r40418);
double r40420 = r40412 - r40419;
double r40421 = r40411 / r40420;
double r40422 = r40412 + r40419;
double r40423 = r40409 * r40415;
double r40424 = r40422 / r40423;
double r40425 = r40408 ? r40421 : r40424;
return r40425;
}
double f(double a, double b, double c) {
double r40426 = b;
double r40427 = -1.0065588182976136e+145;
bool r40428 = r40426 <= r40427;
double r40429 = 0.0;
bool r40430 = r40426 >= r40429;
double r40431 = 2.0;
double r40432 = c;
double r40433 = r40431 * r40432;
double r40434 = -r40426;
double r40435 = r40426 * r40426;
double r40436 = 4.0;
double r40437 = a;
double r40438 = r40436 * r40437;
double r40439 = r40438 * r40432;
double r40440 = r40435 - r40439;
double r40441 = sqrt(r40440);
double r40442 = r40434 - r40441;
double r40443 = r40433 / r40442;
double r40444 = r40437 * r40432;
double r40445 = r40444 / r40426;
double r40446 = r40431 * r40445;
double r40447 = 2.0;
double r40448 = r40447 * r40426;
double r40449 = r40446 - r40448;
double r40450 = r40431 * r40437;
double r40451 = r40449 / r40450;
double r40452 = r40430 ? r40443 : r40451;
double r40453 = 4.402171051432718e+122;
bool r40454 = r40426 <= r40453;
double r40455 = sqrt(r40441);
double r40456 = r40455 * r40455;
double r40457 = r40434 + r40456;
double r40458 = r40457 / r40450;
double r40459 = r40430 ? r40443 : r40458;
double r40460 = cbrt(r40426);
double r40461 = r40460 * r40460;
double r40462 = r40437 / r40461;
double r40463 = r40432 / r40460;
double r40464 = r40462 * r40463;
double r40465 = r40431 * r40464;
double r40466 = r40426 - r40465;
double r40467 = r40434 - r40466;
double r40468 = r40433 / r40467;
double r40469 = r40434 + r40441;
double r40470 = r40469 / r40450;
double r40471 = r40430 ? r40468 : r40470;
double r40472 = r40454 ? r40459 : r40471;
double r40473 = r40428 ? r40452 : r40472;
return r40473;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.0065588182976136e+145Initial program 61.2
Taylor expanded around -inf 11.9
if -1.0065588182976136e+145 < b < 4.402171051432718e+122Initial program 8.4
rmApplied add-sqr-sqrt8.4
Applied sqrt-prod8.6
if 4.402171051432718e+122 < b Initial program 32.7
Taylor expanded around inf 6.1
rmApplied add-cube-cbrt6.1
Applied times-frac2.1
Final simplification7.6
herbie shell --seed 2020036 +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))))