\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}^{2} - 3 \cdot \left(a \cdot c\right)}}double f(double a, double b, double c) {
double r101972 = b;
double r101973 = -r101972;
double r101974 = r101972 * r101972;
double r101975 = 3.0;
double r101976 = a;
double r101977 = r101975 * r101976;
double r101978 = c;
double r101979 = r101977 * r101978;
double r101980 = r101974 - r101979;
double r101981 = sqrt(r101980);
double r101982 = r101973 + r101981;
double r101983 = r101982 / r101977;
return r101983;
}
double f(double a, double b, double c) {
double r101984 = c;
double r101985 = b;
double r101986 = -r101985;
double r101987 = 2.0;
double r101988 = pow(r101985, r101987);
double r101989 = 3.0;
double r101990 = a;
double r101991 = r101990 * r101984;
double r101992 = r101989 * r101991;
double r101993 = r101988 - r101992;
double r101994 = sqrt(r101993);
double r101995 = r101986 - r101994;
double r101996 = r101984 / r101995;
return r101996;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.1
rmApplied flip-+52.1
Simplified0.5
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 add-cube-cbrt0.4
Applied times-frac0.4
Applied times-frac0.1
Simplified0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019350
(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)))