\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\left({b}^{2} - {b}^{2}\right) + \left(3 \cdot a\right) \cdot c}{\left(3 \cdot a\right) \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}\right)}double f(double a, double b, double c) {
double r110927 = b;
double r110928 = -r110927;
double r110929 = r110927 * r110927;
double r110930 = 3.0;
double r110931 = a;
double r110932 = r110930 * r110931;
double r110933 = c;
double r110934 = r110932 * r110933;
double r110935 = r110929 - r110934;
double r110936 = sqrt(r110935);
double r110937 = r110928 + r110936;
double r110938 = r110937 / r110932;
return r110938;
}
double f(double a, double b, double c) {
double r110939 = b;
double r110940 = 2.0;
double r110941 = pow(r110939, r110940);
double r110942 = r110941 - r110941;
double r110943 = 3.0;
double r110944 = a;
double r110945 = r110943 * r110944;
double r110946 = c;
double r110947 = r110945 * r110946;
double r110948 = r110942 + r110947;
double r110949 = -r110939;
double r110950 = r110939 * r110939;
double r110951 = r110950 - r110947;
double r110952 = sqrt(r110951);
double r110953 = r110949 - r110952;
double r110954 = r110945 * r110953;
double r110955 = r110948 / r110954;
return r110955;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.5
rmApplied flip-+43.5
Simplified0.5
rmApplied associate-*r*0.4
rmApplied div-inv0.5
Applied associate-/l*0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2020025
(FPCore (a b c)
:name "Cubic critical, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e+15) (< 1.11022e-16 b 9.0072e+15) (< 1.11022e-16 c 9.0072e+15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))