\begin{array}{l}
\mathbf{if}\;b \ge 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 -5.748232111683622 \cdot 10^{+41}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \left(\frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 5.966643100467746 \cdot 10^{+48}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left(-\sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right) \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(b - \frac{a}{\frac{b}{c}}\right) \cdot -2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r1004912 = b;
double r1004913 = 0.0;
bool r1004914 = r1004912 >= r1004913;
double r1004915 = 2.0;
double r1004916 = c;
double r1004917 = r1004915 * r1004916;
double r1004918 = -r1004912;
double r1004919 = r1004912 * r1004912;
double r1004920 = 4.0;
double r1004921 = a;
double r1004922 = r1004920 * r1004921;
double r1004923 = r1004922 * r1004916;
double r1004924 = r1004919 - r1004923;
double r1004925 = sqrt(r1004924);
double r1004926 = r1004918 - r1004925;
double r1004927 = r1004917 / r1004926;
double r1004928 = r1004918 + r1004925;
double r1004929 = r1004915 * r1004921;
double r1004930 = r1004928 / r1004929;
double r1004931 = r1004914 ? r1004927 : r1004930;
return r1004931;
}
double f(double a, double b, double c) {
double r1004932 = b;
double r1004933 = -5.748232111683622e+41;
bool r1004934 = r1004932 <= r1004933;
double r1004935 = 0.0;
bool r1004936 = r1004932 >= r1004935;
double r1004937 = 2.0;
double r1004938 = c;
double r1004939 = r1004937 * r1004938;
double r1004940 = -r1004932;
double r1004941 = r1004932 * r1004932;
double r1004942 = 4.0;
double r1004943 = a;
double r1004944 = r1004942 * r1004943;
double r1004945 = r1004944 * r1004938;
double r1004946 = r1004941 - r1004945;
double r1004947 = sqrt(r1004946);
double r1004948 = r1004940 - r1004947;
double r1004949 = r1004939 / r1004948;
double r1004950 = r1004943 * r1004938;
double r1004951 = r1004950 / r1004932;
double r1004952 = r1004951 - r1004932;
double r1004953 = r1004937 * r1004952;
double r1004954 = r1004937 * r1004943;
double r1004955 = r1004953 / r1004954;
double r1004956 = r1004936 ? r1004949 : r1004955;
double r1004957 = 5.966643100467746e+48;
bool r1004958 = r1004932 <= r1004957;
double r1004959 = sqrt(r1004947);
double r1004960 = -r1004959;
double r1004961 = r1004960 * r1004959;
double r1004962 = r1004940 + r1004961;
double r1004963 = r1004939 / r1004962;
double r1004964 = r1004947 + r1004940;
double r1004965 = r1004964 / r1004954;
double r1004966 = r1004936 ? r1004963 : r1004965;
double r1004967 = r1004932 / r1004938;
double r1004968 = r1004943 / r1004967;
double r1004969 = r1004932 - r1004968;
double r1004970 = -2.0;
double r1004971 = r1004969 * r1004970;
double r1004972 = r1004939 / r1004971;
double r1004973 = r1004936 ? r1004972 : r1004965;
double r1004974 = r1004958 ? r1004966 : r1004973;
double r1004975 = r1004934 ? r1004956 : r1004974;
return r1004975;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -5.748232111683622e+41Initial program 34.2
Taylor expanded around -inf 11.0
Simplified11.0
if -5.748232111683622e+41 < b < 5.966643100467746e+48Initial program 9.5
rmApplied add-sqr-sqrt9.5
Applied sqrt-prod9.6
rmApplied neg-sub09.6
Applied associate--l-9.6
if 5.966643100467746e+48 < b Initial program 25.0
rmApplied add-sqr-sqrt25.0
Applied sqrt-prod25.1
rmApplied neg-sub025.1
Applied associate--l-25.1
Taylor expanded around inf 6.9
Simplified3.6
Final simplification8.2
herbie shell --seed 2019164
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))