\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{c \cdot \left(3 \cdot a\right)}{\left(3 \cdot a\right) \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}\right)}double f(double a, double b, double c) {
double r88250 = b;
double r88251 = -r88250;
double r88252 = r88250 * r88250;
double r88253 = 3.0;
double r88254 = a;
double r88255 = r88253 * r88254;
double r88256 = c;
double r88257 = r88255 * r88256;
double r88258 = r88252 - r88257;
double r88259 = sqrt(r88258);
double r88260 = r88251 + r88259;
double r88261 = r88260 / r88255;
return r88261;
}
double f(double a, double b, double c) {
double r88262 = c;
double r88263 = 3.0;
double r88264 = a;
double r88265 = r88263 * r88264;
double r88266 = r88262 * r88265;
double r88267 = b;
double r88268 = -r88267;
double r88269 = r88267 * r88267;
double r88270 = r88265 * r88262;
double r88271 = r88269 - r88270;
double r88272 = sqrt(r88271);
double r88273 = r88268 - r88272;
double r88274 = r88265 * r88273;
double r88275 = r88266 / r88274;
return r88275;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.7
rmApplied flip-+43.7
Simplified0.4
rmApplied div-inv0.5
Applied associate-/l*0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2019209
(FPCore (a b c)
:name "Cubic critical, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e15) (< 1.11022e-16 b 9.0072e15) (< 1.11022e-16 c 9.0072e15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))