\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r32885 = b;
double r32886 = -r32885;
double r32887 = r32885 * r32885;
double r32888 = 4.0;
double r32889 = a;
double r32890 = r32888 * r32889;
double r32891 = c;
double r32892 = r32890 * r32891;
double r32893 = r32887 - r32892;
double r32894 = sqrt(r32893);
double r32895 = r32886 + r32894;
double r32896 = 2.0;
double r32897 = r32896 * r32889;
double r32898 = r32895 / r32897;
return r32898;
}
double f(double a, double b, double c) {
double r32899 = 2.0;
double r32900 = c;
double r32901 = r32899 * r32900;
double r32902 = b;
double r32903 = -r32902;
double r32904 = r32902 * r32902;
double r32905 = 4.0;
double r32906 = a;
double r32907 = r32905 * r32906;
double r32908 = r32907 * r32900;
double r32909 = r32904 - r32908;
double r32910 = sqrt(r32909);
double r32911 = r32903 - r32910;
double r32912 = r32901 / r32911;
return r32912;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 44.3
rmApplied flip-+44.3
Simplified0.4
rmApplied div-inv0.5
Applied associate-/l*0.5
Simplified0.4
rmApplied associate-/r*0.2
Simplified0.2
Taylor expanded around 0 0.2
Final simplification0.2
herbie shell --seed 2020065
(FPCore (a b c)
:name "Quadratic roots, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e+15) (< 1.11022e-16 b 9.0072e+15) (< 1.11022e-16 c 9.0072e+15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))