\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 208.2161789220425021085247863084077835083:\\
\;\;\;\;\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)}}}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} \cdot -1\\
\end{array}double f(double a, double b, double c) {
double r1575930 = b;
double r1575931 = -r1575930;
double r1575932 = r1575930 * r1575930;
double r1575933 = 4.0;
double r1575934 = a;
double r1575935 = r1575933 * r1575934;
double r1575936 = c;
double r1575937 = r1575935 * r1575936;
double r1575938 = r1575932 - r1575937;
double r1575939 = sqrt(r1575938);
double r1575940 = r1575931 + r1575939;
double r1575941 = 2.0;
double r1575942 = r1575941 * r1575934;
double r1575943 = r1575940 / r1575942;
return r1575943;
}
double f(double a, double b, double c) {
double r1575944 = b;
double r1575945 = 208.2161789220425;
bool r1575946 = r1575944 <= r1575945;
double r1575947 = r1575944 * r1575944;
double r1575948 = 4.0;
double r1575949 = c;
double r1575950 = a;
double r1575951 = r1575949 * r1575950;
double r1575952 = r1575948 * r1575951;
double r1575953 = r1575947 - r1575952;
double r1575954 = r1575953 - r1575947;
double r1575955 = sqrt(r1575953);
double r1575956 = r1575944 + r1575955;
double r1575957 = r1575954 / r1575956;
double r1575958 = 2.0;
double r1575959 = r1575957 / r1575958;
double r1575960 = r1575959 / r1575950;
double r1575961 = r1575949 / r1575944;
double r1575962 = -1.0;
double r1575963 = r1575961 * r1575962;
double r1575964 = r1575946 ? r1575960 : r1575963;
return r1575964;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 208.2161789220425Initial program 15.4
Simplified15.4
rmApplied flip--15.4
Simplified14.4
if 208.2161789220425 < b Initial program 34.7
Simplified34.7
Taylor expanded around inf 17.6
rmApplied add-sqr-sqrt17.7
Applied associate-/r*17.7
Taylor expanded around 0 17.5
Final simplification16.5
herbie shell --seed 2019179
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))