\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.3389186356061464 \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(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 1.88262502807311259 \cdot 10^{103}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\mathsf{fma}\left(-\sqrt{b}, \sqrt{b}, -\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}{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}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\mathsf{fma}\left(2, \frac{a \cdot c}{b}, -2 \cdot b\right)}{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}double f(double a, double b, double c) {
double r34958 = b;
double r34959 = 0.0;
bool r34960 = r34958 >= r34959;
double r34961 = -r34958;
double r34962 = r34958 * r34958;
double r34963 = 4.0;
double r34964 = a;
double r34965 = r34963 * r34964;
double r34966 = c;
double r34967 = r34965 * r34966;
double r34968 = r34962 - r34967;
double r34969 = sqrt(r34968);
double r34970 = r34961 - r34969;
double r34971 = 2.0;
double r34972 = r34971 * r34964;
double r34973 = r34970 / r34972;
double r34974 = r34971 * r34966;
double r34975 = r34961 + r34969;
double r34976 = r34974 / r34975;
double r34977 = r34960 ? r34973 : r34976;
return r34977;
}
double f(double a, double b, double c) {
double r34978 = b;
double r34979 = -1.3389186356061464e+154;
bool r34980 = r34978 <= r34979;
double r34981 = 0.0;
bool r34982 = r34978 >= r34981;
double r34983 = -r34978;
double r34984 = r34978 * r34978;
double r34985 = 4.0;
double r34986 = a;
double r34987 = r34985 * r34986;
double r34988 = c;
double r34989 = r34987 * r34988;
double r34990 = r34984 - r34989;
double r34991 = sqrt(r34990);
double r34992 = r34983 - r34991;
double r34993 = 2.0;
double r34994 = r34993 * r34986;
double r34995 = r34992 / r34994;
double r34996 = r34993 * r34988;
double r34997 = r34986 * r34988;
double r34998 = r34997 / r34978;
double r34999 = r34993 * r34998;
double r35000 = r34999 - r34978;
double r35001 = r34983 + r35000;
double r35002 = r34996 / r35001;
double r35003 = r34982 ? r34995 : r35002;
double r35004 = 1.8826250280731126e+103;
bool r35005 = r34978 <= r35004;
double r35006 = sqrt(r34978);
double r35007 = -r35006;
double r35008 = -r34991;
double r35009 = fma(r35007, r35006, r35008);
double r35010 = r35009 / r34994;
double r35011 = r34983 + r34991;
double r35012 = r34996 / r35011;
double r35013 = r34982 ? r35010 : r35012;
double r35014 = -2.0;
double r35015 = r35014 * r34978;
double r35016 = fma(r34993, r34998, r35015);
double r35017 = r35016 / r34994;
double r35018 = r34982 ? r35017 : r35012;
double r35019 = r35005 ? r35013 : r35018;
double r35020 = r34980 ? r35003 : r35019;
return r35020;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.3389186356061464e+154Initial program 37.9
Taylor expanded around -inf 6.0
if -1.3389186356061464e+154 < b < 1.8826250280731126e+103Initial program 8.0
rmApplied add-sqr-sqrt8.0
Applied distribute-lft-neg-in8.0
Applied fma-neg8.0
if 1.8826250280731126e+103 < b Initial program 48.6
Taylor expanded around inf 10.2
Simplified10.2
Final simplification8.0
herbie shell --seed 2019198 +o rules:numerics
(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)))))))