\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 -2.895414539362304645852221252977125330123 \cdot 10^{111}:\\
\;\;\;\;\frac{\left(-b\right) + \left(1.5 \cdot \frac{a \cdot c}{b} - b\right)}{3 \cdot a}\\
\mathbf{elif}\;b \le 1.698277525249925633382980747692482567317 \cdot 10^{-273}:\\
\;\;\;\;\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 9.536320284549619388810913795872221190386 \cdot 10^{133}:\\
\;\;\;\;3 \cdot \left(\frac{a}{\sqrt[3]{a} \cdot \sqrt[3]{a}} \cdot \frac{\frac{\frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}{3}}{\sqrt[3]{a}}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{3 \cdot \left(a \cdot c\right)}{\left(-b\right) - \left(b - 1.5 \cdot \frac{a \cdot c}{b}\right)}}{3}}{a}\\
\end{array}double f(double a, double b, double c) {
double r109514 = b;
double r109515 = -r109514;
double r109516 = r109514 * r109514;
double r109517 = 3.0;
double r109518 = a;
double r109519 = r109517 * r109518;
double r109520 = c;
double r109521 = r109519 * r109520;
double r109522 = r109516 - r109521;
double r109523 = sqrt(r109522);
double r109524 = r109515 + r109523;
double r109525 = r109524 / r109519;
return r109525;
}
double f(double a, double b, double c) {
double r109526 = b;
double r109527 = -2.8954145393623046e+111;
bool r109528 = r109526 <= r109527;
double r109529 = -r109526;
double r109530 = 1.5;
double r109531 = a;
double r109532 = c;
double r109533 = r109531 * r109532;
double r109534 = r109533 / r109526;
double r109535 = r109530 * r109534;
double r109536 = r109535 - r109526;
double r109537 = r109529 + r109536;
double r109538 = 3.0;
double r109539 = r109538 * r109531;
double r109540 = r109537 / r109539;
double r109541 = 1.6982775252499256e-273;
bool r109542 = r109526 <= r109541;
double r109543 = r109526 * r109526;
double r109544 = r109539 * r109532;
double r109545 = r109543 - r109544;
double r109546 = sqrt(r109545);
double r109547 = r109546 - r109526;
double r109548 = sqrt(r109547);
double r109549 = r109548 * r109548;
double r109550 = r109549 / r109539;
double r109551 = 9.53632028454962e+133;
bool r109552 = r109526 <= r109551;
double r109553 = cbrt(r109531);
double r109554 = r109553 * r109553;
double r109555 = r109531 / r109554;
double r109556 = r109529 - r109546;
double r109557 = r109532 / r109556;
double r109558 = r109557 / r109538;
double r109559 = r109558 / r109553;
double r109560 = r109555 * r109559;
double r109561 = r109538 * r109560;
double r109562 = r109538 * r109533;
double r109563 = r109526 - r109535;
double r109564 = r109529 - r109563;
double r109565 = r109562 / r109564;
double r109566 = r109565 / r109538;
double r109567 = r109566 / r109531;
double r109568 = r109552 ? r109561 : r109567;
double r109569 = r109542 ? r109550 : r109568;
double r109570 = r109528 ? r109540 : r109569;
return r109570;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.8954145393623046e+111Initial program 48.8
Taylor expanded around -inf 10.0
if -2.8954145393623046e+111 < b < 1.6982775252499256e-273Initial program 9.1
rmApplied add-sqr-sqrt9.3
Simplified9.3
Simplified9.3
if 1.6982775252499256e-273 < b < 9.53632028454962e+133Initial program 35.3
rmApplied flip-+35.3
Simplified16.8
rmApplied associate-/r*16.8
Simplified16.8
rmApplied *-un-lft-identity16.8
Applied *-un-lft-identity16.8
Applied *-un-lft-identity16.8
Applied times-frac16.7
Applied times-frac16.8
Applied times-frac16.8
Simplified16.8
rmApplied add-cube-cbrt17.4
Applied *-un-lft-identity17.4
Applied *-un-lft-identity17.4
Applied times-frac15.1
Applied times-frac15.1
Applied times-frac12.3
Simplified12.3
if 9.53632028454962e+133 < b Initial program 62.2
rmApplied flip-+62.2
Simplified35.9
rmApplied associate-/r*35.9
Simplified35.9
Taylor expanded around inf 15.4
Final simplification11.6
herbie shell --seed 2019326 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))