\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 1.7936624356974993 \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 r74984 = b;
double r74985 = -r74984;
double r74986 = r74984 * r74984;
double r74987 = 3.0;
double r74988 = a;
double r74989 = r74987 * r74988;
double r74990 = c;
double r74991 = r74989 * r74990;
double r74992 = r74986 - r74991;
double r74993 = sqrt(r74992);
double r74994 = r74985 + r74993;
double r74995 = r74994 / r74989;
return r74995;
}
double f(double a, double b, double c) {
double r74996 = b;
double r74997 = 0.00017936624356974993;
bool r74998 = r74996 <= r74997;
double r74999 = 2.0;
double r75000 = pow(r74996, r74999);
double r75001 = 3.0;
double r75002 = a;
double r75003 = c;
double r75004 = r75002 * r75003;
double r75005 = r75001 * r75004;
double r75006 = r75000 - r75005;
double r75007 = r75006 - r75000;
double r75008 = r74996 * r74996;
double r75009 = r75001 * r75002;
double r75010 = r75009 * r75003;
double r75011 = r75008 - r75010;
double r75012 = sqrt(r75011);
double r75013 = r75012 + r74996;
double r75014 = r75007 / r75013;
double r75015 = r75014 / r75009;
double r75016 = -0.5;
double r75017 = r75003 / r74996;
double r75018 = r75016 * r75017;
double r75019 = r74998 ? r75015 : r75018;
return r75019;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 0.00017936624356974993Initial program 18.4
Simplified18.4
rmApplied flip--18.4
Simplified17.4
if 0.00017936624356974993 < b Initial program 45.7
Simplified45.7
Taylor expanded around inf 10.6
Final simplification11.1
herbie shell --seed 2020047
(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)))