\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\left({b}^{2} - {b}^{2}\right) + \left(3 \cdot a\right) \cdot c}{\left(3 \cdot a\right) \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}\right)}double f(double a, double b, double c) {
double r133325 = b;
double r133326 = -r133325;
double r133327 = r133325 * r133325;
double r133328 = 3.0;
double r133329 = a;
double r133330 = r133328 * r133329;
double r133331 = c;
double r133332 = r133330 * r133331;
double r133333 = r133327 - r133332;
double r133334 = sqrt(r133333);
double r133335 = r133326 + r133334;
double r133336 = r133335 / r133330;
return r133336;
}
double f(double a, double b, double c) {
double r133337 = b;
double r133338 = 2.0;
double r133339 = pow(r133337, r133338);
double r133340 = r133339 - r133339;
double r133341 = 3.0;
double r133342 = a;
double r133343 = r133341 * r133342;
double r133344 = c;
double r133345 = r133343 * r133344;
double r133346 = r133340 + r133345;
double r133347 = -r133337;
double r133348 = r133337 * r133337;
double r133349 = r133348 - r133345;
double r133350 = sqrt(r133349);
double r133351 = r133347 - r133350;
double r133352 = r133343 * r133351;
double r133353 = r133346 / r133352;
return r133353;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.7
rmApplied flip-+43.7
Simplified0.5
rmApplied associate-*r*0.4
rmApplied div-inv0.5
Applied associate-/l*0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2020057
(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)))