\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le 2134.20029068235863:\\
\;\;\;\;\frac{\frac{b \cdot b - \left(b \cdot b - 3 \cdot \left(a \cdot c\right)\right)}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1.5}{3} \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r62336 = b;
double r62337 = -r62336;
double r62338 = r62336 * r62336;
double r62339 = 3.0;
double r62340 = a;
double r62341 = r62339 * r62340;
double r62342 = c;
double r62343 = r62341 * r62342;
double r62344 = r62338 - r62343;
double r62345 = sqrt(r62344);
double r62346 = r62337 + r62345;
double r62347 = r62346 / r62341;
return r62347;
}
double f(double a, double b, double c) {
double r62348 = b;
double r62349 = 2134.2002906823586;
bool r62350 = r62348 <= r62349;
double r62351 = r62348 * r62348;
double r62352 = 3.0;
double r62353 = a;
double r62354 = c;
double r62355 = r62353 * r62354;
double r62356 = r62352 * r62355;
double r62357 = r62351 - r62356;
double r62358 = r62351 - r62357;
double r62359 = -r62348;
double r62360 = r62352 * r62353;
double r62361 = r62360 * r62354;
double r62362 = r62351 - r62361;
double r62363 = sqrt(r62362);
double r62364 = r62359 - r62363;
double r62365 = r62358 / r62364;
double r62366 = r62365 / r62360;
double r62367 = -1.5;
double r62368 = r62367 / r62352;
double r62369 = r62354 / r62348;
double r62370 = r62368 * r62369;
double r62371 = r62350 ? r62366 : r62370;
return r62371;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 2134.2002906823586Initial program 18.0
rmApplied flip-+18.0
Simplified16.9
if 2134.2002906823586 < b Initial program 37.0
Taylor expanded around inf 15.8
rmApplied times-frac15.7
Taylor expanded around 0 15.6
Final simplification16.2
herbie shell --seed 2019199 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical, narrow range"
: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.0 a) c)))) (* 3.0 a)))