\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 -3.71711085460076329 \cdot 10^{118}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.66666666666666663 \cdot \frac{b}{a}\\
\mathbf{elif}\;b \le 8.87069060473612544 \cdot 10^{-35}:\\
\;\;\;\;\left(\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}\right) \cdot \frac{1}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r135157 = b;
double r135158 = -r135157;
double r135159 = r135157 * r135157;
double r135160 = 3.0;
double r135161 = a;
double r135162 = r135160 * r135161;
double r135163 = c;
double r135164 = r135162 * r135163;
double r135165 = r135159 - r135164;
double r135166 = sqrt(r135165);
double r135167 = r135158 + r135166;
double r135168 = r135167 / r135162;
return r135168;
}
double f(double a, double b, double c) {
double r135169 = b;
double r135170 = -3.7171108546007633e+118;
bool r135171 = r135169 <= r135170;
double r135172 = 0.5;
double r135173 = c;
double r135174 = r135173 / r135169;
double r135175 = r135172 * r135174;
double r135176 = 0.6666666666666666;
double r135177 = a;
double r135178 = r135169 / r135177;
double r135179 = r135176 * r135178;
double r135180 = r135175 - r135179;
double r135181 = 8.870690604736125e-35;
bool r135182 = r135169 <= r135181;
double r135183 = -r135169;
double r135184 = r135169 * r135169;
double r135185 = 3.0;
double r135186 = r135185 * r135177;
double r135187 = r135186 * r135173;
double r135188 = r135184 - r135187;
double r135189 = sqrt(r135188);
double r135190 = r135183 + r135189;
double r135191 = 1.0;
double r135192 = r135191 / r135186;
double r135193 = r135190 * r135192;
double r135194 = -0.5;
double r135195 = r135194 * r135174;
double r135196 = r135182 ? r135193 : r135195;
double r135197 = r135171 ? r135180 : r135196;
return r135197;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.7171108546007633e+118Initial program 52.1
Taylor expanded around -inf 3.3
if -3.7171108546007633e+118 < b < 8.870690604736125e-35Initial program 14.2
rmApplied div-inv14.2
if 8.870690604736125e-35 < b Initial program 54.1
Taylor expanded around inf 7.9
Final simplification10.4
herbie shell --seed 2020027
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))