\begin{array}{l}
\mathbf{if}\;b \ge 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 -4.322781372647085 \cdot 10^{+140}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \left(\frac{a}{b} \cdot c - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 3.634898599408338 \cdot 10^{+146}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right) \cdot \sqrt[3]{\sqrt{\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}} \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \mathsf{fma}\left(\frac{a}{b} \cdot c, -2, b\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\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}} + \left(-b\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r615445 = b;
double r615446 = 0.0;
bool r615447 = r615445 >= r615446;
double r615448 = 2.0;
double r615449 = c;
double r615450 = r615448 * r615449;
double r615451 = -r615445;
double r615452 = r615445 * r615445;
double r615453 = 4.0;
double r615454 = a;
double r615455 = r615453 * r615454;
double r615456 = r615455 * r615449;
double r615457 = r615452 - r615456;
double r615458 = sqrt(r615457);
double r615459 = r615451 - r615458;
double r615460 = r615450 / r615459;
double r615461 = r615451 + r615458;
double r615462 = r615448 * r615454;
double r615463 = r615461 / r615462;
double r615464 = r615447 ? r615460 : r615463;
return r615464;
}
double f(double a, double b, double c) {
double r615465 = b;
double r615466 = -4.322781372647085e+140;
bool r615467 = r615465 <= r615466;
double r615468 = 0.0;
bool r615469 = r615465 >= r615468;
double r615470 = 2.0;
double r615471 = c;
double r615472 = r615470 * r615471;
double r615473 = -r615465;
double r615474 = r615465 * r615465;
double r615475 = 4.0;
double r615476 = a;
double r615477 = r615475 * r615476;
double r615478 = r615477 * r615471;
double r615479 = r615474 - r615478;
double r615480 = sqrt(r615479);
double r615481 = r615473 - r615480;
double r615482 = r615472 / r615481;
double r615483 = r615476 / r615465;
double r615484 = r615483 * r615471;
double r615485 = r615484 - r615465;
double r615486 = r615470 * r615485;
double r615487 = r615470 * r615476;
double r615488 = r615486 / r615487;
double r615489 = r615469 ? r615482 : r615488;
double r615490 = 3.634898599408338e+146;
bool r615491 = r615465 <= r615490;
double r615492 = cbrt(r615480);
double r615493 = r615492 * r615492;
double r615494 = cbrt(r615479);
double r615495 = r615494 * r615494;
double r615496 = sqrt(r615495);
double r615497 = sqrt(r615494);
double r615498 = r615496 * r615497;
double r615499 = cbrt(r615498);
double r615500 = r615493 * r615499;
double r615501 = r615473 - r615500;
double r615502 = r615472 / r615501;
double r615503 = r615480 + r615473;
double r615504 = r615503 / r615487;
double r615505 = r615469 ? r615502 : r615504;
double r615506 = -2.0;
double r615507 = fma(r615484, r615506, r615465);
double r615508 = r615473 - r615507;
double r615509 = r615472 / r615508;
double r615510 = sqrt(r615480);
double r615511 = r615510 * r615510;
double r615512 = r615511 + r615473;
double r615513 = r615512 / r615487;
double r615514 = r615469 ? r615509 : r615513;
double r615515 = r615491 ? r615505 : r615514;
double r615516 = r615467 ? r615489 : r615515;
return r615516;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -4.322781372647085e+140Initial program 56.3
rmApplied add-sqr-sqrt56.3
Taylor expanded around -inf 11.8
Simplified3.3
if -4.322781372647085e+140 < b < 3.634898599408338e+146Initial program 8.4
rmApplied add-cube-cbrt8.8
rmApplied add-cube-cbrt8.8
Applied sqrt-prod8.8
if 3.634898599408338e+146 < b Initial program 36.1
rmApplied add-sqr-sqrt36.1
Taylor expanded around inf 6.5
Simplified1.3
Final simplification6.7
herbie shell --seed 2019135 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))