\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{3 \cdot a}{3 \cdot a} \cdot \frac{c}{\left(-b\right) - \sqrt{{b}^{2} - 3 \cdot \left(a \cdot c\right)}}double f(double a, double b, double c) {
double r84263 = b;
double r84264 = -r84263;
double r84265 = r84263 * r84263;
double r84266 = 3.0;
double r84267 = a;
double r84268 = r84266 * r84267;
double r84269 = c;
double r84270 = r84268 * r84269;
double r84271 = r84265 - r84270;
double r84272 = sqrt(r84271);
double r84273 = r84264 + r84272;
double r84274 = r84273 / r84268;
return r84274;
}
double f(double a, double b, double c) {
double r84275 = 3.0;
double r84276 = a;
double r84277 = r84275 * r84276;
double r84278 = r84277 / r84277;
double r84279 = c;
double r84280 = b;
double r84281 = -r84280;
double r84282 = 2.0;
double r84283 = pow(r84280, r84282);
double r84284 = r84276 * r84279;
double r84285 = r84275 * r84284;
double r84286 = r84283 - r84285;
double r84287 = sqrt(r84286);
double r84288 = r84281 - r84287;
double r84289 = r84279 / r84288;
double r84290 = r84278 * r84289;
return r84290;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.7
rmApplied flip-+52.7
Simplified0.5
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied associate-/l*0.6
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied add-cube-cbrt0.5
Applied times-frac0.5
Simplified0.5
Simplified0.1
Final simplification0.1
herbie shell --seed 2019325
(FPCore (a b c)
:name "Cubic critical, wide range"
:precision binary64
:pre (and (< 4.93038e-32 a 2.02824e+31) (< 4.93038e-32 b 2.02824e+31) (< 4.93038e-32 c 2.02824e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))