\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.2105477514764172 \cdot 10^{+140}:\\
\;\;\;\;\frac{\left(\frac{3}{2} \cdot \frac{a \cdot c}{b} - b\right) - b}{3 \cdot a}\\
\mathbf{elif}\;b \le -2.959343619656092 \cdot 10^{-128}:\\
\;\;\;\;\frac{\sqrt{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b} \cdot \sqrt{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}}{3 \cdot a}\\
\mathbf{elif}\;b \le 1.7581604978403035 \cdot 10^{+149}:\\
\;\;\;\;\frac{-1}{b + \sqrt{\left(c \cdot -3\right) \cdot a + b \cdot b}} \cdot c\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\left(c \cdot -3\right) \cdot a}{b + b}}{3 \cdot a}\\
\end{array}double f(double a, double b, double c, double __attribute__((unused)) d) {
double r20013734 = b;
double r20013735 = -r20013734;
double r20013736 = r20013734 * r20013734;
double r20013737 = 3.0;
double r20013738 = a;
double r20013739 = r20013737 * r20013738;
double r20013740 = c;
double r20013741 = r20013739 * r20013740;
double r20013742 = r20013736 - r20013741;
double r20013743 = sqrt(r20013742);
double r20013744 = r20013735 + r20013743;
double r20013745 = r20013744 / r20013739;
return r20013745;
}
double f(double a, double b, double c, double __attribute__((unused)) d) {
double r20013746 = b;
double r20013747 = -1.2105477514764172e+140;
bool r20013748 = r20013746 <= r20013747;
double r20013749 = 1.5;
double r20013750 = a;
double r20013751 = c;
double r20013752 = r20013750 * r20013751;
double r20013753 = r20013752 / r20013746;
double r20013754 = r20013749 * r20013753;
double r20013755 = r20013754 - r20013746;
double r20013756 = r20013755 - r20013746;
double r20013757 = 3.0;
double r20013758 = r20013757 * r20013750;
double r20013759 = r20013756 / r20013758;
double r20013760 = -2.959343619656092e-128;
bool r20013761 = r20013746 <= r20013760;
double r20013762 = r20013746 * r20013746;
double r20013763 = r20013758 * r20013751;
double r20013764 = r20013762 - r20013763;
double r20013765 = sqrt(r20013764);
double r20013766 = r20013765 - r20013746;
double r20013767 = sqrt(r20013766);
double r20013768 = r20013767 * r20013767;
double r20013769 = r20013768 / r20013758;
double r20013770 = 1.7581604978403035e+149;
bool r20013771 = r20013746 <= r20013770;
double r20013772 = -1.0;
double r20013773 = -3.0;
double r20013774 = r20013751 * r20013773;
double r20013775 = r20013774 * r20013750;
double r20013776 = r20013775 + r20013762;
double r20013777 = sqrt(r20013776);
double r20013778 = r20013746 + r20013777;
double r20013779 = r20013772 / r20013778;
double r20013780 = r20013779 * r20013751;
double r20013781 = r20013746 + r20013746;
double r20013782 = r20013775 / r20013781;
double r20013783 = r20013782 / r20013758;
double r20013784 = r20013771 ? r20013780 : r20013783;
double r20013785 = r20013761 ? r20013769 : r20013784;
double r20013786 = r20013748 ? r20013759 : r20013785;
return r20013786;
}



Bits error versus a



Bits error versus b



Bits error versus c



Bits error versus d
Results
if b < -1.2105477514764172e+140Initial program 55.4
Simplified55.4
Taylor expanded around inf 55.4
Simplified55.4
rmApplied add-cube-cbrt55.4
Applied associate-*r*55.4
Taylor expanded around -inf 10.1
if -1.2105477514764172e+140 < b < -2.959343619656092e-128Initial program 6.1
Simplified6.1
rmApplied add-sqr-sqrt6.4
if -2.959343619656092e-128 < b < 1.7581604978403035e+149Initial program 29.1
Simplified29.1
Taylor expanded around inf 29.1
Simplified29.1
rmApplied add-cube-cbrt29.4
Applied associate-*r*29.4
rmApplied flip--30.3
Simplified16.4
Simplified16.2
rmApplied *-un-lft-identity16.2
Applied times-frac15.8
Applied times-frac12.5
Simplified12.4
Simplified10.5
if 1.7581604978403035e+149 < b Initial program 62.2
Simplified62.2
Taylor expanded around inf 62.2
Simplified62.2
rmApplied add-cube-cbrt62.2
Applied associate-*r*62.2
rmApplied flip--62.3
Simplified37.1
Simplified37.1
Taylor expanded around 0 14.5
Final simplification10.3
herbie shell --seed 2019125
(FPCore (a b c d)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))