\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot 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 r69317 = b;
double r69318 = -r69317;
double r69319 = r69317 * r69317;
double r69320 = 3.0;
double r69321 = a;
double r69322 = r69320 * r69321;
double r69323 = c;
double r69324 = r69322 * r69323;
double r69325 = r69319 - r69324;
double r69326 = sqrt(r69325);
double r69327 = r69318 + r69326;
double r69328 = r69327 / r69322;
return r69328;
}
double f(double a, double b, double c) {
double r69329 = c;
double r69330 = b;
double r69331 = -r69330;
double r69332 = r69330 * r69330;
double r69333 = 3.0;
double r69334 = a;
double r69335 = r69333 * r69334;
double r69336 = r69335 * r69329;
double r69337 = r69332 - r69336;
double r69338 = sqrt(r69337);
double r69339 = r69331 - r69338;
double r69340 = r69329 / r69339;
return r69340;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.7
rmApplied flip-+43.7
Simplified0.5
rmApplied div-inv0.6
Applied times-frac0.5
Simplified0.5
rmApplied pow10.5
Applied pow10.5
Applied pow-prod-down0.5
Simplified0.4
rmApplied times-frac0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019308
(FPCore (a b c)
:name "Cubic critical, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e15) (< 1.11022e-16 b 9.0072e15) (< 1.11022e-16 c 9.0072e15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))