\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.303779241097880191978502132703296326983 \cdot 10^{138}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - \frac{b}{a} \cdot 0.6666666666666666296592325124947819858789\\
\mathbf{elif}\;b \le 4.626043257219637986942022736183111936335 \cdot 10^{-62}:\\
\;\;\;\;\frac{1}{a \cdot 3} \cdot \left(\left(-b\right) + \sqrt{b \cdot b - c \cdot \left(a \cdot 3\right)}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} \cdot -0.5\\
\end{array}double f(double a, double b, double c) {
double r2955152 = b;
double r2955153 = -r2955152;
double r2955154 = r2955152 * r2955152;
double r2955155 = 3.0;
double r2955156 = a;
double r2955157 = r2955155 * r2955156;
double r2955158 = c;
double r2955159 = r2955157 * r2955158;
double r2955160 = r2955154 - r2955159;
double r2955161 = sqrt(r2955160);
double r2955162 = r2955153 + r2955161;
double r2955163 = r2955162 / r2955157;
return r2955163;
}
double f(double a, double b, double c) {
double r2955164 = b;
double r2955165 = -2.3037792410978802e+138;
bool r2955166 = r2955164 <= r2955165;
double r2955167 = 0.5;
double r2955168 = c;
double r2955169 = r2955168 / r2955164;
double r2955170 = r2955167 * r2955169;
double r2955171 = a;
double r2955172 = r2955164 / r2955171;
double r2955173 = 0.6666666666666666;
double r2955174 = r2955172 * r2955173;
double r2955175 = r2955170 - r2955174;
double r2955176 = 4.626043257219638e-62;
bool r2955177 = r2955164 <= r2955176;
double r2955178 = 1.0;
double r2955179 = 3.0;
double r2955180 = r2955171 * r2955179;
double r2955181 = r2955178 / r2955180;
double r2955182 = -r2955164;
double r2955183 = r2955164 * r2955164;
double r2955184 = r2955168 * r2955180;
double r2955185 = r2955183 - r2955184;
double r2955186 = sqrt(r2955185);
double r2955187 = r2955182 + r2955186;
double r2955188 = r2955181 * r2955187;
double r2955189 = -0.5;
double r2955190 = r2955169 * r2955189;
double r2955191 = r2955177 ? r2955188 : r2955190;
double r2955192 = r2955166 ? r2955175 : r2955191;
return r2955192;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.3037792410978802e+138Initial program 58.5
Taylor expanded around -inf 2.4
if -2.3037792410978802e+138 < b < 4.626043257219638e-62Initial program 12.3
rmApplied div-inv12.4
if 4.626043257219638e-62 < b Initial program 53.7
Taylor expanded around inf 8.5
Final simplification9.6
herbie shell --seed 2019174 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3.0 a) c)))) (* 3.0 a)))