\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{c}{\left(-b\right) - \sqrt{\sqrt[3]{{\left({b}^{2} - 3 \cdot \left(a \cdot c\right)\right)}^{3}}}}double f(double a, double b, double c) {
double r86700 = b;
double r86701 = -r86700;
double r86702 = r86700 * r86700;
double r86703 = 3.0;
double r86704 = a;
double r86705 = r86703 * r86704;
double r86706 = c;
double r86707 = r86705 * r86706;
double r86708 = r86702 - r86707;
double r86709 = sqrt(r86708);
double r86710 = r86701 + r86709;
double r86711 = r86710 / r86705;
return r86711;
}
double f(double a, double b, double c) {
double r86712 = c;
double r86713 = b;
double r86714 = -r86713;
double r86715 = 2.0;
double r86716 = pow(r86713, r86715);
double r86717 = 3.0;
double r86718 = a;
double r86719 = r86718 * r86712;
double r86720 = r86717 * r86719;
double r86721 = r86716 - r86720;
double r86722 = 3.0;
double r86723 = pow(r86721, r86722);
double r86724 = cbrt(r86723);
double r86725 = sqrt(r86724);
double r86726 = r86714 - r86725;
double r86727 = r86712 / r86726;
return r86727;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.6
rmApplied flip-+28.6
Simplified0.6
rmApplied associate-/r*0.6
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied associate-*r*0.5
rmApplied add-cbrt-cube0.5
Simplified0.5
Final simplification0.3
herbie shell --seed 2019294
(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)))