\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 r101793 = b;
double r101794 = -r101793;
double r101795 = r101793 * r101793;
double r101796 = 3.0;
double r101797 = a;
double r101798 = r101796 * r101797;
double r101799 = c;
double r101800 = r101798 * r101799;
double r101801 = r101795 - r101800;
double r101802 = sqrt(r101801);
double r101803 = r101794 + r101802;
double r101804 = r101803 / r101798;
return r101804;
}
double f(double a, double b, double c) {
double r101805 = b;
double r101806 = 2.0;
double r101807 = pow(r101805, r101806);
double r101808 = r101807 - r101807;
double r101809 = 3.0;
double r101810 = a;
double r101811 = r101809 * r101810;
double r101812 = c;
double r101813 = r101811 * r101812;
double r101814 = r101808 + r101813;
double r101815 = -r101805;
double r101816 = r101805 * r101805;
double r101817 = r101816 - r101813;
double r101818 = sqrt(r101817);
double r101819 = r101815 - r101818;
double r101820 = r101811 * r101819;
double r101821 = r101814 / r101820;
return r101821;
}



Bits error versus a



Bits error versus b



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