\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 r44786 = b;
double r44787 = -r44786;
double r44788 = r44786 * r44786;
double r44789 = 4.0;
double r44790 = a;
double r44791 = r44789 * r44790;
double r44792 = c;
double r44793 = r44791 * r44792;
double r44794 = r44788 - r44793;
double r44795 = sqrt(r44794);
double r44796 = r44787 + r44795;
double r44797 = 2.0;
double r44798 = r44797 * r44790;
double r44799 = r44796 / r44798;
return r44799;
}
double f(double a, double b, double c) {
double r44800 = 2.0;
double r44801 = c;
double r44802 = r44800 * r44801;
double r44803 = b;
double r44804 = -r44803;
double r44805 = r44803 * r44803;
double r44806 = 4.0;
double r44807 = a;
double r44808 = r44806 * r44807;
double r44809 = r44808 * r44801;
double r44810 = r44805 - r44809;
double r44811 = sqrt(r44810);
double r44812 = r44804 - r44811;
double r44813 = r44802 / r44812;
return r44813;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.7
rmApplied flip-+43.6
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 2019325
(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)))