\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\frac{3 \cdot a}{3}}{\frac{a}{\frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}}double f(double a, double b, double c) {
double r130054 = b;
double r130055 = -r130054;
double r130056 = r130054 * r130054;
double r130057 = 3.0;
double r130058 = a;
double r130059 = r130057 * r130058;
double r130060 = c;
double r130061 = r130059 * r130060;
double r130062 = r130056 - r130061;
double r130063 = sqrt(r130062);
double r130064 = r130055 + r130063;
double r130065 = r130064 / r130059;
return r130065;
}
double f(double a, double b, double c) {
double r130066 = 3.0;
double r130067 = a;
double r130068 = r130066 * r130067;
double r130069 = r130068 / r130066;
double r130070 = c;
double r130071 = b;
double r130072 = -r130071;
double r130073 = r130071 * r130071;
double r130074 = r130068 * r130070;
double r130075 = r130073 - r130074;
double r130076 = sqrt(r130075);
double r130077 = r130072 - r130076;
double r130078 = r130070 / r130077;
double r130079 = r130067 / r130078;
double r130080 = r130069 / r130079;
return r130080;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.9
rmApplied flip-+43.9
Simplified0.5
rmApplied clear-num0.6
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied times-frac0.4
Applied times-frac0.5
Applied associate-/r*0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2019350
(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)))