\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 -4.024746736984847 \cdot 10^{+40}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{c}{b} - \frac{b}{a} \cdot \frac{2}{3}\\
\mathbf{elif}\;b \le 1.9824764136407443 \cdot 10^{-61}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r4643598 = b;
double r4643599 = -r4643598;
double r4643600 = r4643598 * r4643598;
double r4643601 = 3.0;
double r4643602 = a;
double r4643603 = r4643601 * r4643602;
double r4643604 = c;
double r4643605 = r4643603 * r4643604;
double r4643606 = r4643600 - r4643605;
double r4643607 = sqrt(r4643606);
double r4643608 = r4643599 + r4643607;
double r4643609 = r4643608 / r4643603;
return r4643609;
}
double f(double a, double b, double c) {
double r4643610 = b;
double r4643611 = -4.024746736984847e+40;
bool r4643612 = r4643610 <= r4643611;
double r4643613 = 0.5;
double r4643614 = c;
double r4643615 = r4643614 / r4643610;
double r4643616 = r4643613 * r4643615;
double r4643617 = a;
double r4643618 = r4643610 / r4643617;
double r4643619 = 0.6666666666666666;
double r4643620 = r4643618 * r4643619;
double r4643621 = r4643616 - r4643620;
double r4643622 = 1.9824764136407443e-61;
bool r4643623 = r4643610 <= r4643622;
double r4643624 = r4643610 * r4643610;
double r4643625 = 3.0;
double r4643626 = r4643625 * r4643617;
double r4643627 = r4643626 * r4643614;
double r4643628 = r4643624 - r4643627;
double r4643629 = sqrt(r4643628);
double r4643630 = r4643629 - r4643610;
double r4643631 = r4643630 / r4643625;
double r4643632 = r4643631 / r4643617;
double r4643633 = -0.5;
double r4643634 = r4643633 * r4643615;
double r4643635 = r4643623 ? r4643632 : r4643634;
double r4643636 = r4643612 ? r4643621 : r4643635;
return r4643636;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.024746736984847e+40Initial program 36.1
Simplified36.1
Taylor expanded around -inf 6.1
if -4.024746736984847e+40 < b < 1.9824764136407443e-61Initial program 14.4
Simplified14.4
rmApplied associate-/r*14.4
if 1.9824764136407443e-61 < b Initial program 52.8
Simplified52.8
Taylor expanded around inf 8.3
Final simplification10.3
herbie shell --seed 2019146
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))