\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.205465986680909011843083811411405971894 \cdot 10^{135}:\\
\;\;\;\;\frac{1.5 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{3 \cdot a}\\
\mathbf{elif}\;b \le -2.06033220120780029089998808218980405169 \cdot 10^{-258}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3}}{a}\\
\mathbf{elif}\;b \le 9.437505947861471790660874606217630038564 \cdot 10^{134}:\\
\;\;\;\;\frac{\frac{\frac{-\left(3 \cdot a\right) \cdot c}{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} + b}}{3}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-1.5 \cdot \frac{a \cdot c}{b}}{3}}{a}\\
\end{array}double f(double a, double b, double c) {
double r81389 = b;
double r81390 = -r81389;
double r81391 = r81389 * r81389;
double r81392 = 3.0;
double r81393 = a;
double r81394 = r81392 * r81393;
double r81395 = c;
double r81396 = r81394 * r81395;
double r81397 = r81391 - r81396;
double r81398 = sqrt(r81397);
double r81399 = r81390 + r81398;
double r81400 = r81399 / r81394;
return r81400;
}
double f(double a, double b, double c) {
double r81401 = b;
double r81402 = -2.205465986680909e+135;
bool r81403 = r81401 <= r81402;
double r81404 = 1.5;
double r81405 = a;
double r81406 = c;
double r81407 = r81405 * r81406;
double r81408 = r81407 / r81401;
double r81409 = r81404 * r81408;
double r81410 = 2.0;
double r81411 = r81410 * r81401;
double r81412 = r81409 - r81411;
double r81413 = 3.0;
double r81414 = r81413 * r81405;
double r81415 = r81412 / r81414;
double r81416 = -2.0603322012078003e-258;
bool r81417 = r81401 <= r81416;
double r81418 = r81401 * r81401;
double r81419 = r81414 * r81406;
double r81420 = r81418 - r81419;
double r81421 = sqrt(r81420);
double r81422 = r81421 - r81401;
double r81423 = r81422 / r81413;
double r81424 = r81423 / r81405;
double r81425 = 9.437505947861472e+134;
bool r81426 = r81401 <= r81425;
double r81427 = -r81419;
double r81428 = r81421 + r81401;
double r81429 = r81427 / r81428;
double r81430 = r81429 / r81413;
double r81431 = r81430 / r81405;
double r81432 = -1.5;
double r81433 = r81432 * r81408;
double r81434 = r81433 / r81413;
double r81435 = r81434 / r81405;
double r81436 = r81426 ? r81431 : r81435;
double r81437 = r81417 ? r81424 : r81436;
double r81438 = r81403 ? r81415 : r81437;
return r81438;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.205465986680909e+135Initial program 56.7
Taylor expanded around -inf 11.3
if -2.205465986680909e+135 < b < -2.0603322012078003e-258Initial program 8.0
Simplified8.0
if -2.0603322012078003e-258 < b < 9.437505947861472e+134Initial program 32.3
Simplified32.3
rmApplied flip--32.3
Simplified16.1
if 9.437505947861472e+134 < b Initial program 62.0
Simplified62.0
Taylor expanded around inf 15.2
Final simplification12.9
herbie shell --seed 2019303
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))