\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 r40799 = b;
double r40800 = -r40799;
double r40801 = r40799 * r40799;
double r40802 = 3.0;
double r40803 = a;
double r40804 = r40802 * r40803;
double r40805 = c;
double r40806 = r40804 * r40805;
double r40807 = r40801 - r40806;
double r40808 = sqrt(r40807);
double r40809 = r40800 + r40808;
double r40810 = r40809 / r40804;
return r40810;
}
double f(double __attribute__((unused)) a, double b, double c) {
double r40811 = -0.5;
double r40812 = c;
double r40813 = b;
double r40814 = r40812 / r40813;
double r40815 = r40811 * r40814;
return r40815;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.7
Simplified43.7
Taylor expanded around inf 12.1
Final simplification12.1
herbie shell --seed 2019325
(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)))