\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\left({b}^{2} - {b}^{2}\right) + \left(3 \cdot a\right) \cdot c}{\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 r155740 = b;
double r155741 = -r155740;
double r155742 = r155740 * r155740;
double r155743 = 3.0;
double r155744 = a;
double r155745 = r155743 * r155744;
double r155746 = c;
double r155747 = r155745 * r155746;
double r155748 = r155742 - r155747;
double r155749 = sqrt(r155748);
double r155750 = r155741 + r155749;
double r155751 = r155750 / r155745;
return r155751;
}
double f(double a, double b, double c) {
double r155752 = b;
double r155753 = 2.0;
double r155754 = pow(r155752, r155753);
double r155755 = r155754 - r155754;
double r155756 = 3.0;
double r155757 = a;
double r155758 = r155756 * r155757;
double r155759 = c;
double r155760 = r155758 * r155759;
double r155761 = r155755 + r155760;
double r155762 = -r155752;
double r155763 = r155752 * r155752;
double r155764 = r155763 - r155760;
double r155765 = sqrt(r155764);
double r155766 = r155762 - r155765;
double r155767 = r155758 * r155766;
double r155768 = r155761 / r155767;
return r155768;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.7
rmApplied flip-+43.7
Simplified0.5
rmApplied associate-*r*0.4
rmApplied div-inv0.5
Applied associate-/l*0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2020036
(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)))