\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 1382.268707089498:\\
\;\;\;\;\frac{\left(b \cdot b - 4 \cdot \left(c \cdot a\right)\right) \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} - \left(b \cdot b\right) \cdot b}{\left(2 \cdot a\right) \cdot \left(\left(b \cdot b + b \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}\right) + \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}\right)}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r8131880 = b;
double r8131881 = -r8131880;
double r8131882 = r8131880 * r8131880;
double r8131883 = 4.0;
double r8131884 = a;
double r8131885 = r8131883 * r8131884;
double r8131886 = c;
double r8131887 = r8131885 * r8131886;
double r8131888 = r8131882 - r8131887;
double r8131889 = sqrt(r8131888);
double r8131890 = r8131881 + r8131889;
double r8131891 = 2.0;
double r8131892 = r8131891 * r8131884;
double r8131893 = r8131890 / r8131892;
return r8131893;
}
double f(double a, double b, double c) {
double r8131894 = b;
double r8131895 = 1382.268707089498;
bool r8131896 = r8131894 <= r8131895;
double r8131897 = r8131894 * r8131894;
double r8131898 = 4.0;
double r8131899 = c;
double r8131900 = a;
double r8131901 = r8131899 * r8131900;
double r8131902 = r8131898 * r8131901;
double r8131903 = r8131897 - r8131902;
double r8131904 = sqrt(r8131903);
double r8131905 = r8131903 * r8131904;
double r8131906 = r8131897 * r8131894;
double r8131907 = r8131905 - r8131906;
double r8131908 = 2.0;
double r8131909 = r8131908 * r8131900;
double r8131910 = r8131894 * r8131904;
double r8131911 = r8131897 + r8131910;
double r8131912 = r8131904 * r8131904;
double r8131913 = r8131911 + r8131912;
double r8131914 = r8131909 * r8131913;
double r8131915 = r8131907 / r8131914;
double r8131916 = r8131899 / r8131894;
double r8131917 = -r8131916;
double r8131918 = r8131896 ? r8131915 : r8131917;
return r8131918;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 1382.268707089498Initial program 17.5
Simplified17.5
rmApplied flip3--17.6
Applied associate-/l/17.6
Simplified16.9
if 1382.268707089498 < b Initial program 36.9
Simplified36.9
Taylor expanded around inf 15.8
Simplified15.8
Final simplification16.3
herbie shell --seed 2019124
(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)))