\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}-0.5 \cdot \frac{c}{b}double f(double a, double b, double c) {
double r81757 = b;
double r81758 = -r81757;
double r81759 = r81757 * r81757;
double r81760 = 3.0;
double r81761 = a;
double r81762 = r81760 * r81761;
double r81763 = c;
double r81764 = r81762 * r81763;
double r81765 = r81759 - r81764;
double r81766 = sqrt(r81765);
double r81767 = r81758 + r81766;
double r81768 = r81767 / r81762;
return r81768;
}
double f(double __attribute__((unused)) a, double b, double c) {
double r81769 = -0.5;
double r81770 = c;
double r81771 = b;
double r81772 = r81770 / r81771;
double r81773 = r81769 * r81772;
return r81773;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.7
Taylor expanded around inf 12.1
Final simplification12.1
herbie shell --seed 2020046
(FPCore (a b c)
:name "Cubic critical, 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) (* (* 3 a) c)))) (* 3 a)))