\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r104730 = b;
double r104731 = -r104730;
double r104732 = r104730 * r104730;
double r104733 = 3.0;
double r104734 = a;
double r104735 = r104733 * r104734;
double r104736 = c;
double r104737 = r104735 * r104736;
double r104738 = r104732 - r104737;
double r104739 = sqrt(r104738);
double r104740 = r104731 + r104739;
double r104741 = r104740 / r104735;
return r104741;
}
double f(double a, double b, double c) {
double r104742 = c;
double r104743 = b;
double r104744 = -r104743;
double r104745 = r104743 * r104743;
double r104746 = 3.0;
double r104747 = a;
double r104748 = r104746 * r104747;
double r104749 = r104748 * r104742;
double r104750 = r104745 - r104749;
double r104751 = sqrt(r104750);
double r104752 = r104744 - r104751;
double r104753 = r104742 / r104752;
return r104753;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.7
rmApplied flip-+52.7
Simplified0.5
rmApplied associate-*r*0.4
Final simplification0.1
herbie shell --seed 2019304
(FPCore (a b c)
:name "Cubic critical, 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) (* (* 3 a) c)))) (* 3 a)))