\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.644215926145536 \cdot 10^{+140}:\\
\;\;\;\;\frac{1}{\frac{3}{\mathsf{fma}\left(-2, b, \frac{\frac{3}{2} \cdot a}{\frac{b}{c}}\right)} \cdot a}\\
\mathbf{elif}\;b \le 6.867273651179479 \cdot 10^{-102}:\\
\;\;\;\;\left(\sqrt{b \cdot b - \left(a \cdot 3\right) \cdot c} + \left(-b\right)\right) \cdot \frac{1}{a \cdot 3}\\
\mathbf{elif}\;b \le 1.6037393836292316 \cdot 10^{+23}:\\
\;\;\;\;\frac{1}{\frac{3}{\frac{\mathsf{fma}\left(c, a \cdot -3, 0\right)}{b + \sqrt{\mathsf{fma}\left(b, b, c \cdot \left(a \cdot -3\right)\right)}}} \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\
\end{array}double f(double a, double b, double c) {
double r4450139 = b;
double r4450140 = -r4450139;
double r4450141 = r4450139 * r4450139;
double r4450142 = 3.0;
double r4450143 = a;
double r4450144 = r4450142 * r4450143;
double r4450145 = c;
double r4450146 = r4450144 * r4450145;
double r4450147 = r4450141 - r4450146;
double r4450148 = sqrt(r4450147);
double r4450149 = r4450140 + r4450148;
double r4450150 = r4450149 / r4450144;
return r4450150;
}
double f(double a, double b, double c) {
double r4450151 = b;
double r4450152 = -7.644215926145536e+140;
bool r4450153 = r4450151 <= r4450152;
double r4450154 = 1.0;
double r4450155 = 3.0;
double r4450156 = -2.0;
double r4450157 = 1.5;
double r4450158 = a;
double r4450159 = r4450157 * r4450158;
double r4450160 = c;
double r4450161 = r4450151 / r4450160;
double r4450162 = r4450159 / r4450161;
double r4450163 = fma(r4450156, r4450151, r4450162);
double r4450164 = r4450155 / r4450163;
double r4450165 = r4450164 * r4450158;
double r4450166 = r4450154 / r4450165;
double r4450167 = 6.867273651179479e-102;
bool r4450168 = r4450151 <= r4450167;
double r4450169 = r4450151 * r4450151;
double r4450170 = r4450158 * r4450155;
double r4450171 = r4450170 * r4450160;
double r4450172 = r4450169 - r4450171;
double r4450173 = sqrt(r4450172);
double r4450174 = -r4450151;
double r4450175 = r4450173 + r4450174;
double r4450176 = r4450154 / r4450170;
double r4450177 = r4450175 * r4450176;
double r4450178 = 1.6037393836292316e+23;
bool r4450179 = r4450151 <= r4450178;
double r4450180 = -3.0;
double r4450181 = r4450158 * r4450180;
double r4450182 = 0.0;
double r4450183 = fma(r4450160, r4450181, r4450182);
double r4450184 = r4450160 * r4450181;
double r4450185 = fma(r4450151, r4450151, r4450184);
double r4450186 = sqrt(r4450185);
double r4450187 = r4450151 + r4450186;
double r4450188 = r4450183 / r4450187;
double r4450189 = r4450155 / r4450188;
double r4450190 = r4450189 * r4450158;
double r4450191 = r4450154 / r4450190;
double r4450192 = r4450160 / r4450151;
double r4450193 = -0.5;
double r4450194 = r4450192 * r4450193;
double r4450195 = r4450179 ? r4450191 : r4450194;
double r4450196 = r4450168 ? r4450177 : r4450195;
double r4450197 = r4450153 ? r4450166 : r4450196;
return r4450197;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -7.644215926145536e+140Initial program 55.9
rmApplied clear-num55.9
Simplified55.9
Taylor expanded around -inf 10.3
Simplified2.1
if -7.644215926145536e+140 < b < 6.867273651179479e-102Initial program 11.6
rmApplied div-inv11.6
if 6.867273651179479e-102 < b < 1.6037393836292316e+23Initial program 39.0
rmApplied clear-num39.0
Simplified39.0
rmApplied flip--39.1
Simplified17.3
if 1.6037393836292316e+23 < b Initial program 55.6
Taylor expanded around inf 4.4
Final simplification8.7
herbie shell --seed 2019168 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))