\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 -3.5237154995471856 \cdot 10^{-05}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(\mathsf{fma}\left(a, -3 \cdot c, b \cdot b\right), \sqrt{\mathsf{fma}\left(a, -3 \cdot c, b \cdot b\right)}, \left(b \cdot b\right) \cdot \left(-b\right)\right)}{\mathsf{fma}\left(\sqrt{\mathsf{fma}\left(a, -3 \cdot c, b \cdot b\right)}, \sqrt{\mathsf{fma}\left(a, -3 \cdot c, b \cdot b\right)} + b, b \cdot b\right)}}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-3}{2} \cdot a}{a} \cdot \frac{c}{3 \cdot b}\\
\end{array}double f(double a, double b, double c) {
double r3941723 = b;
double r3941724 = -r3941723;
double r3941725 = r3941723 * r3941723;
double r3941726 = 3.0;
double r3941727 = a;
double r3941728 = r3941726 * r3941727;
double r3941729 = c;
double r3941730 = r3941728 * r3941729;
double r3941731 = r3941725 - r3941730;
double r3941732 = sqrt(r3941731);
double r3941733 = r3941724 + r3941732;
double r3941734 = r3941733 / r3941728;
return r3941734;
}
double f(double a, double b, double c) {
double r3941735 = b;
double r3941736 = r3941735 * r3941735;
double r3941737 = 3.0;
double r3941738 = a;
double r3941739 = r3941737 * r3941738;
double r3941740 = c;
double r3941741 = r3941739 * r3941740;
double r3941742 = r3941736 - r3941741;
double r3941743 = sqrt(r3941742);
double r3941744 = -r3941735;
double r3941745 = r3941743 + r3941744;
double r3941746 = r3941745 / r3941739;
double r3941747 = -3.5237154995471856e-05;
bool r3941748 = r3941746 <= r3941747;
double r3941749 = -3.0;
double r3941750 = r3941749 * r3941740;
double r3941751 = fma(r3941738, r3941750, r3941736);
double r3941752 = sqrt(r3941751);
double r3941753 = r3941736 * r3941744;
double r3941754 = fma(r3941751, r3941752, r3941753);
double r3941755 = r3941752 + r3941735;
double r3941756 = fma(r3941752, r3941755, r3941736);
double r3941757 = r3941754 / r3941756;
double r3941758 = r3941757 / r3941739;
double r3941759 = -1.5;
double r3941760 = r3941759 * r3941738;
double r3941761 = r3941760 / r3941738;
double r3941762 = r3941737 * r3941735;
double r3941763 = r3941740 / r3941762;
double r3941764 = r3941761 * r3941763;
double r3941765 = r3941748 ? r3941758 : r3941764;
return r3941765;
}



Bits error versus a



Bits error versus b



Bits error versus c
if (/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)) < -3.5237154995471856e-05Initial program 16.6
rmApplied flip3-+16.7
Simplified15.9
Simplified15.9
if -3.5237154995471856e-05 < (/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)) Initial program 39.2
Taylor expanded around inf 14.0
rmApplied *-un-lft-identity14.0
Applied times-frac14.0
Applied associate-*r*13.9
Simplified13.9
rmApplied *-un-lft-identity13.9
Applied associate-*r*13.9
Applied *-commutative13.9
Applied times-frac13.9
Simplified14.0
Final simplification14.9
herbie shell --seed 2019158 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical, narrow range"
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))