\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r72852 = b;
double r72853 = -r72852;
double r72854 = r72852 * r72852;
double r72855 = 3.0;
double r72856 = a;
double r72857 = r72855 * r72856;
double r72858 = c;
double r72859 = r72857 * r72858;
double r72860 = r72854 - r72859;
double r72861 = sqrt(r72860);
double r72862 = r72853 + r72861;
double r72863 = r72862 / r72857;
return r72863;
}
double f(double a, double b, double c) {
double r72864 = c;
double r72865 = b;
double r72866 = -r72865;
double r72867 = r72865 * r72865;
double r72868 = 3.0;
double r72869 = a;
double r72870 = r72868 * r72869;
double r72871 = r72870 * r72864;
double r72872 = r72867 - r72871;
double r72873 = sqrt(r72872);
double r72874 = r72866 - r72873;
double r72875 = r72864 / r72874;
return r72875;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 44.1
rmApplied flip-+44.1
Simplified0.5
rmApplied associate-/r*0.5
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied associate-/l*0.5
Final simplification0.2
herbie shell --seed 2019303
(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)))