\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.990473150623290141018988832760520387873 \cdot 10^{112}:\\
\;\;\;\;\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{c \cdot 2}{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 3.932191065039699403664081156929555460562 \cdot 10^{107}:\\
\;\;\;\;\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{c \cdot 2}{\sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\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}}} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}double f(double a, double b, double c) {
double r918942 = b;
double r918943 = 0.0;
bool r918944 = r918942 >= r918943;
double r918945 = -r918942;
double r918946 = r918942 * r918942;
double r918947 = 4.0;
double r918948 = a;
double r918949 = r918947 * r918948;
double r918950 = c;
double r918951 = r918949 * r918950;
double r918952 = r918946 - r918951;
double r918953 = sqrt(r918952);
double r918954 = r918945 - r918953;
double r918955 = 2.0;
double r918956 = r918955 * r918948;
double r918957 = r918954 / r918956;
double r918958 = r918955 * r918950;
double r918959 = r918945 + r918953;
double r918960 = r918958 / r918959;
double r918961 = r918944 ? r918957 : r918960;
return r918961;
}
double f(double a, double b, double c) {
double r918962 = b;
double r918963 = -1.99047315062329e+112;
bool r918964 = r918962 <= r918963;
double r918965 = 0.0;
bool r918966 = r918962 >= r918965;
double r918967 = -r918962;
double r918968 = r918962 * r918962;
double r918969 = 4.0;
double r918970 = a;
double r918971 = r918969 * r918970;
double r918972 = c;
double r918973 = r918971 * r918972;
double r918974 = r918968 - r918973;
double r918975 = sqrt(r918974);
double r918976 = r918967 - r918975;
double r918977 = 2.0;
double r918978 = r918977 * r918970;
double r918979 = r918976 / r918978;
double r918980 = r918972 * r918977;
double r918981 = r918970 * r918972;
double r918982 = r918981 / r918962;
double r918983 = r918977 * r918982;
double r918984 = r918983 - r918962;
double r918985 = r918967 + r918984;
double r918986 = r918980 / r918985;
double r918987 = r918966 ? r918979 : r918986;
double r918988 = 3.9321910650396994e+107;
bool r918989 = r918962 <= r918988;
double r918990 = sqrt(r918975);
double r918991 = cbrt(r918975);
double r918992 = r918991 * r918991;
double r918993 = r918992 * r918991;
double r918994 = sqrt(r918993);
double r918995 = r918990 * r918994;
double r918996 = r918995 + r918967;
double r918997 = r918980 / r918996;
double r918998 = r918966 ? r918979 : r918997;
double r918999 = r918962 - r918983;
double r919000 = r918967 - r918999;
double r919001 = r919000 / r918978;
double r919002 = r918975 + r918967;
double r919003 = r918980 / r919002;
double r919004 = r918966 ? r919001 : r919003;
double r919005 = r918989 ? r918998 : r919004;
double r919006 = r918964 ? r918987 : r919005;
return r919006;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.99047315062329e+112Initial program 31.8
Taylor expanded around -inf 6.9
if -1.99047315062329e+112 < b < 3.9321910650396994e+107Initial program 9.4
rmApplied add-sqr-sqrt9.4
Applied sqrt-prod9.5
rmApplied add-cube-cbrt9.6
if 3.9321910650396994e+107 < b Initial program 49.2
Taylor expanded around inf 10.0
Final simplification9.1
herbie shell --seed 2019171
(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)))))))