\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\begin{array}{l}
\mathbf{if}\;\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} + \left(-b\right)}{3 \cdot a} \le -6345072.402882894:\\
\;\;\;\;\frac{\sqrt[3]{\left(\sqrt{\mathsf{fma}\left(c, -3 \cdot a, b \cdot b\right)} - b\right) \cdot \left(\left(\sqrt{\mathsf{fma}\left(c, -3 \cdot a, b \cdot b\right)} - b\right) \cdot \left(\sqrt{\mathsf{fma}\left(c, -3 \cdot a, b \cdot b\right)} - b\right)\right)}}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\
\end{array}double f(double a, double b, double c) {
double r2698219 = b;
double r2698220 = -r2698219;
double r2698221 = r2698219 * r2698219;
double r2698222 = 3.0;
double r2698223 = a;
double r2698224 = r2698222 * r2698223;
double r2698225 = c;
double r2698226 = r2698224 * r2698225;
double r2698227 = r2698221 - r2698226;
double r2698228 = sqrt(r2698227);
double r2698229 = r2698220 + r2698228;
double r2698230 = r2698229 / r2698224;
return r2698230;
}
double f(double a, double b, double c) {
double r2698231 = b;
double r2698232 = r2698231 * r2698231;
double r2698233 = 3.0;
double r2698234 = a;
double r2698235 = r2698233 * r2698234;
double r2698236 = c;
double r2698237 = r2698235 * r2698236;
double r2698238 = r2698232 - r2698237;
double r2698239 = sqrt(r2698238);
double r2698240 = -r2698231;
double r2698241 = r2698239 + r2698240;
double r2698242 = r2698241 / r2698235;
double r2698243 = -6345072.402882894;
bool r2698244 = r2698242 <= r2698243;
double r2698245 = -3.0;
double r2698246 = r2698245 * r2698234;
double r2698247 = fma(r2698236, r2698246, r2698232);
double r2698248 = sqrt(r2698247);
double r2698249 = r2698248 - r2698231;
double r2698250 = r2698249 * r2698249;
double r2698251 = r2698249 * r2698250;
double r2698252 = cbrt(r2698251);
double r2698253 = r2698252 / r2698235;
double r2698254 = r2698236 / r2698231;
double r2698255 = -0.5;
double r2698256 = r2698254 * r2698255;
double r2698257 = r2698244 ? r2698253 : r2698256;
return r2698257;
}



Bits error versus a



Bits error versus b



Bits error versus c
if (/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)) < -6345072.402882894Initial program 21.1
rmApplied add-cbrt-cube21.1
Simplified21.1
if -6345072.402882894 < (/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)) Initial program 54.4
Taylor expanded around inf 4.8
Final simplification5.7
herbie shell --seed 2019163 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical, wide range"
:pre (and (< 4.930380657631324e-32 a 2.028240960365167e+31) (< 4.930380657631324e-32 b 2.028240960365167e+31) (< 4.930380657631324e-32 c 2.028240960365167e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))