\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.350676057343211554491874986591947593393 \cdot 10^{154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \left(\frac{a}{\sqrt{b}} \cdot \frac{c}{\sqrt{b}}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\frac{a \cdot c}{b} \cdot 2 - b\right) - b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le -4.452231346955637703324616244948712027068 \cdot 10^{-267}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\frac{2 \cdot c}{\sqrt[3]{\left(\left(-b\right) - b\right) + 2 \cdot \frac{a \cdot c}{b}} \cdot \sqrt[3]{\left(\left(-b\right) - b\right) + 2 \cdot \frac{a \cdot c}{b}}}}{\sqrt[3]{\left(-b\right) - \left(b - 2 \cdot \left(\frac{a}{\sqrt{b}} \cdot \frac{c}{\sqrt{b}}\right)\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.287594296476507417293820707954348336152 \cdot 10^{78}:\\
\;\;\;\;\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{\frac{-\left(4 \cdot a\right) \cdot c}{\sqrt{{b}^{2} - \left(4 \cdot a\right) \cdot c} + b}}{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{b}} \cdot \frac{c}{\sqrt{b}}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\frac{a \cdot c}{b} \cdot 2 - b\right) - b}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r33430 = b;
double r33431 = 0.0;
bool r33432 = r33430 >= r33431;
double r33433 = 2.0;
double r33434 = c;
double r33435 = r33433 * r33434;
double r33436 = -r33430;
double r33437 = r33430 * r33430;
double r33438 = 4.0;
double r33439 = a;
double r33440 = r33438 * r33439;
double r33441 = r33440 * r33434;
double r33442 = r33437 - r33441;
double r33443 = sqrt(r33442);
double r33444 = r33436 - r33443;
double r33445 = r33435 / r33444;
double r33446 = r33436 + r33443;
double r33447 = r33433 * r33439;
double r33448 = r33446 / r33447;
double r33449 = r33432 ? r33445 : r33448;
return r33449;
}
double f(double a, double b, double c) {
double r33450 = b;
double r33451 = -1.3506760573432116e+154;
bool r33452 = r33450 <= r33451;
double r33453 = 0.0;
bool r33454 = r33450 >= r33453;
double r33455 = 2.0;
double r33456 = c;
double r33457 = r33455 * r33456;
double r33458 = -r33450;
double r33459 = a;
double r33460 = sqrt(r33450);
double r33461 = r33459 / r33460;
double r33462 = r33456 / r33460;
double r33463 = r33461 * r33462;
double r33464 = r33455 * r33463;
double r33465 = r33450 - r33464;
double r33466 = r33458 - r33465;
double r33467 = r33457 / r33466;
double r33468 = r33459 * r33456;
double r33469 = r33468 / r33450;
double r33470 = r33469 * r33455;
double r33471 = r33470 - r33450;
double r33472 = r33471 - r33450;
double r33473 = r33455 * r33459;
double r33474 = r33472 / r33473;
double r33475 = r33454 ? r33467 : r33474;
double r33476 = -4.452231346955638e-267;
bool r33477 = r33450 <= r33476;
double r33478 = r33458 - r33450;
double r33479 = r33455 * r33469;
double r33480 = r33478 + r33479;
double r33481 = cbrt(r33480);
double r33482 = r33481 * r33481;
double r33483 = r33457 / r33482;
double r33484 = cbrt(r33466);
double r33485 = r33483 / r33484;
double r33486 = r33450 * r33450;
double r33487 = 4.0;
double r33488 = r33487 * r33459;
double r33489 = r33488 * r33456;
double r33490 = r33486 - r33489;
double r33491 = sqrt(r33490);
double r33492 = r33491 - r33450;
double r33493 = r33492 / r33473;
double r33494 = r33454 ? r33485 : r33493;
double r33495 = 1.2875942964765074e+78;
bool r33496 = r33450 <= r33495;
double r33497 = r33458 - r33491;
double r33498 = r33457 / r33497;
double r33499 = -r33489;
double r33500 = 2.0;
double r33501 = pow(r33450, r33500);
double r33502 = r33501 - r33489;
double r33503 = sqrt(r33502);
double r33504 = r33503 + r33450;
double r33505 = r33499 / r33504;
double r33506 = r33505 / r33473;
double r33507 = r33454 ? r33498 : r33506;
double r33508 = r33496 ? r33507 : r33475;
double r33509 = r33477 ? r33494 : r33508;
double r33510 = r33452 ? r33475 : r33509;
return r33510;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3506760573432116e+154 or 1.2875942964765074e+78 < b Initial program 38.5
Simplified38.5
Taylor expanded around inf 24.0
rmApplied add-sqr-sqrt24.0
Applied times-frac21.2
Taylor expanded around -inf 5.7
Simplified5.7
if -1.3506760573432116e+154 < b < -4.452231346955638e-267Initial program 7.7
Simplified7.7
Taylor expanded around inf 7.7
rmApplied add-sqr-sqrt7.7
Applied times-frac7.7
rmApplied add-cube-cbrt7.7
Applied associate-/r*7.7
Simplified7.7
if -4.452231346955638e-267 < b < 1.2875942964765074e+78Initial program 9.5
Simplified9.5
rmApplied add-sqr-sqrt9.5
Applied sqrt-prod9.5
rmApplied flip--9.5
Simplified9.5
Simplified9.5
Final simplification7.5
herbie shell --seed 2019303
(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))))