\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\frac{\frac{3 \cdot \left(a \cdot c\right)}{3}}{\left(-b\right) - \sqrt{b \cdot b - \left(\sqrt[3]{\left(3 \cdot a\right) \cdot c} \cdot \sqrt[3]{\left(3 \cdot a\right) \cdot c}\right) \cdot \sqrt[3]{\left(3 \cdot a\right) \cdot c}}}}{a}double f(double a, double b, double c) {
double r112463 = b;
double r112464 = -r112463;
double r112465 = r112463 * r112463;
double r112466 = 3.0;
double r112467 = a;
double r112468 = r112466 * r112467;
double r112469 = c;
double r112470 = r112468 * r112469;
double r112471 = r112465 - r112470;
double r112472 = sqrt(r112471);
double r112473 = r112464 + r112472;
double r112474 = r112473 / r112468;
return r112474;
}
double f(double a, double b, double c) {
double r112475 = 3.0;
double r112476 = a;
double r112477 = c;
double r112478 = r112476 * r112477;
double r112479 = r112475 * r112478;
double r112480 = r112479 / r112475;
double r112481 = b;
double r112482 = -r112481;
double r112483 = r112481 * r112481;
double r112484 = r112475 * r112476;
double r112485 = r112484 * r112477;
double r112486 = cbrt(r112485);
double r112487 = r112486 * r112486;
double r112488 = r112487 * r112486;
double r112489 = r112483 - r112488;
double r112490 = sqrt(r112489);
double r112491 = r112482 - r112490;
double r112492 = r112480 / r112491;
double r112493 = r112492 / r112476;
return r112493;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.9
rmApplied flip-+28.9
Simplified0.6
rmApplied associate-/r*0.6
Simplified0.5
rmApplied add-cube-cbrt0.5
Final simplification0.5
herbie shell --seed 2020027
(FPCore (a b c)
:name "Cubic critical, narrow range"
:precision binary64
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))