\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 -2.29531655658226465 \cdot 10^{153}:\\
\;\;\;\;\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 1.45407357295376792 \cdot 10^{77}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(\sqrt[3]{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right) \cdot \sqrt[3]{\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}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\left(\sqrt[3]{a} \cdot \sqrt[3]{a}\right) \cdot \left(\sqrt[3]{a} \cdot \frac{c}{b}\right)\right) - 2 \cdot b}\\
\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 r33597 = b;
double r33598 = 0.0;
bool r33599 = r33597 >= r33598;
double r33600 = 2.0;
double r33601 = c;
double r33602 = r33600 * r33601;
double r33603 = -r33597;
double r33604 = r33597 * r33597;
double r33605 = 4.0;
double r33606 = a;
double r33607 = r33605 * r33606;
double r33608 = r33607 * r33601;
double r33609 = r33604 - r33608;
double r33610 = sqrt(r33609);
double r33611 = r33603 - r33610;
double r33612 = r33602 / r33611;
double r33613 = r33603 + r33610;
double r33614 = r33600 * r33606;
double r33615 = r33613 / r33614;
double r33616 = r33599 ? r33612 : r33615;
return r33616;
}
double f(double a, double b, double c) {
double r33617 = b;
double r33618 = -2.2953165565822647e+153;
bool r33619 = r33617 <= r33618;
double r33620 = 0.0;
bool r33621 = r33617 >= r33620;
double r33622 = 2.0;
double r33623 = c;
double r33624 = r33622 * r33623;
double r33625 = -r33617;
double r33626 = r33617 * r33617;
double r33627 = 4.0;
double r33628 = a;
double r33629 = r33627 * r33628;
double r33630 = r33629 * r33623;
double r33631 = r33626 - r33630;
double r33632 = sqrt(r33631);
double r33633 = r33625 - r33632;
double r33634 = r33624 / r33633;
double r33635 = r33628 * r33623;
double r33636 = r33635 / r33617;
double r33637 = r33622 * r33636;
double r33638 = 2.0;
double r33639 = r33638 * r33617;
double r33640 = r33637 - r33639;
double r33641 = r33622 * r33628;
double r33642 = r33640 / r33641;
double r33643 = r33621 ? r33634 : r33642;
double r33644 = 1.454073572953768e+77;
bool r33645 = r33617 <= r33644;
double r33646 = cbrt(r33633);
double r33647 = r33646 * r33646;
double r33648 = r33647 * r33646;
double r33649 = r33624 / r33648;
double r33650 = r33625 + r33632;
double r33651 = r33650 / r33641;
double r33652 = r33621 ? r33649 : r33651;
double r33653 = cbrt(r33628);
double r33654 = r33653 * r33653;
double r33655 = r33623 / r33617;
double r33656 = r33653 * r33655;
double r33657 = r33654 * r33656;
double r33658 = r33622 * r33657;
double r33659 = r33658 - r33639;
double r33660 = r33624 / r33659;
double r33661 = r33621 ? r33660 : r33651;
double r33662 = r33645 ? r33652 : r33661;
double r33663 = r33619 ? r33643 : r33662;
return r33663;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.2953165565822647e+153Initial program 63.6
Taylor expanded around -inf 11.6
if -2.2953165565822647e+153 < b < 1.454073572953768e+77Initial program 8.8
rmApplied add-cube-cbrt9.3
if 1.454073572953768e+77 < b Initial program 27.7
Taylor expanded around inf 6.6
rmApplied *-un-lft-identity6.6
Applied times-frac3.3
Simplified3.3
rmApplied add-cube-cbrt3.3
Applied associate-*l*3.3
Final simplification8.0
herbie shell --seed 2020042
(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))))