\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\frac{\left({b}^{2} - {b}^{2}\right) + \left(3 \cdot a\right) \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}{3 \cdot a}double f(double a, double b, double c) {
double r120863 = b;
double r120864 = -r120863;
double r120865 = r120863 * r120863;
double r120866 = 3.0;
double r120867 = a;
double r120868 = r120866 * r120867;
double r120869 = c;
double r120870 = r120868 * r120869;
double r120871 = r120865 - r120870;
double r120872 = sqrt(r120871);
double r120873 = r120864 + r120872;
double r120874 = r120873 / r120868;
return r120874;
}
double f(double a, double b, double c) {
double r120875 = b;
double r120876 = 2.0;
double r120877 = pow(r120875, r120876);
double r120878 = r120877 - r120877;
double r120879 = 3.0;
double r120880 = a;
double r120881 = r120879 * r120880;
double r120882 = c;
double r120883 = r120881 * r120882;
double r120884 = r120878 + r120883;
double r120885 = -r120875;
double r120886 = r120875 * r120875;
double r120887 = r120886 - r120883;
double r120888 = sqrt(r120887);
double r120889 = r120885 - r120888;
double r120890 = r120884 / r120889;
double r120891 = r120890 / r120881;
return r120891;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.8
rmApplied flip-+43.8
Simplified0.5
rmApplied associate-*r*0.4
Final simplification0.4
herbie shell --seed 2019362
(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)))