\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.325519151108135343753380598918343279627 \cdot 10^{154}:\\
\;\;\;\;\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(2 \cdot \frac{a \cdot c}{b} - b\right) - b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 5.031608061939102936286074782173578716838 \cdot 10^{53}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{\left(\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}\right) \cdot \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} - b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r29610 = b;
double r29611 = 0.0;
bool r29612 = r29610 >= r29611;
double r29613 = 2.0;
double r29614 = c;
double r29615 = r29613 * r29614;
double r29616 = -r29610;
double r29617 = r29610 * r29610;
double r29618 = 4.0;
double r29619 = a;
double r29620 = r29618 * r29619;
double r29621 = r29620 * r29614;
double r29622 = r29617 - r29621;
double r29623 = sqrt(r29622);
double r29624 = r29616 - r29623;
double r29625 = r29615 / r29624;
double r29626 = r29616 + r29623;
double r29627 = r29613 * r29619;
double r29628 = r29626 / r29627;
double r29629 = r29612 ? r29625 : r29628;
return r29629;
}
double f(double a, double b, double c) {
double r29630 = b;
double r29631 = -1.3255191511081353e+154;
bool r29632 = r29630 <= r29631;
double r29633 = 0.0;
bool r29634 = r29630 >= r29633;
double r29635 = 2.0;
double r29636 = c;
double r29637 = r29635 * r29636;
double r29638 = -r29630;
double r29639 = r29630 * r29630;
double r29640 = 4.0;
double r29641 = a;
double r29642 = r29640 * r29641;
double r29643 = r29642 * r29636;
double r29644 = r29639 - r29643;
double r29645 = sqrt(r29644);
double r29646 = r29638 - r29645;
double r29647 = r29637 / r29646;
double r29648 = r29641 * r29636;
double r29649 = r29648 / r29630;
double r29650 = r29635 * r29649;
double r29651 = r29650 - r29630;
double r29652 = r29651 - r29630;
double r29653 = r29635 * r29641;
double r29654 = r29652 / r29653;
double r29655 = r29634 ? r29647 : r29654;
double r29656 = 5.031608061939103e+53;
bool r29657 = r29630 <= r29656;
double r29658 = cbrt(r29644);
double r29659 = r29658 * r29658;
double r29660 = r29659 * r29658;
double r29661 = sqrt(r29660);
double r29662 = r29638 - r29661;
double r29663 = r29637 / r29662;
double r29664 = r29645 - r29630;
double r29665 = r29664 / r29653;
double r29666 = r29634 ? r29663 : r29665;
double r29667 = r29630 - r29650;
double r29668 = r29638 - r29667;
double r29669 = r29637 / r29668;
double r29670 = r29634 ? r29669 : r29665;
double r29671 = r29657 ? r29666 : r29670;
double r29672 = r29632 ? r29655 : r29671;
return r29672;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3255191511081353e+154Initial program 64.0
Simplified64.0
Taylor expanded around -inf 11.1
if -1.3255191511081353e+154 < b < 5.031608061939103e+53Initial program 8.7
Simplified8.7
rmApplied add-cube-cbrt8.9
if 5.031608061939103e+53 < b Initial program 26.3
Simplified26.3
Taylor expanded around inf 7.7
Final simplification8.8
herbie shell --seed 2019326
(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))))