\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le 0.09946845057046652:\\
\;\;\;\;\frac{\frac{\frac{\left(b \cdot b - 4 \cdot \left(c \cdot a\right)\right) - b \cdot b}{b + \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}}}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{c}{b} \cdot -2}{2}\\
\end{array}double f(double a, double b, double c) {
double r622964 = b;
double r622965 = -r622964;
double r622966 = r622964 * r622964;
double r622967 = 4.0;
double r622968 = a;
double r622969 = r622967 * r622968;
double r622970 = c;
double r622971 = r622969 * r622970;
double r622972 = r622966 - r622971;
double r622973 = sqrt(r622972);
double r622974 = r622965 + r622973;
double r622975 = 2.0;
double r622976 = r622975 * r622968;
double r622977 = r622974 / r622976;
return r622977;
}
double f(double a, double b, double c) {
double r622978 = b;
double r622979 = 0.09946845057046652;
bool r622980 = r622978 <= r622979;
double r622981 = r622978 * r622978;
double r622982 = 4.0;
double r622983 = c;
double r622984 = a;
double r622985 = r622983 * r622984;
double r622986 = r622982 * r622985;
double r622987 = r622981 - r622986;
double r622988 = r622987 - r622981;
double r622989 = sqrt(r622987);
double r622990 = r622978 + r622989;
double r622991 = r622988 / r622990;
double r622992 = r622991 / r622984;
double r622993 = 2.0;
double r622994 = r622992 / r622993;
double r622995 = r622983 / r622978;
double r622996 = -2.0;
double r622997 = r622995 * r622996;
double r622998 = r622997 / r622993;
double r622999 = r622980 ? r622994 : r622998;
return r622999;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 0.09946845057046652Initial program 24.0
Simplified24.0
rmApplied flip--24.1
Simplified23.0
if 0.09946845057046652 < b Initial program 47.7
Simplified47.7
Taylor expanded around inf 9.2
Final simplification11.0
herbie shell --seed 2019152
(FPCore (a b c)
:name "Quadratic roots, medium range"
:pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))