\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{3 \cdot a}{3 \cdot a} \cdot \left(c \cdot \frac{1}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}\right)double f(double a, double b, double c) {
double r78526 = b;
double r78527 = -r78526;
double r78528 = r78526 * r78526;
double r78529 = 3.0;
double r78530 = a;
double r78531 = r78529 * r78530;
double r78532 = c;
double r78533 = r78531 * r78532;
double r78534 = r78528 - r78533;
double r78535 = sqrt(r78534);
double r78536 = r78527 + r78535;
double r78537 = r78536 / r78531;
return r78537;
}
double f(double a, double b, double c) {
double r78538 = 3.0;
double r78539 = a;
double r78540 = r78538 * r78539;
double r78541 = r78540 / r78540;
double r78542 = c;
double r78543 = 1.0;
double r78544 = b;
double r78545 = -r78544;
double r78546 = r78544 * r78544;
double r78547 = r78540 * r78542;
double r78548 = r78546 - r78547;
double r78549 = sqrt(r78548);
double r78550 = r78545 - r78549;
double r78551 = r78543 / r78550;
double r78552 = r78542 * r78551;
double r78553 = r78541 * r78552;
return r78553;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.7
rmApplied flip-+28.7
Simplified0.5
rmApplied clear-num0.5
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied add-cube-cbrt0.5
Applied times-frac0.5
Simplified0.5
Simplified0.3
rmApplied div-inv0.4
Final simplification0.4
herbie shell --seed 2019303
(FPCore (a b c)
:name "Cubic critical, narrow range"
:precision binary64
:pre (and (< 1.05367121277235087e-8 a 94906265.6242515594) (< 1.05367121277235087e-8 b 94906265.6242515594) (< 1.05367121277235087e-8 c 94906265.6242515594))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))