\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 r47833 = b;
double r47834 = -r47833;
double r47835 = r47833 * r47833;
double r47836 = 3.0;
double r47837 = a;
double r47838 = r47836 * r47837;
double r47839 = c;
double r47840 = r47838 * r47839;
double r47841 = r47835 - r47840;
double r47842 = sqrt(r47841);
double r47843 = r47834 + r47842;
double r47844 = r47843 / r47838;
return r47844;
}
double f(double __attribute__((unused)) a, double b, double c) {
double r47845 = -0.5;
double r47846 = c;
double r47847 = b;
double r47848 = r47846 / r47847;
double r47849 = r47845 * r47848;
return r47849;
}



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)))