\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.3696490745623736 \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(2 \cdot \frac{a \cdot c}{b} - b\right) - b}\\
\end{array}\\
\mathbf{elif}\;b \le 9.1486145584744864 \cdot 10^{42}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right) \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;-2 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r40950 = b;
double r40951 = 0.0;
bool r40952 = r40950 >= r40951;
double r40953 = -r40950;
double r40954 = r40950 * r40950;
double r40955 = 4.0;
double r40956 = a;
double r40957 = r40955 * r40956;
double r40958 = c;
double r40959 = r40957 * r40958;
double r40960 = r40954 - r40959;
double r40961 = sqrt(r40960);
double r40962 = r40953 - r40961;
double r40963 = 2.0;
double r40964 = r40963 * r40956;
double r40965 = r40962 / r40964;
double r40966 = r40963 * r40958;
double r40967 = r40953 + r40961;
double r40968 = r40966 / r40967;
double r40969 = r40952 ? r40965 : r40968;
return r40969;
}
double f(double a, double b, double c) {
double r40970 = b;
double r40971 = -1.3696490745623736e+154;
bool r40972 = r40970 <= r40971;
double r40973 = 0.0;
bool r40974 = r40970 >= r40973;
double r40975 = -r40970;
double r40976 = r40970 * r40970;
double r40977 = 4.0;
double r40978 = a;
double r40979 = r40977 * r40978;
double r40980 = c;
double r40981 = r40979 * r40980;
double r40982 = r40976 - r40981;
double r40983 = sqrt(r40982);
double r40984 = r40975 - r40983;
double r40985 = 2.0;
double r40986 = r40985 * r40978;
double r40987 = r40984 / r40986;
double r40988 = r40985 * r40980;
double r40989 = r40978 * r40980;
double r40990 = r40989 / r40970;
double r40991 = r40985 * r40990;
double r40992 = r40991 - r40970;
double r40993 = r40992 - r40970;
double r40994 = r40988 / r40993;
double r40995 = r40974 ? r40987 : r40994;
double r40996 = 9.148614558474486e+42;
bool r40997 = r40970 <= r40996;
double r40998 = cbrt(r40983);
double r40999 = r40998 * r40998;
double r41000 = r40999 * r40998;
double r41001 = r40975 - r41000;
double r41002 = r41001 / r40986;
double r41003 = r40983 - r40970;
double r41004 = r40988 / r41003;
double r41005 = r40974 ? r41002 : r41004;
double r41006 = 1.0;
double r41007 = r40980 / r40970;
double r41008 = r40970 / r40978;
double r41009 = r41007 - r41008;
double r41010 = r41006 * r41009;
double r41011 = -2.0;
double r41012 = r41011 * r41007;
double r41013 = r40974 ? r41010 : r41012;
double r41014 = r40997 ? r41005 : r41013;
double r41015 = r40972 ? r40995 : r41014;
return r41015;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3696490745623736e+154Initial program 37.0
Simplified37.0
Taylor expanded around -inf 6.5
if -1.3696490745623736e+154 < b < 9.148614558474486e+42Initial program 8.6
Simplified8.6
rmApplied add-cube-cbrt8.9
if 9.148614558474486e+42 < b Initial program 37.1
Simplified37.1
Taylor expanded around inf 11.3
Taylor expanded around 0 5.8
Simplified5.8
Taylor expanded around -inf 5.8
Final simplification7.9
herbie shell --seed 2020043 +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)))))))