\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 -63362873442066488610789523456:\\
\;\;\;\;\frac{\mathsf{fma}\left(-2, b, \frac{1.5 \cdot a}{\frac{b}{c}}\right)}{a \cdot 3}\\
\mathbf{elif}\;b \le 3.394285259336288061672372155189834062038 \cdot 10^{-72}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\sqrt[3]{b} \cdot \sqrt[3]{b}, -\sqrt[3]{b}, \sqrt{b \cdot b - \left(a \cdot 3\right) \cdot c}\right)}{a \cdot 3}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{c \cdot a}{b} \cdot -1.5}{a \cdot 3}\\
\end{array}double f(double a, double b, double c) {
double r4617624 = b;
double r4617625 = -r4617624;
double r4617626 = r4617624 * r4617624;
double r4617627 = 3.0;
double r4617628 = a;
double r4617629 = r4617627 * r4617628;
double r4617630 = c;
double r4617631 = r4617629 * r4617630;
double r4617632 = r4617626 - r4617631;
double r4617633 = sqrt(r4617632);
double r4617634 = r4617625 + r4617633;
double r4617635 = r4617634 / r4617629;
return r4617635;
}
double f(double a, double b, double c) {
double r4617636 = b;
double r4617637 = -6.336287344206649e+28;
bool r4617638 = r4617636 <= r4617637;
double r4617639 = -2.0;
double r4617640 = 1.5;
double r4617641 = a;
double r4617642 = r4617640 * r4617641;
double r4617643 = c;
double r4617644 = r4617636 / r4617643;
double r4617645 = r4617642 / r4617644;
double r4617646 = fma(r4617639, r4617636, r4617645);
double r4617647 = 3.0;
double r4617648 = r4617641 * r4617647;
double r4617649 = r4617646 / r4617648;
double r4617650 = 3.394285259336288e-72;
bool r4617651 = r4617636 <= r4617650;
double r4617652 = cbrt(r4617636);
double r4617653 = r4617652 * r4617652;
double r4617654 = -r4617652;
double r4617655 = r4617636 * r4617636;
double r4617656 = r4617648 * r4617643;
double r4617657 = r4617655 - r4617656;
double r4617658 = sqrt(r4617657);
double r4617659 = fma(r4617653, r4617654, r4617658);
double r4617660 = r4617659 / r4617648;
double r4617661 = r4617643 * r4617641;
double r4617662 = r4617661 / r4617636;
double r4617663 = -1.5;
double r4617664 = r4617662 * r4617663;
double r4617665 = r4617664 / r4617648;
double r4617666 = r4617651 ? r4617660 : r4617665;
double r4617667 = r4617638 ? r4617649 : r4617666;
return r4617667;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -6.336287344206649e+28Initial program 34.9
rmApplied add-cube-cbrt34.9
Applied associate-*r*34.9
Taylor expanded around -inf 11.8
Simplified7.5
if -6.336287344206649e+28 < b < 3.394285259336288e-72Initial program 14.0
rmApplied add-cube-cbrt14.2
Applied distribute-rgt-neg-in14.2
Applied fma-def14.2
if 3.394285259336288e-72 < b Initial program 53.9
Taylor expanded around inf 19.3
Final simplification14.8
herbie shell --seed 2019192 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3.0 a) c)))) (* 3.0 a)))