\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 r133442 = b;
double r133443 = -r133442;
double r133444 = r133442 * r133442;
double r133445 = 3.0;
double r133446 = a;
double r133447 = r133445 * r133446;
double r133448 = c;
double r133449 = r133447 * r133448;
double r133450 = r133444 - r133449;
double r133451 = sqrt(r133450);
double r133452 = r133443 + r133451;
double r133453 = r133452 / r133447;
return r133453;
}
double f(double a, double b, double c) {
double r133454 = b;
double r133455 = 2.0;
double r133456 = pow(r133454, r133455);
double r133457 = r133456 - r133456;
double r133458 = 3.0;
double r133459 = a;
double r133460 = r133458 * r133459;
double r133461 = c;
double r133462 = r133460 * r133461;
double r133463 = r133457 + r133462;
double r133464 = -r133454;
double r133465 = r133454 * r133454;
double r133466 = r133465 - r133462;
double r133467 = sqrt(r133466);
double r133468 = r133464 - r133467;
double r133469 = r133460 * r133468;
double r133470 = r133463 / r133469;
return r133470;
}



Bits error versus a



Bits error versus b



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