\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\frac{3 \cdot a}{-1} \cdot \frac{-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 r108153 = b;
double r108154 = -r108153;
double r108155 = r108153 * r108153;
double r108156 = 3.0;
double r108157 = a;
double r108158 = r108156 * r108157;
double r108159 = c;
double r108160 = r108158 * r108159;
double r108161 = r108155 - r108160;
double r108162 = sqrt(r108161);
double r108163 = r108154 + r108162;
double r108164 = r108163 / r108158;
return r108164;
}
double f(double a, double b, double c) {
double r108165 = 3.0;
double r108166 = a;
double r108167 = r108165 * r108166;
double r108168 = -1.0;
double r108169 = r108167 / r108168;
double r108170 = c;
double r108171 = -r108170;
double r108172 = b;
double r108173 = -r108172;
double r108174 = r108172 * r108172;
double r108175 = r108167 * r108170;
double r108176 = r108174 - r108175;
double r108177 = sqrt(r108176);
double r108178 = r108173 - r108177;
double r108179 = r108171 / r108178;
double r108180 = r108169 * r108179;
double r108181 = r108180 / r108167;
return r108181;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.4
rmApplied flip-+28.3
Simplified0.6
rmApplied frac-2neg0.6
Simplified0.5
rmApplied neg-mul-10.5
Applied distribute-rgt-neg-in0.5
Applied times-frac0.3
Final simplification0.3
herbie shell --seed 2020060
(FPCore (a b c)
:name "Cubic critical, narrow range"
:precision binary64
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))