\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\frac{1}{1}}{\frac{\left(3 \cdot a\right) \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}\right)}{3 \cdot \left(a \cdot c\right)}}double f(double a, double b, double c) {
double r109167 = b;
double r109168 = -r109167;
double r109169 = r109167 * r109167;
double r109170 = 3.0;
double r109171 = a;
double r109172 = r109170 * r109171;
double r109173 = c;
double r109174 = r109172 * r109173;
double r109175 = r109169 - r109174;
double r109176 = sqrt(r109175);
double r109177 = r109168 + r109176;
double r109178 = r109177 / r109172;
return r109178;
}
double f(double a, double b, double c) {
double r109179 = 1.0;
double r109180 = r109179 / r109179;
double r109181 = 3.0;
double r109182 = a;
double r109183 = r109181 * r109182;
double r109184 = b;
double r109185 = -r109184;
double r109186 = r109184 * r109184;
double r109187 = c;
double r109188 = r109183 * r109187;
double r109189 = r109186 - r109188;
double r109190 = sqrt(r109189);
double r109191 = r109185 - r109190;
double r109192 = r109183 * r109191;
double r109193 = r109182 * r109187;
double r109194 = r109181 * r109193;
double r109195 = r109192 / r109194;
double r109196 = r109180 / r109195;
return r109196;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.6
rmApplied flip-+43.5
Simplified0.5
rmApplied associate-*r*0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied associate-/l*0.5
Simplified0.6
Final simplification0.6
herbie shell --seed 2020056
(FPCore (a b c)
:name "Cubic critical, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e+15) (< 1.11022e-16 b 9.0072e+15) (< 1.11022e-16 c 9.0072e+15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))