\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \left(\frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot 4\right)double f(double a, double b, double c) {
double r38721 = b;
double r38722 = -r38721;
double r38723 = r38721 * r38721;
double r38724 = 4.0;
double r38725 = a;
double r38726 = r38724 * r38725;
double r38727 = c;
double r38728 = r38726 * r38727;
double r38729 = r38723 - r38728;
double r38730 = sqrt(r38729);
double r38731 = r38722 + r38730;
double r38732 = 2.0;
double r38733 = r38732 * r38725;
double r38734 = r38731 / r38733;
return r38734;
}
double f(double a, double b, double c) {
double r38735 = 1.0;
double r38736 = 2.0;
double r38737 = r38735 / r38736;
double r38738 = c;
double r38739 = b;
double r38740 = -r38739;
double r38741 = r38739 * r38739;
double r38742 = 4.0;
double r38743 = a;
double r38744 = r38742 * r38743;
double r38745 = r38744 * r38738;
double r38746 = r38741 - r38745;
double r38747 = sqrt(r38746);
double r38748 = r38740 - r38747;
double r38749 = r38738 / r38748;
double r38750 = r38749 * r38742;
double r38751 = r38737 * r38750;
return r38751;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.4
rmApplied flip-+52.4
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 clear-num0.4
Simplified0.3
rmApplied div-inv0.3
Applied add-sqr-sqrt0.3
Applied times-frac0.3
Simplified0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019318
(FPCore (a b c)
:name "Quadratic roots, wide range"
:precision binary64
:pre (and (< 4.93038e-32 a 2.02824e31) (< 4.93038e-32 b 2.02824e31) (< 4.93038e-32 c 2.02824e31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))