\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\frac{1}{a}}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}} \cdot \left(a \cdot c\right)double f(double a, double b, double c) {
double r132851 = b;
double r132852 = -r132851;
double r132853 = r132851 * r132851;
double r132854 = 3.0;
double r132855 = a;
double r132856 = r132854 * r132855;
double r132857 = c;
double r132858 = r132856 * r132857;
double r132859 = r132853 - r132858;
double r132860 = sqrt(r132859);
double r132861 = r132852 + r132860;
double r132862 = r132861 / r132856;
return r132862;
}
double f(double a, double b, double c) {
double r132863 = 1.0;
double r132864 = a;
double r132865 = r132863 / r132864;
double r132866 = b;
double r132867 = -r132866;
double r132868 = r132866 * r132866;
double r132869 = 3.0;
double r132870 = r132869 * r132864;
double r132871 = c;
double r132872 = r132870 * r132871;
double r132873 = r132868 - r132872;
double r132874 = sqrt(r132873);
double r132875 = r132867 - r132874;
double r132876 = r132865 / r132875;
double r132877 = r132864 * r132871;
double r132878 = r132876 * r132877;
return r132878;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.6
rmApplied flip-+28.6
Simplified0.6
rmApplied *-un-lft-identity0.6
Applied *-un-lft-identity0.6
Applied times-frac0.6
Applied times-frac0.6
Simplified0.6
Simplified0.6
rmApplied *-un-lft-identity0.6
Applied div-inv0.7
Applied times-frac0.7
Applied associate-*r*0.6
Simplified0.5
Final simplification0.5
herbie shell --seed 2019322
(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)))