\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \frac{\frac{c \cdot 4}{1}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r36685 = b;
double r36686 = -r36685;
double r36687 = r36685 * r36685;
double r36688 = 4.0;
double r36689 = a;
double r36690 = r36688 * r36689;
double r36691 = c;
double r36692 = r36690 * r36691;
double r36693 = r36687 - r36692;
double r36694 = sqrt(r36693);
double r36695 = r36686 + r36694;
double r36696 = 2.0;
double r36697 = r36696 * r36689;
double r36698 = r36695 / r36697;
return r36698;
}
double f(double a, double b, double c) {
double r36699 = 1.0;
double r36700 = 2.0;
double r36701 = r36699 / r36700;
double r36702 = c;
double r36703 = 4.0;
double r36704 = r36702 * r36703;
double r36705 = r36704 / r36699;
double r36706 = b;
double r36707 = -r36706;
double r36708 = r36706 * r36706;
double r36709 = a;
double r36710 = r36703 * r36709;
double r36711 = r36710 * r36702;
double r36712 = r36708 - r36711;
double r36713 = sqrt(r36712);
double r36714 = r36707 - r36713;
double r36715 = r36705 / r36714;
double r36716 = r36701 * r36715;
return r36716;
}



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
Simplified0.2
Final simplification0.2
herbie shell --seed 2020001 +o rules:numerics
(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)))