\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}{2 \cdot \left(\frac{a}{\sqrt{b}} \cdot \frac{c}{\sqrt{b}}\right) - 2 \cdot b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(2 \cdot \frac{a \cdot c}{b} - b\right) - b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le -4.452231346955637703324616244948712027068 \cdot 10^{-267} \lor \neg \left(b \le 1.287594296476507417293820707954348336152 \cdot 10^{78}\right):\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\left(\frac{a}{\sqrt{b}} \cdot \frac{\sqrt[3]{c} \cdot \sqrt[3]{c}}{\left|\sqrt[3]{b}\right|}\right) \cdot \frac{\sqrt[3]{c}}{\sqrt{\sqrt[3]{b}}}\right) - 2 \cdot b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \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) - \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}double f(double a, double b, double c) {
double r30439 = b;
double r30440 = 0.0;
bool r30441 = r30439 >= r30440;
double r30442 = 2.0;
double r30443 = c;
double r30444 = r30442 * r30443;
double r30445 = -r30439;
double r30446 = r30439 * r30439;
double r30447 = 4.0;
double r30448 = a;
double r30449 = r30447 * r30448;
double r30450 = r30449 * r30443;
double r30451 = r30446 - r30450;
double r30452 = sqrt(r30451);
double r30453 = r30445 - r30452;
double r30454 = r30444 / r30453;
double r30455 = r30445 + r30452;
double r30456 = r30442 * r30448;
double r30457 = r30455 / r30456;
double r30458 = r30441 ? r30454 : r30457;
return r30458;
}
double f(double a, double b, double c) {
double r30459 = b;
double r30460 = -1.3506760573432116e+154;
bool r30461 = r30459 <= r30460;
double r30462 = 0.0;
bool r30463 = r30459 >= r30462;
double r30464 = 2.0;
double r30465 = c;
double r30466 = r30464 * r30465;
double r30467 = a;
double r30468 = sqrt(r30459);
double r30469 = r30467 / r30468;
double r30470 = r30465 / r30468;
double r30471 = r30469 * r30470;
double r30472 = r30464 * r30471;
double r30473 = 2.0;
double r30474 = r30473 * r30459;
double r30475 = r30472 - r30474;
double r30476 = r30466 / r30475;
double r30477 = r30467 * r30465;
double r30478 = r30477 / r30459;
double r30479 = r30464 * r30478;
double r30480 = r30479 - r30459;
double r30481 = r30480 - r30459;
double r30482 = r30464 * r30467;
double r30483 = r30481 / r30482;
double r30484 = r30463 ? r30476 : r30483;
double r30485 = -4.452231346955638e-267;
bool r30486 = r30459 <= r30485;
double r30487 = 1.2875942964765074e+78;
bool r30488 = r30459 <= r30487;
double r30489 = !r30488;
bool r30490 = r30486 || r30489;
double r30491 = cbrt(r30465);
double r30492 = r30491 * r30491;
double r30493 = cbrt(r30459);
double r30494 = fabs(r30493);
double r30495 = r30492 / r30494;
double r30496 = r30469 * r30495;
double r30497 = sqrt(r30493);
double r30498 = r30491 / r30497;
double r30499 = r30496 * r30498;
double r30500 = r30464 * r30499;
double r30501 = r30500 - r30474;
double r30502 = r30466 / r30501;
double r30503 = r30459 * r30459;
double r30504 = 4.0;
double r30505 = r30504 * r30467;
double r30506 = r30505 * r30465;
double r30507 = r30503 - r30506;
double r30508 = sqrt(r30507);
double r30509 = r30508 - r30459;
double r30510 = r30509 / r30482;
double r30511 = r30463 ? r30502 : r30510;
double r30512 = -r30459;
double r30513 = r30512 - r30508;
double r30514 = r30466 / r30513;
double r30515 = -r30506;
double r30516 = pow(r30459, r30473);
double r30517 = r30516 - r30506;
double r30518 = sqrt(r30517);
double r30519 = r30518 + r30459;
double r30520 = r30515 / r30519;
double r30521 = r30520 / r30482;
double r30522 = r30463 ? r30514 : r30521;
double r30523 = r30490 ? r30511 : r30522;
double r30524 = r30461 ? r30484 : r30523;
return r30524;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3506760573432116e+154Initial program 64.0
Simplified64.0
Taylor expanded around inf 64.0
rmApplied add-sqr-sqrt64.0
Applied times-frac64.0
Taylor expanded around -inf 11.8
if -1.3506760573432116e+154 < b < -4.452231346955638e-267 or 1.2875942964765074e+78 < b Initial program 16.9
Simplified16.9
Taylor expanded around inf 7.5
rmApplied add-sqr-sqrt7.5
Applied times-frac5.6
rmApplied add-cube-cbrt5.6
Applied sqrt-prod5.6
Applied add-cube-cbrt5.6
Applied times-frac5.6
Applied associate-*r*5.6
Simplified5.6
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))))