\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{0 + 4 \cdot \left(a \cdot c\right)}{\left(2 \cdot a\right) \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}double f(double a, double b, double c) {
double r34721 = b;
double r34722 = -r34721;
double r34723 = r34721 * r34721;
double r34724 = 4.0;
double r34725 = a;
double r34726 = r34724 * r34725;
double r34727 = c;
double r34728 = r34726 * r34727;
double r34729 = r34723 - r34728;
double r34730 = sqrt(r34729);
double r34731 = r34722 + r34730;
double r34732 = 2.0;
double r34733 = r34732 * r34725;
double r34734 = r34731 / r34733;
return r34734;
}
double f(double a, double b, double c) {
double r34735 = 0.0;
double r34736 = 4.0;
double r34737 = a;
double r34738 = c;
double r34739 = r34737 * r34738;
double r34740 = r34736 * r34739;
double r34741 = r34735 + r34740;
double r34742 = 2.0;
double r34743 = r34742 * r34737;
double r34744 = b;
double r34745 = -r34744;
double r34746 = r34744 * r34744;
double r34747 = r34736 * r34737;
double r34748 = r34747 * r34738;
double r34749 = r34746 - r34748;
double r34750 = sqrt(r34749);
double r34751 = r34745 - r34750;
double r34752 = r34743 * r34751;
double r34753 = r34741 / r34752;
return r34753;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.1
rmApplied flip-+52.1
Simplified0.4
rmApplied div-inv0.5
Applied associate-/l*0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2020024 +o rules:numerics
(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)))