\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 -7.645130993934684 \cdot 10^{+108}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{c}{b} - \frac{b}{a} \cdot \frac{2}{3}\\
\mathbf{elif}\;b \le 1.7070929733814247 \cdot 10^{-109}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a} - \frac{b}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r4430102 = b;
double r4430103 = -r4430102;
double r4430104 = r4430102 * r4430102;
double r4430105 = 3.0;
double r4430106 = a;
double r4430107 = r4430105 * r4430106;
double r4430108 = c;
double r4430109 = r4430107 * r4430108;
double r4430110 = r4430104 - r4430109;
double r4430111 = sqrt(r4430110);
double r4430112 = r4430103 + r4430111;
double r4430113 = r4430112 / r4430107;
return r4430113;
}
double f(double a, double b, double c) {
double r4430114 = b;
double r4430115 = -7.645130993934684e+108;
bool r4430116 = r4430114 <= r4430115;
double r4430117 = 0.5;
double r4430118 = c;
double r4430119 = r4430118 / r4430114;
double r4430120 = r4430117 * r4430119;
double r4430121 = a;
double r4430122 = r4430114 / r4430121;
double r4430123 = 0.6666666666666666;
double r4430124 = r4430122 * r4430123;
double r4430125 = r4430120 - r4430124;
double r4430126 = 1.7070929733814247e-109;
bool r4430127 = r4430114 <= r4430126;
double r4430128 = r4430114 * r4430114;
double r4430129 = 3.0;
double r4430130 = r4430129 * r4430121;
double r4430131 = r4430130 * r4430118;
double r4430132 = r4430128 - r4430131;
double r4430133 = sqrt(r4430132);
double r4430134 = r4430133 / r4430130;
double r4430135 = r4430114 / r4430130;
double r4430136 = r4430134 - r4430135;
double r4430137 = -0.5;
double r4430138 = r4430137 * r4430119;
double r4430139 = r4430127 ? r4430136 : r4430138;
double r4430140 = r4430116 ? r4430125 : r4430139;
return r4430140;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -7.645130993934684e+108Initial program 46.7
Simplified46.7
Taylor expanded around -inf 4.0
if -7.645130993934684e+108 < b < 1.7070929733814247e-109Initial program 11.5
Simplified11.5
rmApplied div-sub11.5
if 1.7070929733814247e-109 < b Initial program 51.0
Simplified51.0
Taylor expanded around inf 10.8
Final simplification10.1
herbie shell --seed 2019138
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))