\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 -1.332628512181745325007346471841058575164 \cdot 10^{154}:\\
\;\;\;\;\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(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 5.663542808125346972065949754166106839438 \cdot 10^{107}:\\
\;\;\;\;\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) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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 r40712 = b;
double r40713 = 0.0;
bool r40714 = r40712 >= r40713;
double r40715 = -r40712;
double r40716 = r40712 * r40712;
double r40717 = 4.0;
double r40718 = a;
double r40719 = r40717 * r40718;
double r40720 = c;
double r40721 = r40719 * r40720;
double r40722 = r40716 - r40721;
double r40723 = sqrt(r40722);
double r40724 = r40715 - r40723;
double r40725 = 2.0;
double r40726 = r40725 * r40718;
double r40727 = r40724 / r40726;
double r40728 = r40725 * r40720;
double r40729 = r40715 + r40723;
double r40730 = r40728 / r40729;
double r40731 = r40714 ? r40727 : r40730;
return r40731;
}
double f(double a, double b, double c) {
double r40732 = b;
double r40733 = -1.3326285121817453e+154;
bool r40734 = r40732 <= r40733;
double r40735 = 0.0;
bool r40736 = r40732 >= r40735;
double r40737 = -r40732;
double r40738 = r40732 * r40732;
double r40739 = 4.0;
double r40740 = a;
double r40741 = r40739 * r40740;
double r40742 = c;
double r40743 = r40741 * r40742;
double r40744 = r40738 - r40743;
double r40745 = sqrt(r40744);
double r40746 = r40737 - r40745;
double r40747 = 2.0;
double r40748 = r40747 * r40740;
double r40749 = r40746 / r40748;
double r40750 = r40747 * r40742;
double r40751 = r40740 * r40742;
double r40752 = r40751 / r40732;
double r40753 = r40747 * r40752;
double r40754 = r40753 - r40732;
double r40755 = r40737 + r40754;
double r40756 = r40750 / r40755;
double r40757 = r40736 ? r40749 : r40756;
double r40758 = 5.663542808125347e+107;
bool r40759 = r40732 <= r40758;
double r40760 = sqrt(r40745);
double r40761 = r40760 * r40760;
double r40762 = r40737 - r40761;
double r40763 = r40762 / r40748;
double r40764 = r40737 + r40745;
double r40765 = r40750 / r40764;
double r40766 = r40736 ? r40763 : r40765;
double r40767 = 2.0;
double r40768 = r40767 * r40732;
double r40769 = r40753 - r40768;
double r40770 = r40769 / r40748;
double r40771 = r40736 ? r40770 : r40765;
double r40772 = r40759 ? r40766 : r40771;
double r40773 = r40734 ? r40757 : r40772;
return r40773;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3326285121817453e+154Initial program 38.8
Taylor expanded around -inf 6.9
if -1.3326285121817453e+154 < b < 5.663542808125347e+107Initial program 8.4
rmApplied add-sqr-sqrt8.4
Applied sqrt-prod8.5
if 5.663542808125347e+107 < b Initial program 48.1
rmApplied add-sqr-sqrt48.1
Applied sqrt-prod48.2
Taylor expanded around inf 10.0
Final simplification8.5
herbie shell --seed 2019352 +o rules:numerics
(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)))))))