\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 -1.1446001462836007 \cdot 10^{+58}:\\
\;\;\;\;\frac{1}{3 \cdot a} \cdot \mathsf{fma}\left(\frac{3}{2}, \frac{c}{\frac{b}{a}}, b \cdot -2\right)\\
\mathbf{elif}\;b \le 1.1094847447691107 \cdot 10^{-113}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(-3, c \cdot a, b \cdot b\right)}}{3}}{a} - \frac{\frac{b}{3}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\
\end{array}double f(double a, double b, double c) {
double r4579523 = b;
double r4579524 = -r4579523;
double r4579525 = r4579523 * r4579523;
double r4579526 = 3.0;
double r4579527 = a;
double r4579528 = r4579526 * r4579527;
double r4579529 = c;
double r4579530 = r4579528 * r4579529;
double r4579531 = r4579525 - r4579530;
double r4579532 = sqrt(r4579531);
double r4579533 = r4579524 + r4579532;
double r4579534 = r4579533 / r4579528;
return r4579534;
}
double f(double a, double b, double c) {
double r4579535 = b;
double r4579536 = -1.1446001462836007e+58;
bool r4579537 = r4579535 <= r4579536;
double r4579538 = 1.0;
double r4579539 = 3.0;
double r4579540 = a;
double r4579541 = r4579539 * r4579540;
double r4579542 = r4579538 / r4579541;
double r4579543 = 1.5;
double r4579544 = c;
double r4579545 = r4579535 / r4579540;
double r4579546 = r4579544 / r4579545;
double r4579547 = -2.0;
double r4579548 = r4579535 * r4579547;
double r4579549 = fma(r4579543, r4579546, r4579548);
double r4579550 = r4579542 * r4579549;
double r4579551 = 1.1094847447691107e-113;
bool r4579552 = r4579535 <= r4579551;
double r4579553 = -3.0;
double r4579554 = r4579544 * r4579540;
double r4579555 = r4579535 * r4579535;
double r4579556 = fma(r4579553, r4579554, r4579555);
double r4579557 = sqrt(r4579556);
double r4579558 = r4579557 / r4579539;
double r4579559 = r4579558 / r4579540;
double r4579560 = r4579535 / r4579539;
double r4579561 = r4579560 / r4579540;
double r4579562 = r4579559 - r4579561;
double r4579563 = r4579544 / r4579535;
double r4579564 = -0.5;
double r4579565 = r4579563 * r4579564;
double r4579566 = r4579552 ? r4579562 : r4579565;
double r4579567 = r4579537 ? r4579550 : r4579566;
return r4579567;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.1446001462836007e+58Initial program 37.5
rmApplied div-inv37.5
Taylor expanded around -inf 10.8
Simplified5.9
if -1.1446001462836007e+58 < b < 1.1094847447691107e-113Initial program 12.9
rmApplied associate-/r*13.0
Simplified12.9
rmApplied div-sub12.9
Applied div-sub12.9
rmApplied *-un-lft-identity12.9
Applied associate-/r*12.9
Simplified12.9
if 1.1094847447691107e-113 < b Initial program 51.6
Taylor expanded around inf 10.8
Final simplification10.7
herbie shell --seed 2019141 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))