\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 -6.4005968496310915 \cdot 10^{+124}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{c}{b} - \frac{b}{a} \cdot \frac{2}{3}\\
\mathbf{elif}\;b \le 7.6551553616209435 \cdot 10^{-56}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{a}}{3}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c, double __attribute__((unused)) d) {
double r3254348 = b;
double r3254349 = -r3254348;
double r3254350 = r3254348 * r3254348;
double r3254351 = 3.0;
double r3254352 = a;
double r3254353 = r3254351 * r3254352;
double r3254354 = c;
double r3254355 = r3254353 * r3254354;
double r3254356 = r3254350 - r3254355;
double r3254357 = sqrt(r3254356);
double r3254358 = r3254349 + r3254357;
double r3254359 = r3254358 / r3254353;
return r3254359;
}
double f(double a, double b, double c, double __attribute__((unused)) d) {
double r3254360 = b;
double r3254361 = -6.4005968496310915e+124;
bool r3254362 = r3254360 <= r3254361;
double r3254363 = 0.5;
double r3254364 = c;
double r3254365 = r3254364 / r3254360;
double r3254366 = r3254363 * r3254365;
double r3254367 = a;
double r3254368 = r3254360 / r3254367;
double r3254369 = 0.6666666666666666;
double r3254370 = r3254368 * r3254369;
double r3254371 = r3254366 - r3254370;
double r3254372 = 7.6551553616209435e-56;
bool r3254373 = r3254360 <= r3254372;
double r3254374 = r3254360 * r3254360;
double r3254375 = 3.0;
double r3254376 = r3254375 * r3254367;
double r3254377 = r3254376 * r3254364;
double r3254378 = r3254374 - r3254377;
double r3254379 = sqrt(r3254378);
double r3254380 = r3254379 - r3254360;
double r3254381 = r3254380 / r3254367;
double r3254382 = r3254381 / r3254375;
double r3254383 = -0.5;
double r3254384 = r3254383 * r3254365;
double r3254385 = r3254373 ? r3254382 : r3254384;
double r3254386 = r3254362 ? r3254371 : r3254385;
return r3254386;
}



Bits error versus a



Bits error versus b



Bits error versus c



Bits error versus d
Results
if b < -6.4005968496310915e+124Initial program 49.8
Simplified49.8
Taylor expanded around -inf 3.4
if -6.4005968496310915e+124 < b < 7.6551553616209435e-56Initial program 12.7
Simplified12.7
rmApplied *-un-lft-identity12.7
Applied *-un-lft-identity12.7
Applied distribute-lft-out--12.7
Applied times-frac12.8
rmApplied associate-*l/12.7
Simplified12.7
if 7.6551553616209435e-56 < b Initial program 53.1
Simplified53.1
Taylor expanded around inf 8.2
Final simplification9.8
herbie shell --seed 2019134
(FPCore (a b c d)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))