\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\frac{\frac{1}{\sqrt[3]{1} \cdot \sqrt[3]{1}}}{\frac{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{a \cdot c}} \cdot \frac{\frac{3}{\sqrt[3]{1}}}{3}}{a}double f(double a, double b, double c) {
double r119909 = b;
double r119910 = -r119909;
double r119911 = r119909 * r119909;
double r119912 = 3.0;
double r119913 = a;
double r119914 = r119912 * r119913;
double r119915 = c;
double r119916 = r119914 * r119915;
double r119917 = r119911 - r119916;
double r119918 = sqrt(r119917);
double r119919 = r119910 + r119918;
double r119920 = r119919 / r119914;
return r119920;
}
double f(double a, double b, double c) {
double r119921 = 1.0;
double r119922 = cbrt(r119921);
double r119923 = r119922 * r119922;
double r119924 = r119921 / r119923;
double r119925 = b;
double r119926 = -r119925;
double r119927 = r119925 * r119925;
double r119928 = 3.0;
double r119929 = a;
double r119930 = r119928 * r119929;
double r119931 = c;
double r119932 = r119930 * r119931;
double r119933 = r119927 - r119932;
double r119934 = sqrt(r119933);
double r119935 = r119926 - r119934;
double r119936 = r119929 * r119931;
double r119937 = r119935 / r119936;
double r119938 = r119924 / r119937;
double r119939 = r119928 / r119922;
double r119940 = r119939 / r119928;
double r119941 = r119938 * r119940;
double r119942 = r119941 / r119929;
return r119942;
}



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.5
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied times-frac0.5
Applied associate-/l*0.5
rmApplied associate-/r/0.5
Applied add-cube-cbrt0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied times-frac0.5
Final simplification0.5
herbie shell --seed 2020062
(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)))