\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r88568 = b;
double r88569 = -r88568;
double r88570 = r88568 * r88568;
double r88571 = 3.0;
double r88572 = a;
double r88573 = r88571 * r88572;
double r88574 = c;
double r88575 = r88573 * r88574;
double r88576 = r88570 - r88575;
double r88577 = sqrt(r88576);
double r88578 = r88569 + r88577;
double r88579 = r88578 / r88573;
return r88579;
}
double f(double a, double b, double c) {
double r88580 = c;
double r88581 = b;
double r88582 = -r88581;
double r88583 = r88581 * r88581;
double r88584 = 3.0;
double r88585 = a;
double r88586 = r88584 * r88585;
double r88587 = r88586 * r88580;
double r88588 = r88583 - r88587;
double r88589 = sqrt(r88588);
double r88590 = r88582 - r88589;
double r88591 = r88580 / r88590;
return r88591;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.6
rmApplied flip-+43.6
Simplified0.5
rmApplied clear-num0.6
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied associate-/l*0.5
Simplified0.3
rmApplied div-inv0.3
Simplified0.2
Final simplification0.2
herbie shell --seed 2019323
(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)))