\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 -1.877074429265673 \cdot 10^{+148}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{a \cdot c}{b}, \frac{3}{2}, b \cdot -2\right)}{a \cdot 3}\\
\mathbf{elif}\;b \le 2.1188761372830013 \cdot 10^{-69}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)} - b}{3}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{a \cdot c}{b} \cdot \frac{-3}{2}}{a \cdot 3}\\
\end{array}double f(double a, double b, double c) {
double r4593187 = b;
double r4593188 = -r4593187;
double r4593189 = r4593187 * r4593187;
double r4593190 = 3.0;
double r4593191 = a;
double r4593192 = r4593190 * r4593191;
double r4593193 = c;
double r4593194 = r4593192 * r4593193;
double r4593195 = r4593189 - r4593194;
double r4593196 = sqrt(r4593195);
double r4593197 = r4593188 + r4593196;
double r4593198 = r4593197 / r4593192;
return r4593198;
}
double f(double a, double b, double c) {
double r4593199 = b;
double r4593200 = -1.877074429265673e+148;
bool r4593201 = r4593199 <= r4593200;
double r4593202 = a;
double r4593203 = c;
double r4593204 = r4593202 * r4593203;
double r4593205 = r4593204 / r4593199;
double r4593206 = 1.5;
double r4593207 = -2.0;
double r4593208 = r4593199 * r4593207;
double r4593209 = fma(r4593205, r4593206, r4593208);
double r4593210 = 3.0;
double r4593211 = r4593202 * r4593210;
double r4593212 = r4593209 / r4593211;
double r4593213 = 2.1188761372830013e-69;
bool r4593214 = r4593199 <= r4593213;
double r4593215 = -3.0;
double r4593216 = r4593199 * r4593199;
double r4593217 = fma(r4593215, r4593204, r4593216);
double r4593218 = sqrt(r4593217);
double r4593219 = r4593218 - r4593199;
double r4593220 = r4593219 / r4593210;
double r4593221 = r4593220 / r4593202;
double r4593222 = -1.5;
double r4593223 = r4593205 * r4593222;
double r4593224 = r4593223 / r4593211;
double r4593225 = r4593214 ? r4593221 : r4593224;
double r4593226 = r4593201 ? r4593212 : r4593225;
return r4593226;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.877074429265673e+148Initial program 58.6
Taylor expanded around -inf 11.5
Simplified11.5
if -1.877074429265673e+148 < b < 2.1188761372830013e-69Initial program 12.6
Simplified12.6
rmApplied associate-/r*12.6
if 2.1188761372830013e-69 < b Initial program 52.2
Taylor expanded around inf 19.6
Final simplification15.2
herbie shell --seed 2019142 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))