\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 r78379 = b;
double r78380 = -r78379;
double r78381 = r78379 * r78379;
double r78382 = 3.0;
double r78383 = a;
double r78384 = r78382 * r78383;
double r78385 = c;
double r78386 = r78384 * r78385;
double r78387 = r78381 - r78386;
double r78388 = sqrt(r78387);
double r78389 = r78380 + r78388;
double r78390 = r78389 / r78384;
return r78390;
}
double f(double __attribute__((unused)) a, double b, double c) {
double r78391 = -0.5;
double r78392 = c;
double r78393 = b;
double r78394 = r78392 / r78393;
double r78395 = r78391 * r78394;
return r78395;
}



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