\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.367002129773412099713675796535889049973 \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{\mathsf{fma}\left(2, \frac{a \cdot c}{b}, -2 \cdot b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 17754385347718217013022045448400749461500:\\
\;\;\;\;\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}{\left(-b\right) - \left(b - 2 \cdot \left(\left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{\sqrt[3]{c} \cdot \sqrt[3]{c}}{\sqrt[3]{\sqrt{b}}}\right) \cdot \frac{\sqrt[3]{c}}{\sqrt[3]{\sqrt{b}}}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\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}\\
\end{array}double f(double a, double b, double c) {
double r42931 = b;
double r42932 = 0.0;
bool r42933 = r42931 >= r42932;
double r42934 = 2.0;
double r42935 = c;
double r42936 = r42934 * r42935;
double r42937 = -r42931;
double r42938 = r42931 * r42931;
double r42939 = 4.0;
double r42940 = a;
double r42941 = r42939 * r42940;
double r42942 = r42941 * r42935;
double r42943 = r42938 - r42942;
double r42944 = sqrt(r42943);
double r42945 = r42937 - r42944;
double r42946 = r42936 / r42945;
double r42947 = r42937 + r42944;
double r42948 = r42934 * r42940;
double r42949 = r42947 / r42948;
double r42950 = r42933 ? r42946 : r42949;
return r42950;
}
double f(double a, double b, double c) {
double r42951 = b;
double r42952 = -1.367002129773412e+154;
bool r42953 = r42951 <= r42952;
double r42954 = 0.0;
bool r42955 = r42951 >= r42954;
double r42956 = 2.0;
double r42957 = c;
double r42958 = r42956 * r42957;
double r42959 = -r42951;
double r42960 = r42951 * r42951;
double r42961 = 4.0;
double r42962 = a;
double r42963 = r42961 * r42962;
double r42964 = r42963 * r42957;
double r42965 = r42960 - r42964;
double r42966 = sqrt(r42965);
double r42967 = r42959 - r42966;
double r42968 = r42958 / r42967;
double r42969 = r42962 * r42957;
double r42970 = r42969 / r42951;
double r42971 = -2.0;
double r42972 = r42971 * r42951;
double r42973 = fma(r42956, r42970, r42972);
double r42974 = r42956 * r42962;
double r42975 = r42973 / r42974;
double r42976 = r42955 ? r42968 : r42975;
double r42977 = 1.7754385347718217e+40;
bool r42978 = r42951 <= r42977;
double r42979 = sqrt(r42966);
double r42980 = r42979 * r42979;
double r42981 = r42959 - r42980;
double r42982 = r42958 / r42981;
double r42983 = r42959 + r42966;
double r42984 = r42983 / r42974;
double r42985 = r42955 ? r42982 : r42984;
double r42986 = cbrt(r42951);
double r42987 = r42986 * r42986;
double r42988 = r42962 / r42987;
double r42989 = cbrt(r42957);
double r42990 = r42989 * r42989;
double r42991 = sqrt(r42951);
double r42992 = cbrt(r42991);
double r42993 = r42990 / r42992;
double r42994 = r42988 * r42993;
double r42995 = r42989 / r42992;
double r42996 = r42994 * r42995;
double r42997 = r42956 * r42996;
double r42998 = r42951 - r42997;
double r42999 = r42959 - r42998;
double r43000 = r42958 / r42999;
double r43001 = r42959 + r42980;
double r43002 = r43001 / r42974;
double r43003 = r42955 ? r43000 : r43002;
double r43004 = r42978 ? r42985 : r43003;
double r43005 = r42953 ? r42976 : r43004;
return r43005;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.367002129773412e+154Initial program 64.0
Taylor expanded around -inf 11.5
Simplified11.5
if -1.367002129773412e+154 < b < 1.7754385347718217e+40Initial program 9.6
rmApplied add-sqr-sqrt9.6
Applied sqrt-prod9.7
if 1.7754385347718217e+40 < b Initial program 24.0
Taylor expanded around inf 7.5
rmApplied add-cube-cbrt7.5
Applied times-frac4.5
rmApplied add-sqr-sqrt4.5
Applied cbrt-prod4.5
Applied add-cube-cbrt4.5
Applied times-frac4.5
Applied associate-*r*4.5
rmApplied add-sqr-sqrt4.5
Applied sqrt-prod4.5
Final simplification8.3
herbie shell --seed 2019323 +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))))