\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.898678560179045 \cdot 10^{+152}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{3}{2}, \frac{a}{b} \cdot c, b \cdot -2\right)}{3 \cdot a}\\
\mathbf{elif}\;b \le 1.487621333916267 \cdot 10^{+25}:\\
\;\;\;\;\frac{\sqrt{\mathsf{fma}\left(b, b, \left(c \cdot a\right) \cdot -3\right)} + \left(-b\right)}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-3}{2} \cdot \frac{c \cdot a}{b}}{3 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r3727220 = b;
double r3727221 = -r3727220;
double r3727222 = r3727220 * r3727220;
double r3727223 = 3.0;
double r3727224 = a;
double r3727225 = r3727223 * r3727224;
double r3727226 = c;
double r3727227 = r3727225 * r3727226;
double r3727228 = r3727222 - r3727227;
double r3727229 = sqrt(r3727228);
double r3727230 = r3727221 + r3727229;
double r3727231 = r3727230 / r3727225;
return r3727231;
}
double f(double a, double b, double c) {
double r3727232 = b;
double r3727233 = -4.898678560179045e+152;
bool r3727234 = r3727232 <= r3727233;
double r3727235 = 1.5;
double r3727236 = a;
double r3727237 = r3727236 / r3727232;
double r3727238 = c;
double r3727239 = r3727237 * r3727238;
double r3727240 = -2.0;
double r3727241 = r3727232 * r3727240;
double r3727242 = fma(r3727235, r3727239, r3727241);
double r3727243 = 3.0;
double r3727244 = r3727243 * r3727236;
double r3727245 = r3727242 / r3727244;
double r3727246 = 1.487621333916267e+25;
bool r3727247 = r3727232 <= r3727246;
double r3727248 = r3727238 * r3727236;
double r3727249 = -3.0;
double r3727250 = r3727248 * r3727249;
double r3727251 = fma(r3727232, r3727232, r3727250);
double r3727252 = sqrt(r3727251);
double r3727253 = -r3727232;
double r3727254 = r3727252 + r3727253;
double r3727255 = r3727254 / r3727244;
double r3727256 = -1.5;
double r3727257 = r3727248 / r3727232;
double r3727258 = r3727256 * r3727257;
double r3727259 = r3727258 / r3727244;
double r3727260 = r3727247 ? r3727255 : r3727259;
double r3727261 = r3727234 ? r3727245 : r3727260;
return r3727261;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -4.898678560179045e+152Initial program 60.5
Taylor expanded around -inf 9.6
Simplified2.0
if -4.898678560179045e+152 < b < 1.487621333916267e+25Initial program 16.2
Taylor expanded around -inf 16.3
Simplified16.3
if 1.487621333916267e+25 < b Initial program 55.6
Taylor expanded around -inf 55.6
Simplified55.6
Taylor expanded around inf 16.1
Final simplification14.6
herbie shell --seed 2019144 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))