\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 r29612 = b;
double r29613 = 0.0;
bool r29614 = r29612 >= r29613;
double r29615 = 2.0;
double r29616 = c;
double r29617 = r29615 * r29616;
double r29618 = -r29612;
double r29619 = r29612 * r29612;
double r29620 = 4.0;
double r29621 = a;
double r29622 = r29620 * r29621;
double r29623 = r29622 * r29616;
double r29624 = r29619 - r29623;
double r29625 = sqrt(r29624);
double r29626 = r29618 - r29625;
double r29627 = r29617 / r29626;
double r29628 = r29618 + r29625;
double r29629 = r29615 * r29621;
double r29630 = r29628 / r29629;
double r29631 = r29614 ? r29627 : r29630;
return r29631;
}
double f(double a, double b, double c) {
double r29632 = b;
double r29633 = -1.3255191511081353e+154;
bool r29634 = r29632 <= r29633;
double r29635 = 0.0;
bool r29636 = r29632 >= r29635;
double r29637 = 2.0;
double r29638 = c;
double r29639 = r29637 * r29638;
double r29640 = -r29632;
double r29641 = r29632 * r29632;
double r29642 = 4.0;
double r29643 = a;
double r29644 = r29642 * r29643;
double r29645 = r29644 * r29638;
double r29646 = r29641 - r29645;
double r29647 = sqrt(r29646);
double r29648 = r29640 - r29647;
double r29649 = r29639 / r29648;
double r29650 = r29643 * r29638;
double r29651 = r29650 / r29632;
double r29652 = r29637 * r29651;
double r29653 = r29652 - r29632;
double r29654 = r29653 - r29632;
double r29655 = r29637 * r29643;
double r29656 = r29654 / r29655;
double r29657 = r29636 ? r29649 : r29656;
double r29658 = 5.031608061939103e+53;
bool r29659 = r29632 <= r29658;
double r29660 = cbrt(r29646);
double r29661 = r29660 * r29660;
double r29662 = r29661 * r29660;
double r29663 = sqrt(r29662);
double r29664 = r29640 - r29663;
double r29665 = r29639 / r29664;
double r29666 = r29647 - r29632;
double r29667 = r29666 / r29655;
double r29668 = r29636 ? r29665 : r29667;
double r29669 = r29632 - r29652;
double r29670 = r29640 - r29669;
double r29671 = r29639 / r29670;
double r29672 = r29636 ? r29671 : r29667;
double r29673 = r29659 ? r29668 : r29672;
double r29674 = r29634 ? r29657 : r29673;
return r29674;
}



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))))