\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.36238828016548459 \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(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 6.93006590621689121 \cdot 10^{79}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\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}}}\\
\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 \frac{a \cdot c}{b} - 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 r42944 = b;
double r42945 = 0.0;
bool r42946 = r42944 >= r42945;
double r42947 = 2.0;
double r42948 = c;
double r42949 = r42947 * r42948;
double r42950 = -r42944;
double r42951 = r42944 * r42944;
double r42952 = 4.0;
double r42953 = a;
double r42954 = r42952 * r42953;
double r42955 = r42954 * r42948;
double r42956 = r42951 - r42955;
double r42957 = sqrt(r42956);
double r42958 = r42950 - r42957;
double r42959 = r42949 / r42958;
double r42960 = r42950 + r42957;
double r42961 = r42947 * r42953;
double r42962 = r42960 / r42961;
double r42963 = r42946 ? r42959 : r42962;
return r42963;
}
double f(double a, double b, double c) {
double r42964 = b;
double r42965 = -1.3623882801654846e+154;
bool r42966 = r42964 <= r42965;
double r42967 = 0.0;
bool r42968 = r42964 >= r42967;
double r42969 = 2.0;
double r42970 = c;
double r42971 = r42969 * r42970;
double r42972 = -r42964;
double r42973 = r42964 * r42964;
double r42974 = 4.0;
double r42975 = a;
double r42976 = r42974 * r42975;
double r42977 = r42976 * r42970;
double r42978 = r42973 - r42977;
double r42979 = sqrt(r42978);
double r42980 = r42972 - r42979;
double r42981 = r42971 / r42980;
double r42982 = r42975 * r42970;
double r42983 = r42982 / r42964;
double r42984 = r42969 * r42983;
double r42985 = r42984 - r42964;
double r42986 = r42972 + r42985;
double r42987 = r42969 * r42975;
double r42988 = r42986 / r42987;
double r42989 = r42968 ? r42981 : r42988;
double r42990 = 6.930065906216891e+79;
bool r42991 = r42964 <= r42990;
double r42992 = sqrt(r42979);
double r42993 = r42992 * r42992;
double r42994 = r42972 - r42993;
double r42995 = r42971 / r42994;
double r42996 = r42972 + r42979;
double r42997 = r42996 / r42987;
double r42998 = r42968 ? r42995 : r42997;
double r42999 = 2.0;
double r43000 = r42999 * r42964;
double r43001 = r42984 - r43000;
double r43002 = r42971 / r43001;
double r43003 = r42968 ? r43002 : r42997;
double r43004 = r42991 ? r42998 : r43003;
double r43005 = r42966 ? r42989 : r43004;
return r43005;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3623882801654846e+154Initial program 64.0
Taylor expanded around -inf 10.0
if -1.3623882801654846e+154 < b < 6.930065906216891e+79Initial program 8.9
rmApplied add-sqr-sqrt8.9
Applied sqrt-prod9.0
if 6.930065906216891e+79 < b Initial program 27.4
rmApplied add-sqr-sqrt27.4
Applied sqrt-prod27.5
Taylor expanded around inf 6.7
Final simplification8.5
herbie shell --seed 2020003 +o rules:numerics
(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))))