\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.615257373542238721197930661559276546696 \cdot 10^{153}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.6666666666666666296592325124947819858789 \cdot \frac{b}{a}\\
\mathbf{elif}\;b \le 1.388070047225937856958905133202240499626 \cdot 10^{-143}:\\
\;\;\;\;\frac{1}{\frac{3 \cdot a}{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}}\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r119590 = b;
double r119591 = -r119590;
double r119592 = r119590 * r119590;
double r119593 = 3.0;
double r119594 = a;
double r119595 = r119593 * r119594;
double r119596 = c;
double r119597 = r119595 * r119596;
double r119598 = r119592 - r119597;
double r119599 = sqrt(r119598);
double r119600 = r119591 + r119599;
double r119601 = r119600 / r119595;
return r119601;
}
double f(double a, double b, double c) {
double r119602 = b;
double r119603 = -2.6152573735422387e+153;
bool r119604 = r119602 <= r119603;
double r119605 = 0.5;
double r119606 = c;
double r119607 = r119606 / r119602;
double r119608 = r119605 * r119607;
double r119609 = 0.6666666666666666;
double r119610 = a;
double r119611 = r119602 / r119610;
double r119612 = r119609 * r119611;
double r119613 = r119608 - r119612;
double r119614 = 1.3880700472259379e-143;
bool r119615 = r119602 <= r119614;
double r119616 = 1.0;
double r119617 = 3.0;
double r119618 = r119617 * r119610;
double r119619 = r119602 * r119602;
double r119620 = r119618 * r119606;
double r119621 = r119619 - r119620;
double r119622 = sqrt(r119621);
double r119623 = r119622 - r119602;
double r119624 = r119618 / r119623;
double r119625 = r119616 / r119624;
double r119626 = -0.5;
double r119627 = r119626 * r119607;
double r119628 = r119615 ? r119625 : r119627;
double r119629 = r119604 ? r119613 : r119628;
return r119629;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.6152573735422387e+153Initial program 63.8
Taylor expanded around -inf 2.6
if -2.6152573735422387e+153 < b < 1.3880700472259379e-143Initial program 11.6
rmApplied clear-num11.6
Simplified11.6
if 1.3880700472259379e-143 < b Initial program 50.2
Taylor expanded around inf 12.6
Final simplification11.1
herbie shell --seed 2019351 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))