\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 228.26278739030357:\\
\;\;\;\;\frac{\frac{{b}^{2} - \left({b}^{2} - \left(3 \cdot a\right) \cdot c\right)}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-1.5 \cdot a\right) \cdot c}{\left(3 \cdot a\right) \cdot b}\\
\end{array}double f(double a, double b, double c) {
double r163386 = b;
double r163387 = -r163386;
double r163388 = r163386 * r163386;
double r163389 = 3.0;
double r163390 = a;
double r163391 = r163389 * r163390;
double r163392 = c;
double r163393 = r163391 * r163392;
double r163394 = r163388 - r163393;
double r163395 = sqrt(r163394);
double r163396 = r163387 + r163395;
double r163397 = r163396 / r163391;
return r163397;
}
double f(double a, double b, double c) {
double r163398 = b;
double r163399 = 228.26278739030357;
bool r163400 = r163398 <= r163399;
double r163401 = 2.0;
double r163402 = pow(r163398, r163401);
double r163403 = 3.0;
double r163404 = a;
double r163405 = r163403 * r163404;
double r163406 = c;
double r163407 = r163405 * r163406;
double r163408 = r163402 - r163407;
double r163409 = r163402 - r163408;
double r163410 = -r163398;
double r163411 = r163398 * r163398;
double r163412 = r163411 - r163407;
double r163413 = sqrt(r163412);
double r163414 = r163410 - r163413;
double r163415 = r163409 / r163414;
double r163416 = r163415 / r163405;
double r163417 = -1.5;
double r163418 = r163417 * r163404;
double r163419 = r163418 * r163406;
double r163420 = r163405 * r163398;
double r163421 = r163419 / r163420;
double r163422 = r163400 ? r163416 : r163421;
return r163422;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 228.26278739030357Initial program 16.3
rmApplied flip-+16.3
Simplified15.3
if 228.26278739030357 < b Initial program 35.6
Taylor expanded around inf 16.9
rmApplied *-un-lft-identity16.9
Applied times-frac16.8
Applied associate-*r*16.8
Simplified16.8
rmApplied associate-*r/16.8
Applied associate-/l/16.8
Final simplification16.3
herbie shell --seed 2020045
(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)))