\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{1}{\frac{\left(3 \cdot a\right) \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}\right)}{3 \cdot \left(a \cdot c\right)}}double f(double a, double b, double c) {
double r98340 = b;
double r98341 = -r98340;
double r98342 = r98340 * r98340;
double r98343 = 3.0;
double r98344 = a;
double r98345 = r98343 * r98344;
double r98346 = c;
double r98347 = r98345 * r98346;
double r98348 = r98342 - r98347;
double r98349 = sqrt(r98348);
double r98350 = r98341 + r98349;
double r98351 = r98350 / r98345;
return r98351;
}
double f(double a, double b, double c) {
double r98352 = 1.0;
double r98353 = 3.0;
double r98354 = a;
double r98355 = r98353 * r98354;
double r98356 = b;
double r98357 = -r98356;
double r98358 = r98356 * r98356;
double r98359 = c;
double r98360 = r98355 * r98359;
double r98361 = r98358 - r98360;
double r98362 = sqrt(r98361);
double r98363 = r98357 - r98362;
double r98364 = r98355 * r98363;
double r98365 = r98354 * r98359;
double r98366 = r98353 * r98365;
double r98367 = r98364 / r98366;
double r98368 = r98352 / r98367;
return r98368;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 44.2
rmApplied flip-+44.2
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied associate-/l*0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2020049
(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)))