\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 r74038 = b;
double r74039 = -r74038;
double r74040 = r74038 * r74038;
double r74041 = 3.0;
double r74042 = a;
double r74043 = r74041 * r74042;
double r74044 = c;
double r74045 = r74043 * r74044;
double r74046 = r74040 - r74045;
double r74047 = sqrt(r74046);
double r74048 = r74039 + r74047;
double r74049 = r74048 / r74043;
return r74049;
}
double f(double a, double b, double c) {
double r74050 = 1.0;
double r74051 = c;
double r74052 = r74050 * r74051;
double r74053 = b;
double r74054 = -r74053;
double r74055 = r74053 * r74053;
double r74056 = 3.0;
double r74057 = a;
double r74058 = r74056 * r74057;
double r74059 = r74058 * r74051;
double r74060 = r74055 - r74059;
double r74061 = sqrt(r74060);
double r74062 = r74054 - r74061;
double r74063 = r74052 / r74062;
return r74063;
}



Bits error versus a



Bits error versus b



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