\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 2892.1913455639924:\\
\;\;\;\;\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 r755990 = b;
double r755991 = -r755990;
double r755992 = r755990 * r755990;
double r755993 = 4.0;
double r755994 = a;
double r755995 = r755993 * r755994;
double r755996 = c;
double r755997 = r755995 * r755996;
double r755998 = r755992 - r755997;
double r755999 = sqrt(r755998);
double r756000 = r755991 + r755999;
double r756001 = 2.0;
double r756002 = r756001 * r755994;
double r756003 = r756000 / r756002;
return r756003;
}
double f(double a, double b, double c) {
double r756004 = b;
double r756005 = 2892.1913455639924;
bool r756006 = r756004 <= r756005;
double r756007 = r756004 * r756004;
double r756008 = 4.0;
double r756009 = c;
double r756010 = a;
double r756011 = r756009 * r756010;
double r756012 = r756008 * r756011;
double r756013 = r756007 - r756012;
double r756014 = r756013 - r756007;
double r756015 = sqrt(r756013);
double r756016 = r756004 + r756015;
double r756017 = r756014 / r756016;
double r756018 = r756017 / r756010;
double r756019 = 2.0;
double r756020 = r756018 / r756019;
double r756021 = r756009 / r756004;
double r756022 = -2.0;
double r756023 = r756021 * r756022;
double r756024 = r756023 / r756019;
double r756025 = r756006 ? r756020 : r756024;
return r756025;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 2892.1913455639924Initial program 18.5
Simplified18.5
rmApplied flip--18.5
Simplified17.5
if 2892.1913455639924 < b Initial program 36.9
Simplified36.9
Taylor expanded around inf 15.7
Final simplification16.5
herbie shell --seed 2019152
(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 a) c)))) (* 2 a)))