\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 15510.063874531805:\\
\;\;\;\;\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 r8882849 = b;
double r8882850 = -r8882849;
double r8882851 = r8882849 * r8882849;
double r8882852 = 4.0;
double r8882853 = a;
double r8882854 = r8882852 * r8882853;
double r8882855 = c;
double r8882856 = r8882854 * r8882855;
double r8882857 = r8882851 - r8882856;
double r8882858 = sqrt(r8882857);
double r8882859 = r8882850 + r8882858;
double r8882860 = 2.0;
double r8882861 = r8882860 * r8882853;
double r8882862 = r8882859 / r8882861;
return r8882862;
}
double f(double a, double b, double c) {
double r8882863 = b;
double r8882864 = 15510.063874531805;
bool r8882865 = r8882863 <= r8882864;
double r8882866 = r8882863 * r8882863;
double r8882867 = 4.0;
double r8882868 = c;
double r8882869 = a;
double r8882870 = r8882868 * r8882869;
double r8882871 = r8882867 * r8882870;
double r8882872 = r8882866 - r8882871;
double r8882873 = sqrt(r8882872);
double r8882874 = r8882872 * r8882873;
double r8882875 = r8882866 * r8882863;
double r8882876 = r8882874 - r8882875;
double r8882877 = 2.0;
double r8882878 = r8882877 * r8882869;
double r8882879 = r8882863 * r8882873;
double r8882880 = r8882866 + r8882879;
double r8882881 = r8882873 * r8882873;
double r8882882 = r8882880 + r8882881;
double r8882883 = r8882878 * r8882882;
double r8882884 = r8882876 / r8882883;
double r8882885 = r8882868 / r8882863;
double r8882886 = -r8882885;
double r8882887 = r8882865 ? r8882884 : r8882886;
return r8882887;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 15510.063874531805Initial program 19.6
Simplified19.6
rmApplied flip3--19.7
Applied associate-/l/19.7
Simplified18.9
if 15510.063874531805 < b Initial program 38.8
Simplified38.8
Taylor expanded around inf 14.3
Simplified14.3
Final simplification16.8
herbie shell --seed 2019121
(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)))