\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.006124725233072906597672755451758607334 \cdot 10^{153}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - \frac{b}{a} \cdot 0.6666666666666666296592325124947819858789\\
\mathbf{elif}\;b \le 6.407662420749314643846659194387390530859 \cdot 10^{-35}:\\
\;\;\;\;\frac{1}{3} \cdot \frac{\sqrt{b \cdot b - c \cdot \left(3 \cdot a\right)} - b}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} \cdot -0.5\\
\end{array}double f(double a, double b, double c) {
double r5198679 = b;
double r5198680 = -r5198679;
double r5198681 = r5198679 * r5198679;
double r5198682 = 3.0;
double r5198683 = a;
double r5198684 = r5198682 * r5198683;
double r5198685 = c;
double r5198686 = r5198684 * r5198685;
double r5198687 = r5198681 - r5198686;
double r5198688 = sqrt(r5198687);
double r5198689 = r5198680 + r5198688;
double r5198690 = r5198689 / r5198684;
return r5198690;
}
double f(double a, double b, double c) {
double r5198691 = b;
double r5198692 = -1.0061247252330729e+153;
bool r5198693 = r5198691 <= r5198692;
double r5198694 = 0.5;
double r5198695 = c;
double r5198696 = r5198695 / r5198691;
double r5198697 = r5198694 * r5198696;
double r5198698 = a;
double r5198699 = r5198691 / r5198698;
double r5198700 = 0.6666666666666666;
double r5198701 = r5198699 * r5198700;
double r5198702 = r5198697 - r5198701;
double r5198703 = 6.407662420749315e-35;
bool r5198704 = r5198691 <= r5198703;
double r5198705 = 1.0;
double r5198706 = 3.0;
double r5198707 = r5198705 / r5198706;
double r5198708 = r5198691 * r5198691;
double r5198709 = r5198706 * r5198698;
double r5198710 = r5198695 * r5198709;
double r5198711 = r5198708 - r5198710;
double r5198712 = sqrt(r5198711);
double r5198713 = r5198712 - r5198691;
double r5198714 = r5198713 / r5198698;
double r5198715 = r5198707 * r5198714;
double r5198716 = -0.5;
double r5198717 = r5198696 * r5198716;
double r5198718 = r5198704 ? r5198715 : r5198717;
double r5198719 = r5198693 ? r5198702 : r5198718;
return r5198719;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.0061247252330729e+153Initial program 63.7
Simplified63.7
Taylor expanded around -inf 2.4
if -1.0061247252330729e+153 < b < 6.407662420749315e-35Initial program 14.0
Simplified14.0
rmApplied *-un-lft-identity14.0
Applied times-frac14.1
if 6.407662420749315e-35 < b Initial program 54.6
Simplified54.6
Taylor expanded around inf 7.2
Final simplification10.4
herbie shell --seed 2019169
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3.0 a) c)))) (* 3.0 a)))