\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \frac{\frac{4 \cdot \left(a \cdot c\right)}{a}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r36882 = b;
double r36883 = -r36882;
double r36884 = r36882 * r36882;
double r36885 = 4.0;
double r36886 = a;
double r36887 = r36885 * r36886;
double r36888 = c;
double r36889 = r36887 * r36888;
double r36890 = r36884 - r36889;
double r36891 = sqrt(r36890);
double r36892 = r36883 + r36891;
double r36893 = 2.0;
double r36894 = r36893 * r36886;
double r36895 = r36892 / r36894;
return r36895;
}
double f(double a, double b, double c) {
double r36896 = 1.0;
double r36897 = 2.0;
double r36898 = r36896 / r36897;
double r36899 = 4.0;
double r36900 = a;
double r36901 = c;
double r36902 = r36900 * r36901;
double r36903 = r36899 * r36902;
double r36904 = r36903 / r36900;
double r36905 = b;
double r36906 = -r36905;
double r36907 = r36905 * r36905;
double r36908 = r36899 * r36900;
double r36909 = r36908 * r36901;
double r36910 = r36907 - r36909;
double r36911 = sqrt(r36910);
double r36912 = r36906 - r36911;
double r36913 = r36904 / r36912;
double r36914 = r36898 * r36913;
return r36914;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.7
rmApplied flip-+43.7
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
Final simplification0.2
herbie shell --seed 2020001
(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)))