\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 315.4848387613182580935244914144277572632:\\
\;\;\;\;\frac{\frac{\frac{\left(b \cdot b - \left(a \cdot c\right) \cdot 3\right) - b \cdot b}{b + \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 3}}}{a}}{3}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot -0.5}{b}\\
\end{array}double f(double a, double b, double c) {
double r134949 = b;
double r134950 = -r134949;
double r134951 = r134949 * r134949;
double r134952 = 3.0;
double r134953 = a;
double r134954 = r134952 * r134953;
double r134955 = c;
double r134956 = r134954 * r134955;
double r134957 = r134951 - r134956;
double r134958 = sqrt(r134957);
double r134959 = r134950 + r134958;
double r134960 = r134959 / r134954;
return r134960;
}
double f(double a, double b, double c) {
double r134961 = b;
double r134962 = 315.48483876131826;
bool r134963 = r134961 <= r134962;
double r134964 = r134961 * r134961;
double r134965 = a;
double r134966 = c;
double r134967 = r134965 * r134966;
double r134968 = 3.0;
double r134969 = r134967 * r134968;
double r134970 = r134964 - r134969;
double r134971 = r134970 - r134964;
double r134972 = sqrt(r134970);
double r134973 = r134961 + r134972;
double r134974 = r134971 / r134973;
double r134975 = r134974 / r134965;
double r134976 = r134975 / r134968;
double r134977 = -0.5;
double r134978 = r134966 * r134977;
double r134979 = r134978 / r134961;
double r134980 = r134963 ? r134976 : r134979;
return r134980;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 315.48483876131826Initial program 16.4
Simplified16.4
rmApplied flip--16.4
Simplified15.4
Simplified15.4
if 315.48483876131826 < b Initial program 36.0
Simplified36.0
Taylor expanded around inf 16.6
Simplified16.6
rmApplied *-un-lft-identity16.6
Applied *-un-lft-identity16.6
Applied *-un-lft-identity16.6
Applied times-frac16.6
Applied *-un-lft-identity16.6
Applied times-frac16.6
Applied times-frac16.6
Applied times-frac16.6
Simplified16.6
Taylor expanded around 0 16.5
Simplified16.5
Final simplification16.1
herbie shell --seed 2019195
(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)))