\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 r40701 = b;
double r40702 = -r40701;
double r40703 = r40701 * r40701;
double r40704 = 4.0;
double r40705 = a;
double r40706 = r40704 * r40705;
double r40707 = c;
double r40708 = r40706 * r40707;
double r40709 = r40703 - r40708;
double r40710 = sqrt(r40709);
double r40711 = r40702 + r40710;
double r40712 = 2.0;
double r40713 = r40712 * r40705;
double r40714 = r40711 / r40713;
return r40714;
}
double f(double a, double b, double c) {
double r40715 = 2.0;
double r40716 = c;
double r40717 = r40715 * r40716;
double r40718 = b;
double r40719 = -r40718;
double r40720 = r40718 * r40718;
double r40721 = 4.0;
double r40722 = a;
double r40723 = r40721 * r40722;
double r40724 = r40723 * r40716;
double r40725 = r40720 - r40724;
double r40726 = sqrt(r40725);
double r40727 = r40719 - r40726;
double r40728 = r40717 / r40727;
return r40728;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 44.0
rmApplied flip-+44.0
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 2019303
(FPCore (a b c)
:name "Quadratic roots, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e15) (< 1.11022e-16 b 9.0072e15) (< 1.11022e-16 c 9.0072e15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))