\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{1 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r92993 = b;
double r92994 = -r92993;
double r92995 = r92993 * r92993;
double r92996 = 3.0;
double r92997 = a;
double r92998 = r92996 * r92997;
double r92999 = c;
double r93000 = r92998 * r92999;
double r93001 = r92995 - r93000;
double r93002 = sqrt(r93001);
double r93003 = r92994 + r93002;
double r93004 = r93003 / r92998;
return r93004;
}
double f(double a, double b, double c) {
double r93005 = 1.0;
double r93006 = c;
double r93007 = r93005 * r93006;
double r93008 = b;
double r93009 = -r93008;
double r93010 = r93008 * r93008;
double r93011 = 3.0;
double r93012 = a;
double r93013 = r93011 * r93012;
double r93014 = r93013 * r93006;
double r93015 = r93010 - r93014;
double r93016 = sqrt(r93015);
double r93017 = r93009 - r93016;
double r93018 = r93007 / r93017;
return r93018;
}



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
Final simplification0.1
herbie shell --seed 2019297
(FPCore (a b c)
:name "Cubic critical, wide range"
:precision binary64
:pre (and (< 4.93038e-32 a 2.02824e31) (< 4.93038e-32 b 2.02824e31) (< 4.93038e-32 c 2.02824e31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))