\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{3 \cdot \left(a \cdot c\right)}{a \cdot \left(3 \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}\right)\right)}double f(double a, double b, double c) {
double r54373 = b;
double r54374 = -r54373;
double r54375 = r54373 * r54373;
double r54376 = 3.0;
double r54377 = a;
double r54378 = r54376 * r54377;
double r54379 = c;
double r54380 = r54378 * r54379;
double r54381 = r54375 - r54380;
double r54382 = sqrt(r54381);
double r54383 = r54374 + r54382;
double r54384 = r54383 / r54378;
return r54384;
}
double f(double a, double b, double c) {
double r54385 = 3.0;
double r54386 = a;
double r54387 = c;
double r54388 = r54386 * r54387;
double r54389 = r54385 * r54388;
double r54390 = b;
double r54391 = -r54390;
double r54392 = r54390 * r54390;
double r54393 = r54385 * r54386;
double r54394 = r54393 * r54387;
double r54395 = r54392 - r54394;
double r54396 = sqrt(r54395);
double r54397 = r54391 - r54396;
double r54398 = r54385 * r54397;
double r54399 = r54386 * r54398;
double r54400 = r54389 / r54399;
return r54400;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.5
rmApplied flip-+28.5
Simplified0.6
rmApplied div-inv0.6
Applied associate-/l*0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2019306
(FPCore (a b c)
:name "Cubic critical, narrow range"
:precision binary64
:pre (and (< 1.05367121277235087e-8 a 94906265.6242515594) (< 1.05367121277235087e-8 b 94906265.6242515594) (< 1.05367121277235087e-8 c 94906265.6242515594))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))