\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 -8.524209272776799353303041221819293619772 \cdot 10^{66}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.6666666666666666296592325124947819858789 \cdot \frac{b}{a}\\
\mathbf{elif}\;b \le 1.021331828433541113521774124176081265272 \cdot 10^{-114}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r93563 = b;
double r93564 = -r93563;
double r93565 = r93563 * r93563;
double r93566 = 3.0;
double r93567 = a;
double r93568 = r93566 * r93567;
double r93569 = c;
double r93570 = r93568 * r93569;
double r93571 = r93565 - r93570;
double r93572 = sqrt(r93571);
double r93573 = r93564 + r93572;
double r93574 = r93573 / r93568;
return r93574;
}
double f(double a, double b, double c) {
double r93575 = b;
double r93576 = -8.5242092727768e+66;
bool r93577 = r93575 <= r93576;
double r93578 = 0.5;
double r93579 = c;
double r93580 = r93579 / r93575;
double r93581 = r93578 * r93580;
double r93582 = 0.6666666666666666;
double r93583 = a;
double r93584 = r93575 / r93583;
double r93585 = r93582 * r93584;
double r93586 = r93581 - r93585;
double r93587 = 1.0213318284335411e-114;
bool r93588 = r93575 <= r93587;
double r93589 = -r93575;
double r93590 = r93575 * r93575;
double r93591 = 3.0;
double r93592 = r93591 * r93583;
double r93593 = r93592 * r93579;
double r93594 = r93590 - r93593;
double r93595 = sqrt(r93594);
double r93596 = r93589 + r93595;
double r93597 = r93596 / r93592;
double r93598 = -0.5;
double r93599 = r93598 * r93580;
double r93600 = r93588 ? r93597 : r93599;
double r93601 = r93577 ? r93586 : r93600;
return r93601;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -8.5242092727768e+66Initial program 40.5
Taylor expanded around -inf 5.1
if -8.5242092727768e+66 < b < 1.0213318284335411e-114Initial program 12.2
if 1.0213318284335411e-114 < b Initial program 51.3
Taylor expanded around inf 11.3
Final simplification10.5
herbie shell --seed 2019298
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))