\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.3376190644449892 \cdot 10^{+154}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{a \cdot c}{b}, \frac{3}{2}, b \cdot -2\right)}{a \cdot 3}\\
\mathbf{elif}\;b \le 6.235673785124529 \cdot 10^{-73}:\\
\;\;\;\;\frac{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot c\right) \cdot -3\right)} + \left(-b\right)}{a \cdot 3}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-3}{2} \cdot \frac{a \cdot c}{b}}{a \cdot 3}\\
\end{array}double f(double a, double b, double c) {
double r2382094 = b;
double r2382095 = -r2382094;
double r2382096 = r2382094 * r2382094;
double r2382097 = 3.0;
double r2382098 = a;
double r2382099 = r2382097 * r2382098;
double r2382100 = c;
double r2382101 = r2382099 * r2382100;
double r2382102 = r2382096 - r2382101;
double r2382103 = sqrt(r2382102);
double r2382104 = r2382095 + r2382103;
double r2382105 = r2382104 / r2382099;
return r2382105;
}
double f(double a, double b, double c) {
double r2382106 = b;
double r2382107 = -1.3376190644449892e+154;
bool r2382108 = r2382106 <= r2382107;
double r2382109 = a;
double r2382110 = c;
double r2382111 = r2382109 * r2382110;
double r2382112 = r2382111 / r2382106;
double r2382113 = 1.5;
double r2382114 = -2.0;
double r2382115 = r2382106 * r2382114;
double r2382116 = fma(r2382112, r2382113, r2382115);
double r2382117 = 3.0;
double r2382118 = r2382109 * r2382117;
double r2382119 = r2382116 / r2382118;
double r2382120 = 6.235673785124529e-73;
bool r2382121 = r2382106 <= r2382120;
double r2382122 = -3.0;
double r2382123 = r2382111 * r2382122;
double r2382124 = fma(r2382106, r2382106, r2382123);
double r2382125 = sqrt(r2382124);
double r2382126 = -r2382106;
double r2382127 = r2382125 + r2382126;
double r2382128 = r2382127 / r2382118;
double r2382129 = -1.5;
double r2382130 = r2382129 * r2382112;
double r2382131 = r2382130 / r2382118;
double r2382132 = r2382121 ? r2382128 : r2382131;
double r2382133 = r2382108 ? r2382119 : r2382132;
return r2382133;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.3376190644449892e+154Initial program 60.9
Taylor expanded around -inf 10.6
Simplified10.6
if -1.3376190644449892e+154 < b < 6.235673785124529e-73Initial program 12.0
Taylor expanded around inf 12.1
Simplified12.1
if 6.235673785124529e-73 < b Initial program 52.3
Taylor expanded around inf 52.3
Simplified52.3
Taylor expanded around inf 19.7
Final simplification14.8
herbie shell --seed 2019152 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))