\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\frac{c}{\left(-\sqrt{b \cdot b - a \cdot \left(3 \cdot c\right)}\right) - b} \cdot 3}{3}double f(double a, double b, double c) {
double r135839 = b;
double r135840 = -r135839;
double r135841 = r135839 * r135839;
double r135842 = 3.0;
double r135843 = a;
double r135844 = r135842 * r135843;
double r135845 = c;
double r135846 = r135844 * r135845;
double r135847 = r135841 - r135846;
double r135848 = sqrt(r135847);
double r135849 = r135840 + r135848;
double r135850 = r135849 / r135844;
return r135850;
}
double f(double a, double b, double c) {
double r135851 = c;
double r135852 = b;
double r135853 = r135852 * r135852;
double r135854 = a;
double r135855 = 3.0;
double r135856 = r135855 * r135851;
double r135857 = r135854 * r135856;
double r135858 = r135853 - r135857;
double r135859 = sqrt(r135858);
double r135860 = -r135859;
double r135861 = r135860 - r135852;
double r135862 = r135851 / r135861;
double r135863 = r135862 * r135855;
double r135864 = r135863 / r135855;
return r135864;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 44.0
rmApplied flip-+44.0
Simplified0.4
Simplified0.4
rmApplied associate-/r*0.5
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied times-frac0.5
Applied times-frac0.5
Simplified0.5
Simplified0.5
rmApplied pow10.5
Applied pow10.5
Applied pow-prod-down0.5
Simplified0.3
Final simplification0.3
herbie shell --seed 2019196
(FPCore (a b c)
:name "Cubic critical, medium range"
:pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3.0 a) c)))) (* 3.0 a)))