\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 -5.148407540792454 \cdot 10^{+110}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{3}{2}, \frac{a}{b} \cdot c, b \cdot -2\right)}{3 \cdot a}\\
\mathbf{elif}\;b \le 3.32629031803127 \cdot 10^{-71}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(-3, c \cdot a, b \cdot b\right)} - b}{3}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-3}{2} \cdot \frac{c \cdot a}{b}}{3 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r3180634 = b;
double r3180635 = -r3180634;
double r3180636 = r3180634 * r3180634;
double r3180637 = 3.0;
double r3180638 = a;
double r3180639 = r3180637 * r3180638;
double r3180640 = c;
double r3180641 = r3180639 * r3180640;
double r3180642 = r3180636 - r3180641;
double r3180643 = sqrt(r3180642);
double r3180644 = r3180635 + r3180643;
double r3180645 = r3180644 / r3180639;
return r3180645;
}
double f(double a, double b, double c) {
double r3180646 = b;
double r3180647 = -5.148407540792454e+110;
bool r3180648 = r3180646 <= r3180647;
double r3180649 = 1.5;
double r3180650 = a;
double r3180651 = r3180650 / r3180646;
double r3180652 = c;
double r3180653 = r3180651 * r3180652;
double r3180654 = -2.0;
double r3180655 = r3180646 * r3180654;
double r3180656 = fma(r3180649, r3180653, r3180655);
double r3180657 = 3.0;
double r3180658 = r3180657 * r3180650;
double r3180659 = r3180656 / r3180658;
double r3180660 = 3.32629031803127e-71;
bool r3180661 = r3180646 <= r3180660;
double r3180662 = -3.0;
double r3180663 = r3180652 * r3180650;
double r3180664 = r3180646 * r3180646;
double r3180665 = fma(r3180662, r3180663, r3180664);
double r3180666 = sqrt(r3180665);
double r3180667 = r3180666 - r3180646;
double r3180668 = r3180667 / r3180657;
double r3180669 = r3180668 / r3180650;
double r3180670 = -1.5;
double r3180671 = r3180663 / r3180646;
double r3180672 = r3180670 * r3180671;
double r3180673 = r3180672 / r3180658;
double r3180674 = r3180661 ? r3180669 : r3180673;
double r3180675 = r3180648 ? r3180659 : r3180674;
return r3180675;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -5.148407540792454e+110Initial program 47.0
Taylor expanded around -inf 10.0
Simplified4.0
if -5.148407540792454e+110 < b < 3.32629031803127e-71Initial program 13.0
Simplified13.0
rmApplied associate-/r*13.0
if 3.32629031803127e-71 < b Initial program 52.6
Taylor expanded around inf 19.9
Final simplification14.5
herbie shell --seed 2019151 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))