\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{c}{b} \cdot \frac{-1}{2}double f(double a, double b, double c) {
double r3174340 = b;
double r3174341 = -r3174340;
double r3174342 = r3174340 * r3174340;
double r3174343 = 3.0;
double r3174344 = a;
double r3174345 = r3174343 * r3174344;
double r3174346 = c;
double r3174347 = r3174345 * r3174346;
double r3174348 = r3174342 - r3174347;
double r3174349 = sqrt(r3174348);
double r3174350 = r3174341 + r3174349;
double r3174351 = r3174350 / r3174345;
return r3174351;
}
double f(double __attribute__((unused)) a, double b, double c) {
double r3174352 = c;
double r3174353 = b;
double r3174354 = r3174352 / r3174353;
double r3174355 = -0.5;
double r3174356 = r3174354 * r3174355;
return r3174356;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 53.0
Simplified53.0
Taylor expanded around inf 5.9
Final simplification5.9
herbie shell --seed 2019168
(FPCore (a b c)
:name "Cubic critical, wide range"
:pre (and (< 4.930380657631324e-32 a 2.028240960365167e+31) (< 4.930380657631324e-32 b 2.028240960365167e+31) (< 4.930380657631324e-32 c 2.028240960365167e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))