\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 -7.94903992111146232901506129675699683521 \cdot 10^{114}:\\
\;\;\;\;\frac{\left(-b\right) + \left(1.5 \cdot \frac{a \cdot c}{b} - b\right)}{3 \cdot a}\\
\mathbf{elif}\;b \le -5.843373275880084863518676297297284980208 \cdot 10^{-209}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3}}{a}\\
\mathbf{elif}\;b \le 3.058537763442422466231303459928314802514 \cdot 10^{64}:\\
\;\;\;\;\frac{3}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \frac{\frac{a \cdot \frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}{\sqrt[3]{3}}}{a}\\
\mathbf{elif}\;b \le 6.107031321392312680053315278474894982897 \cdot 10^{157}:\\
\;\;\;\;\frac{3}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \left(a \cdot \frac{\frac{\frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}{\sqrt[3]{3}}}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\left(3 \cdot a\right) \cdot c}{\left(-b\right) - \left(b - 1.5 \cdot \frac{a \cdot c}{b}\right)}}{3 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r195630 = b;
double r195631 = -r195630;
double r195632 = r195630 * r195630;
double r195633 = 3.0;
double r195634 = a;
double r195635 = r195633 * r195634;
double r195636 = c;
double r195637 = r195635 * r195636;
double r195638 = r195632 - r195637;
double r195639 = sqrt(r195638);
double r195640 = r195631 + r195639;
double r195641 = r195640 / r195635;
return r195641;
}
double f(double a, double b, double c) {
double r195642 = b;
double r195643 = -7.949039921111462e+114;
bool r195644 = r195642 <= r195643;
double r195645 = -r195642;
double r195646 = 1.5;
double r195647 = a;
double r195648 = c;
double r195649 = r195647 * r195648;
double r195650 = r195649 / r195642;
double r195651 = r195646 * r195650;
double r195652 = r195651 - r195642;
double r195653 = r195645 + r195652;
double r195654 = 3.0;
double r195655 = r195654 * r195647;
double r195656 = r195653 / r195655;
double r195657 = -5.843373275880085e-209;
bool r195658 = r195642 <= r195657;
double r195659 = r195642 * r195642;
double r195660 = r195655 * r195648;
double r195661 = r195659 - r195660;
double r195662 = sqrt(r195661);
double r195663 = r195662 - r195642;
double r195664 = r195663 / r195654;
double r195665 = r195664 / r195647;
double r195666 = 3.0585377634424225e+64;
bool r195667 = r195642 <= r195666;
double r195668 = cbrt(r195654);
double r195669 = r195668 * r195668;
double r195670 = r195654 / r195669;
double r195671 = r195645 - r195662;
double r195672 = r195648 / r195671;
double r195673 = r195647 * r195672;
double r195674 = r195673 / r195668;
double r195675 = r195674 / r195647;
double r195676 = r195670 * r195675;
double r195677 = 6.107031321392313e+157;
bool r195678 = r195642 <= r195677;
double r195679 = r195672 / r195668;
double r195680 = r195679 / r195647;
double r195681 = r195647 * r195680;
double r195682 = r195670 * r195681;
double r195683 = r195642 - r195651;
double r195684 = r195645 - r195683;
double r195685 = r195660 / r195684;
double r195686 = r195685 / r195655;
double r195687 = r195678 ? r195682 : r195686;
double r195688 = r195667 ? r195676 : r195687;
double r195689 = r195658 ? r195665 : r195688;
double r195690 = r195644 ? r195656 : r195689;
return r195690;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -7.949039921111462e+114Initial program 50.8
Taylor expanded around -inf 10.8
if -7.949039921111462e+114 < b < -5.843373275880085e-209Initial program 8.3
Simplified8.3
if -5.843373275880085e-209 < b < 3.0585377634424225e+64Initial program 27.9
rmApplied flip-+28.0
Simplified16.8
rmApplied associate-/r*16.9
Simplified17.0
rmApplied *-un-lft-identity17.0
Applied add-cube-cbrt17.0
Applied *-un-lft-identity17.0
Applied times-frac16.9
Applied times-frac16.9
Applied times-frac17.0
Simplified17.0
rmApplied *-un-lft-identity17.0
Applied times-frac14.7
Simplified14.7
if 3.0585377634424225e+64 < b < 6.107031321392313e+157Initial program 46.4
rmApplied flip-+46.4
Simplified14.1
rmApplied associate-/r*14.1
Simplified14.1
rmApplied *-un-lft-identity14.1
Applied add-cube-cbrt14.1
Applied *-un-lft-identity14.1
Applied times-frac14.1
Applied times-frac14.1
Applied times-frac14.1
Simplified14.1
rmApplied *-un-lft-identity14.1
Applied *-un-lft-identity14.1
Applied cbrt-prod14.1
Applied *-un-lft-identity14.1
Applied times-frac13.9
Applied times-frac13.9
Applied times-frac16.8
Simplified16.8
if 6.107031321392313e+157 < b Initial program 64.0
rmApplied flip-+64.0
Simplified37.2
Taylor expanded around inf 13.9
Final simplification12.6
herbie shell --seed 2019323
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))