\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \frac{\frac{c \cdot 4}{1}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r46856 = b;
double r46857 = -r46856;
double r46858 = r46856 * r46856;
double r46859 = 4.0;
double r46860 = a;
double r46861 = r46859 * r46860;
double r46862 = c;
double r46863 = r46861 * r46862;
double r46864 = r46858 - r46863;
double r46865 = sqrt(r46864);
double r46866 = r46857 + r46865;
double r46867 = 2.0;
double r46868 = r46867 * r46860;
double r46869 = r46866 / r46868;
return r46869;
}
double f(double a, double b, double c) {
double r46870 = 1.0;
double r46871 = 2.0;
double r46872 = r46870 / r46871;
double r46873 = c;
double r46874 = 4.0;
double r46875 = r46873 * r46874;
double r46876 = r46875 / r46870;
double r46877 = b;
double r46878 = -r46877;
double r46879 = r46877 * r46877;
double r46880 = a;
double r46881 = r46874 * r46880;
double r46882 = r46881 * r46873;
double r46883 = r46879 - r46882;
double r46884 = sqrt(r46883);
double r46885 = r46878 - r46884;
double r46886 = r46876 / r46885;
double r46887 = r46872 * r46886;
return r46887;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.6
rmApplied flip-+43.6
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied times-frac0.4
Simplified0.4
Simplified0.4
rmApplied associate-/r*0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020033 +o rules:numerics
(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)))