\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1 \cdot \frac{\frac{0 + 4 \cdot \left(a \cdot c\right)}{a}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2}double f(double a, double b, double c) {
double r35863 = b;
double r35864 = -r35863;
double r35865 = r35863 * r35863;
double r35866 = 4.0;
double r35867 = a;
double r35868 = r35866 * r35867;
double r35869 = c;
double r35870 = r35868 * r35869;
double r35871 = r35865 - r35870;
double r35872 = sqrt(r35871);
double r35873 = r35864 + r35872;
double r35874 = 2.0;
double r35875 = r35874 * r35867;
double r35876 = r35873 / r35875;
return r35876;
}
double f(double a, double b, double c) {
double r35877 = 1.0;
double r35878 = 0.0;
double r35879 = 4.0;
double r35880 = a;
double r35881 = c;
double r35882 = r35880 * r35881;
double r35883 = r35879 * r35882;
double r35884 = r35878 + r35883;
double r35885 = r35884 / r35880;
double r35886 = b;
double r35887 = -r35886;
double r35888 = r35886 * r35886;
double r35889 = r35879 * r35880;
double r35890 = r35889 * r35881;
double r35891 = r35888 - r35890;
double r35892 = sqrt(r35891);
double r35893 = r35887 - r35892;
double r35894 = r35885 / r35893;
double r35895 = r35877 * r35894;
double r35896 = 2.0;
double r35897 = r35895 / r35896;
return r35897;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.7
rmApplied flip-+52.7
Simplified0.4
rmApplied flip-+0.4
Applied associate-/l/0.5
rmApplied flip--0.5
Applied associate-*r/0.5
Applied associate-/r/0.5
Applied times-frac0.4
Simplified0.4
rmApplied associate-*l/0.4
Simplified0.2
Final simplification0.2
herbie shell --seed 2020035
(FPCore (a b c)
:name "Quadratic roots, wide range"
:precision binary64
:pre (and (< 4.9303800000000003e-32 a 2.02824e+31) (< 4.9303800000000003e-32 b 2.02824e+31) (< 4.9303800000000003e-32 c 2.02824e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))