\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 2297.8344311922956:\\
\;\;\;\;\frac{\frac{\left(b \cdot b - c \cdot \left(3 \cdot a\right)\right) \cdot \sqrt{b \cdot b - c \cdot \left(3 \cdot a\right)} - \left(b \cdot b\right) \cdot b}{\left(b \cdot b - c \cdot \left(3 \cdot a\right)\right) + \left(b \cdot \sqrt{b \cdot b - c \cdot \left(3 \cdot a\right)} + b \cdot b\right)}}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r3352070 = b;
double r3352071 = -r3352070;
double r3352072 = r3352070 * r3352070;
double r3352073 = 3.0;
double r3352074 = a;
double r3352075 = r3352073 * r3352074;
double r3352076 = c;
double r3352077 = r3352075 * r3352076;
double r3352078 = r3352072 - r3352077;
double r3352079 = sqrt(r3352078);
double r3352080 = r3352071 + r3352079;
double r3352081 = r3352080 / r3352075;
return r3352081;
}
double f(double a, double b, double c) {
double r3352082 = b;
double r3352083 = 2297.8344311922956;
bool r3352084 = r3352082 <= r3352083;
double r3352085 = r3352082 * r3352082;
double r3352086 = c;
double r3352087 = 3.0;
double r3352088 = a;
double r3352089 = r3352087 * r3352088;
double r3352090 = r3352086 * r3352089;
double r3352091 = r3352085 - r3352090;
double r3352092 = sqrt(r3352091);
double r3352093 = r3352091 * r3352092;
double r3352094 = r3352085 * r3352082;
double r3352095 = r3352093 - r3352094;
double r3352096 = r3352082 * r3352092;
double r3352097 = r3352096 + r3352085;
double r3352098 = r3352091 + r3352097;
double r3352099 = r3352095 / r3352098;
double r3352100 = r3352099 / r3352089;
double r3352101 = -0.5;
double r3352102 = r3352086 / r3352082;
double r3352103 = r3352101 * r3352102;
double r3352104 = r3352084 ? r3352100 : r3352103;
return r3352104;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 2297.8344311922956Initial program 17.8
Simplified17.8
rmApplied flip3--17.9
Simplified17.2
Simplified17.2
if 2297.8344311922956 < b Initial program 37.3
Simplified37.3
Taylor expanded around inf 15.5
Final simplification16.3
herbie shell --seed 2019162
(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 a) c)))) (* 3 a)))