\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.043841200868094369004988674215167877153 \cdot 10^{150}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.6666666666666666296592325124947819858789 \cdot \frac{b}{a}\\
\mathbf{elif}\;b \le 4.62812776285933976007871171352100695172 \cdot 10^{-217}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\\
\mathbf{elif}\;b \le 1.223338752466640343589574731486746446224 \cdot 10^{97}:\\
\;\;\;\;1 \cdot \left(\frac{\frac{a}{\sqrt[3]{a}}}{\sqrt[3]{a}} \cdot \frac{\frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}{\sqrt[3]{a}}\right)\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r115498 = b;
double r115499 = -r115498;
double r115500 = r115498 * r115498;
double r115501 = 3.0;
double r115502 = a;
double r115503 = r115501 * r115502;
double r115504 = c;
double r115505 = r115503 * r115504;
double r115506 = r115500 - r115505;
double r115507 = sqrt(r115506);
double r115508 = r115499 + r115507;
double r115509 = r115508 / r115503;
return r115509;
}
double f(double a, double b, double c) {
double r115510 = b;
double r115511 = -1.0438412008680944e+150;
bool r115512 = r115510 <= r115511;
double r115513 = 0.5;
double r115514 = c;
double r115515 = r115514 / r115510;
double r115516 = r115513 * r115515;
double r115517 = 0.6666666666666666;
double r115518 = a;
double r115519 = r115510 / r115518;
double r115520 = r115517 * r115519;
double r115521 = r115516 - r115520;
double r115522 = 4.62812776285934e-217;
bool r115523 = r115510 <= r115522;
double r115524 = -r115510;
double r115525 = r115510 * r115510;
double r115526 = 3.0;
double r115527 = r115526 * r115518;
double r115528 = r115527 * r115514;
double r115529 = r115525 - r115528;
double r115530 = sqrt(r115529);
double r115531 = r115524 + r115530;
double r115532 = r115531 / r115527;
double r115533 = 1.2233387524666403e+97;
bool r115534 = r115510 <= r115533;
double r115535 = 1.0;
double r115536 = cbrt(r115518);
double r115537 = r115518 / r115536;
double r115538 = r115537 / r115536;
double r115539 = r115524 - r115530;
double r115540 = r115514 / r115539;
double r115541 = r115540 / r115536;
double r115542 = r115538 * r115541;
double r115543 = r115535 * r115542;
double r115544 = -0.5;
double r115545 = r115544 * r115515;
double r115546 = r115534 ? r115543 : r115545;
double r115547 = r115523 ? r115532 : r115546;
double r115548 = r115512 ? r115521 : r115547;
return r115548;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.0438412008680944e+150Initial program 62.0
Taylor expanded around -inf 2.6
if -1.0438412008680944e+150 < b < 4.62812776285934e-217Initial program 9.3
if 4.62812776285934e-217 < b < 1.2233387524666403e+97Initial program 35.9
rmApplied flip-+35.9
Simplified17.2
rmApplied associate-/r*17.2
Simplified17.2
rmApplied *-un-lft-identity17.2
Applied times-frac17.1
Applied times-frac17.1
Simplified17.1
rmApplied add-cube-cbrt17.8
Applied *-un-lft-identity17.8
Applied times-frac14.9
Applied times-frac12.7
Simplified12.7
if 1.2233387524666403e+97 < b Initial program 59.1
Taylor expanded around inf 2.6
Final simplification7.8
herbie shell --seed 2019297
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))