\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -2.0236229236168638 \cdot 10^{122}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \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}}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left(2 \cdot \frac{a}{\frac{b}{c}} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 5.8460381901431417 \cdot 10^{112}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}double f(double a, double b, double c) {
double r29662 = b;
double r29663 = 0.0;
bool r29664 = r29662 >= r29663;
double r29665 = -r29662;
double r29666 = r29662 * r29662;
double r29667 = 4.0;
double r29668 = a;
double r29669 = r29667 * r29668;
double r29670 = c;
double r29671 = r29669 * r29670;
double r29672 = r29666 - r29671;
double r29673 = sqrt(r29672);
double r29674 = r29665 - r29673;
double r29675 = 2.0;
double r29676 = r29675 * r29668;
double r29677 = r29674 / r29676;
double r29678 = r29675 * r29670;
double r29679 = r29665 + r29673;
double r29680 = r29678 / r29679;
double r29681 = r29664 ? r29677 : r29680;
return r29681;
}
double f(double a, double b, double c) {
double r29682 = b;
double r29683 = -2.0236229236168638e+122;
bool r29684 = r29682 <= r29683;
double r29685 = 0.0;
bool r29686 = r29682 >= r29685;
double r29687 = -r29682;
double r29688 = r29682 * r29682;
double r29689 = 4.0;
double r29690 = a;
double r29691 = r29689 * r29690;
double r29692 = c;
double r29693 = r29691 * r29692;
double r29694 = r29688 - r29693;
double r29695 = sqrt(r29694);
double r29696 = sqrt(r29695);
double r29697 = r29696 * r29696;
double r29698 = r29687 - r29697;
double r29699 = 2.0;
double r29700 = r29699 * r29690;
double r29701 = r29698 / r29700;
double r29702 = r29699 * r29692;
double r29703 = r29682 / r29692;
double r29704 = r29690 / r29703;
double r29705 = r29699 * r29704;
double r29706 = r29705 - r29682;
double r29707 = r29687 + r29706;
double r29708 = r29702 / r29707;
double r29709 = r29686 ? r29701 : r29708;
double r29710 = 5.846038190143142e+112;
bool r29711 = r29682 <= r29710;
double r29712 = r29687 - r29695;
double r29713 = r29712 / r29700;
double r29714 = cbrt(r29694);
double r29715 = fabs(r29714);
double r29716 = sqrt(r29714);
double r29717 = r29715 * r29716;
double r29718 = r29687 + r29717;
double r29719 = r29702 / r29718;
double r29720 = r29686 ? r29713 : r29719;
double r29721 = r29690 * r29692;
double r29722 = r29721 / r29682;
double r29723 = r29699 * r29722;
double r29724 = r29682 - r29723;
double r29725 = r29687 - r29724;
double r29726 = r29725 / r29700;
double r29727 = r29687 + r29695;
double r29728 = r29702 / r29727;
double r29729 = r29686 ? r29726 : r29728;
double r29730 = r29711 ? r29720 : r29729;
double r29731 = r29684 ? r29709 : r29730;
return r29731;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.0236229236168638e+122Initial program 33.1
Taylor expanded around -inf 6.9
rmApplied associate-/l*2.4
rmApplied add-sqr-sqrt2.4
Applied sqrt-prod2.4
if -2.0236229236168638e+122 < b < 5.846038190143142e+112Initial program 8.9
rmApplied add-cube-cbrt9.2
Applied sqrt-prod9.2
Simplified9.2
if 5.846038190143142e+112 < b Initial program 49.8
Taylor expanded around inf 10.6
Final simplification7.9
herbie shell --seed 2020064
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))