\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\frac{\frac{3 \cdot \left(a \cdot c\right)}{3}}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}{a}double f(double a, double b, double c) {
double r138457 = b;
double r138458 = -r138457;
double r138459 = r138457 * r138457;
double r138460 = 3.0;
double r138461 = a;
double r138462 = r138460 * r138461;
double r138463 = c;
double r138464 = r138462 * r138463;
double r138465 = r138459 - r138464;
double r138466 = sqrt(r138465);
double r138467 = r138458 + r138466;
double r138468 = r138467 / r138462;
return r138468;
}
double f(double a, double b, double c) {
double r138469 = 3.0;
double r138470 = a;
double r138471 = c;
double r138472 = r138470 * r138471;
double r138473 = r138469 * r138472;
double r138474 = r138473 / r138469;
double r138475 = b;
double r138476 = -r138475;
double r138477 = r138475 * r138475;
double r138478 = r138469 * r138470;
double r138479 = r138478 * r138471;
double r138480 = r138477 - r138479;
double r138481 = sqrt(r138480);
double r138482 = r138476 - r138481;
double r138483 = r138474 / r138482;
double r138484 = r138483 / r138470;
return r138484;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.7
rmApplied flip-+52.7
Simplified0.5
rmApplied associate-/r*0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2020035
(FPCore (a b c)
:name "Cubic critical, wide range"
:precision binary64
:pre (and (< 4.9303800000000003e-32 a 2.02824e+31) (< 4.9303800000000003e-32 b 2.02824e+31) (< 4.9303800000000003e-32 c 2.02824e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))