\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\left(\left({b}^{2} - {b}^{2}\right) + \left(3 \cdot a\right) \cdot c\right) \cdot \frac{1}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}{3 \cdot a}double f(double a, double b, double c) {
double r96387 = b;
double r96388 = -r96387;
double r96389 = r96387 * r96387;
double r96390 = 3.0;
double r96391 = a;
double r96392 = r96390 * r96391;
double r96393 = c;
double r96394 = r96392 * r96393;
double r96395 = r96389 - r96394;
double r96396 = sqrt(r96395);
double r96397 = r96388 + r96396;
double r96398 = r96397 / r96392;
return r96398;
}
double f(double a, double b, double c) {
double r96399 = b;
double r96400 = 2.0;
double r96401 = pow(r96399, r96400);
double r96402 = r96401 - r96401;
double r96403 = 3.0;
double r96404 = a;
double r96405 = r96403 * r96404;
double r96406 = c;
double r96407 = r96405 * r96406;
double r96408 = r96402 + r96407;
double r96409 = 1.0;
double r96410 = -r96399;
double r96411 = r96399 * r96399;
double r96412 = r96411 - r96407;
double r96413 = sqrt(r96412);
double r96414 = r96410 - r96413;
double r96415 = r96409 / r96414;
double r96416 = r96408 * r96415;
double r96417 = r96416 / r96405;
return r96417;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.4
rmApplied flip-+52.4
Simplified0.5
rmApplied associate-*r*0.4
rmApplied div-inv0.4
Final simplification0.4
herbie shell --seed 2020062
(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)))