\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{3 \cdot \left(a \cdot c\right)}{3} \cdot \frac{\frac{1}{\left(-b\right) - \sqrt{b \cdot b - \left(\sqrt[3]{\left(3 \cdot a\right) \cdot c} \cdot \sqrt[3]{\left(3 \cdot a\right) \cdot c}\right) \cdot \sqrt[3]{\left(3 \cdot a\right) \cdot c}}}}{a}double f(double a, double b, double c) {
double r84209 = b;
double r84210 = -r84209;
double r84211 = r84209 * r84209;
double r84212 = 3.0;
double r84213 = a;
double r84214 = r84212 * r84213;
double r84215 = c;
double r84216 = r84214 * r84215;
double r84217 = r84211 - r84216;
double r84218 = sqrt(r84217);
double r84219 = r84210 + r84218;
double r84220 = r84219 / r84214;
return r84220;
}
double f(double a, double b, double c) {
double r84221 = 3.0;
double r84222 = a;
double r84223 = c;
double r84224 = r84222 * r84223;
double r84225 = r84221 * r84224;
double r84226 = r84225 / r84221;
double r84227 = 1.0;
double r84228 = b;
double r84229 = -r84228;
double r84230 = r84228 * r84228;
double r84231 = r84221 * r84222;
double r84232 = r84231 * r84223;
double r84233 = cbrt(r84232);
double r84234 = r84233 * r84233;
double r84235 = r84234 * r84233;
double r84236 = r84230 - r84235;
double r84237 = sqrt(r84236);
double r84238 = r84229 - r84237;
double r84239 = r84227 / r84238;
double r84240 = r84239 / r84222;
double r84241 = r84226 * r84240;
return r84241;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.6
rmApplied flip-+28.6
Simplified0.6
rmApplied div-inv0.6
Applied times-frac0.6
Simplified0.6
rmApplied add-cube-cbrt0.6
Final simplification0.6
herbie shell --seed 2020002
(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)))