\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{c}{-\left(b + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}\right)}double f(double a, double b, double c) {
double r82799 = b;
double r82800 = -r82799;
double r82801 = r82799 * r82799;
double r82802 = 3.0;
double r82803 = a;
double r82804 = r82802 * r82803;
double r82805 = c;
double r82806 = r82804 * r82805;
double r82807 = r82801 - r82806;
double r82808 = sqrt(r82807);
double r82809 = r82800 + r82808;
double r82810 = r82809 / r82804;
return r82810;
}
double f(double a, double b, double c) {
double r82811 = c;
double r82812 = b;
double r82813 = r82812 * r82812;
double r82814 = 3.0;
double r82815 = a;
double r82816 = r82814 * r82815;
double r82817 = r82816 * r82811;
double r82818 = r82813 - r82817;
double r82819 = sqrt(r82818);
double r82820 = r82812 + r82819;
double r82821 = -r82820;
double r82822 = r82811 / r82821;
return r82822;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.7
rmApplied flip-+28.7
Simplified0.6
rmApplied add-cbrt-cube0.6
Simplified0.6
rmApplied *-un-lft-identity0.6
Applied *-un-lft-identity0.6
Applied times-frac0.6
Simplified0.6
Simplified0.5
rmApplied clear-num0.4
Simplified0.4
Final simplification0.3
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)))