\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\frac{c}{1}}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r84986 = b;
double r84987 = -r84986;
double r84988 = r84986 * r84986;
double r84989 = 3.0;
double r84990 = a;
double r84991 = r84989 * r84990;
double r84992 = c;
double r84993 = r84991 * r84992;
double r84994 = r84988 - r84993;
double r84995 = sqrt(r84994);
double r84996 = r84987 + r84995;
double r84997 = r84996 / r84991;
return r84997;
}
double f(double a, double b, double c) {
double r84998 = c;
double r84999 = 1.0;
double r85000 = r84998 / r84999;
double r85001 = b;
double r85002 = -r85001;
double r85003 = r85001 * r85001;
double r85004 = 3.0;
double r85005 = a;
double r85006 = r85004 * r85005;
double r85007 = r85006 * r84998;
double r85008 = r85003 - r85007;
double r85009 = sqrt(r85008);
double r85010 = r85002 - r85009;
double r85011 = r85000 / r85010;
return r85011;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.3
rmApplied flip-+52.3
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied times-frac0.6
Simplified0.6
Simplified0.6
rmApplied *-un-lft-identity0.6
Applied *-un-lft-identity0.6
Applied times-frac0.5
Applied times-frac0.4
Applied associate-*r*0.2
Simplified0.2
rmApplied *-un-lft-identity0.2
Applied associate-/r*0.2
Simplified0.1
Final simplification0.1
herbie shell --seed 2020060
(FPCore (a b c)
:name "Cubic critical, wide range"
:precision binary64
:pre (and (< 4.9303800000000003e-32 a 2.02824e+31) (< 4.9303800000000003e-32 b 2.02824e+31) (< 4.9303800000000003e-32 c 2.02824e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))