\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 -3.694599013474429692184066721366005417629 \cdot 10^{74}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\frac{\left(b \cdot b - b \cdot b\right) + 4 \cdot \left(c \cdot a\right)}{\sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} + \left(-b\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\frac{\sqrt[3]{c} \cdot \left(\left(2 \cdot a\right) \cdot \sqrt[3]{c}\right)}{\frac{b}{\sqrt[3]{c}}} + b \cdot -2}\\
\end{array}\\
\mathbf{elif}\;b \le 5.976560529058750190041758629702039537637 \cdot 10^{77}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - c \cdot \left(4 \cdot a\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\left(\sqrt[3]{\sqrt{b \cdot b - \left(c \cdot 4\right) \cdot a}} \cdot \sqrt[3]{\sqrt{b \cdot b - \left(c \cdot 4\right) \cdot a}}\right) \cdot \sqrt[3]{\sqrt{b \cdot b - \left(c \cdot 4\right) \cdot a}} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\frac{2 \cdot a}{\frac{b}{c}} + b \cdot -2}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\left(-b\right) + \sqrt{b \cdot b - c \cdot \left(4 \cdot a\right)}}\\
\end{array}double f(double a, double b, double c) {
double r38938 = b;
double r38939 = 0.0;
bool r38940 = r38938 >= r38939;
double r38941 = -r38938;
double r38942 = r38938 * r38938;
double r38943 = 4.0;
double r38944 = a;
double r38945 = r38943 * r38944;
double r38946 = c;
double r38947 = r38945 * r38946;
double r38948 = r38942 - r38947;
double r38949 = sqrt(r38948);
double r38950 = r38941 - r38949;
double r38951 = 2.0;
double r38952 = r38951 * r38944;
double r38953 = r38950 / r38952;
double r38954 = r38951 * r38946;
double r38955 = r38941 + r38949;
double r38956 = r38954 / r38955;
double r38957 = r38940 ? r38953 : r38956;
return r38957;
}
double f(double a, double b, double c) {
double r38958 = b;
double r38959 = -3.6945990134744297e+74;
bool r38960 = r38958 <= r38959;
double r38961 = 0.0;
bool r38962 = r38958 >= r38961;
double r38963 = r38958 * r38958;
double r38964 = r38963 - r38963;
double r38965 = 4.0;
double r38966 = c;
double r38967 = a;
double r38968 = r38966 * r38967;
double r38969 = r38965 * r38968;
double r38970 = r38964 + r38969;
double r38971 = r38963 - r38969;
double r38972 = sqrt(r38971);
double r38973 = -r38958;
double r38974 = r38972 + r38973;
double r38975 = r38970 / r38974;
double r38976 = 2.0;
double r38977 = r38976 * r38967;
double r38978 = r38975 / r38977;
double r38979 = r38966 * r38976;
double r38980 = cbrt(r38966);
double r38981 = r38977 * r38980;
double r38982 = r38980 * r38981;
double r38983 = r38958 / r38980;
double r38984 = r38982 / r38983;
double r38985 = -2.0;
double r38986 = r38958 * r38985;
double r38987 = r38984 + r38986;
double r38988 = r38979 / r38987;
double r38989 = r38962 ? r38978 : r38988;
double r38990 = 5.97656052905875e+77;
bool r38991 = r38958 <= r38990;
double r38992 = r38965 * r38967;
double r38993 = r38966 * r38992;
double r38994 = r38963 - r38993;
double r38995 = sqrt(r38994);
double r38996 = r38973 - r38995;
double r38997 = r38996 / r38977;
double r38998 = r38966 * r38965;
double r38999 = r38998 * r38967;
double r39000 = r38963 - r38999;
double r39001 = sqrt(r39000);
double r39002 = cbrt(r39001);
double r39003 = r39002 * r39002;
double r39004 = r39003 * r39002;
double r39005 = r39004 + r38973;
double r39006 = r38979 / r39005;
double r39007 = r38962 ? r38997 : r39006;
double r39008 = r38958 / r38966;
double r39009 = r38977 / r39008;
double r39010 = r39009 + r38986;
double r39011 = r39010 / r38977;
double r39012 = r38973 + r38995;
double r39013 = r38979 / r39012;
double r39014 = r38962 ? r39011 : r39013;
double r39015 = r38991 ? r39007 : r39014;
double r39016 = r38960 ? r38989 : r39015;
return r39016;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.6945990134744297e+74Initial program 28.0
Taylor expanded around -inf 7.2
Simplified3.7
rmApplied add-cube-cbrt3.7
Applied *-un-lft-identity3.7
Applied times-frac3.7
Applied associate-/r*5.3
Simplified5.3
rmApplied flip--5.3
Simplified5.3
Simplified5.3
if -3.6945990134744297e+74 < b < 5.97656052905875e+77Initial program 9.4
rmApplied add-cube-cbrt9.9
Simplified9.9
Simplified9.8
if 5.97656052905875e+77 < b Initial program 42.5
Taylor expanded around inf 11.1
Simplified5.0
Final simplification7.8
herbie shell --seed 2019196
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)) (/ (* 2.0 c) (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))))))