\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 2.56800976414688911 \cdot 10^{-4}:\\
\;\;\;\;\frac{\frac{\left({b}^{2} - 3 \cdot \left(a \cdot c\right)\right) - {b}^{2}}{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} + b}}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r72429 = b;
double r72430 = -r72429;
double r72431 = r72429 * r72429;
double r72432 = 3.0;
double r72433 = a;
double r72434 = r72432 * r72433;
double r72435 = c;
double r72436 = r72434 * r72435;
double r72437 = r72431 - r72436;
double r72438 = sqrt(r72437);
double r72439 = r72430 + r72438;
double r72440 = r72439 / r72434;
return r72440;
}
double f(double a, double b, double c) {
double r72441 = b;
double r72442 = 0.0002568009764146889;
bool r72443 = r72441 <= r72442;
double r72444 = 2.0;
double r72445 = pow(r72441, r72444);
double r72446 = 3.0;
double r72447 = a;
double r72448 = c;
double r72449 = r72447 * r72448;
double r72450 = r72446 * r72449;
double r72451 = r72445 - r72450;
double r72452 = r72451 - r72445;
double r72453 = r72441 * r72441;
double r72454 = r72446 * r72447;
double r72455 = r72454 * r72448;
double r72456 = r72453 - r72455;
double r72457 = sqrt(r72456);
double r72458 = r72457 + r72441;
double r72459 = r72452 / r72458;
double r72460 = r72459 / r72454;
double r72461 = -0.5;
double r72462 = r72448 / r72441;
double r72463 = r72461 * r72462;
double r72464 = r72443 ? r72460 : r72463;
return r72464;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 0.0002568009764146889Initial program 19.6
Simplified19.6
rmApplied flip--19.5
Simplified18.5
if 0.0002568009764146889 < b Initial program 46.0
Simplified46.0
Taylor expanded around inf 10.4
Final simplification11.1
herbie shell --seed 2020042
(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)))