\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 r78561 = b;
double r78562 = -r78561;
double r78563 = r78561 * r78561;
double r78564 = 3.0;
double r78565 = a;
double r78566 = r78564 * r78565;
double r78567 = c;
double r78568 = r78566 * r78567;
double r78569 = r78563 - r78568;
double r78570 = sqrt(r78569);
double r78571 = r78562 + r78570;
double r78572 = r78571 / r78566;
return r78572;
}
double f(double a, double b, double c) {
double r78573 = c;
double r78574 = b;
double r78575 = -r78574;
double r78576 = r78574 * r78574;
double r78577 = 3.0;
double r78578 = a;
double r78579 = r78577 * r78578;
double r78580 = r78579 * r78573;
double r78581 = r78576 - r78580;
double r78582 = sqrt(r78581);
double r78583 = r78575 - r78582;
double r78584 = r78573 / r78583;
return r78584;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.5
rmApplied flip-+52.5
Simplified0.5
rmApplied associate-*r*0.4
rmApplied div-inv0.5
Final simplification0.1
herbie shell --seed 2019303
(FPCore (a b c)
:name "Cubic critical, wide range"
:precision binary64
:pre (and (< 4.93038e-32 a 2.02824e31) (< 4.93038e-32 b 2.02824e31) (< 4.93038e-32 c 2.02824e31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))