\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 -2.2724541866372811 \cdot 10^{165}:\\
\;\;\;\;\frac{\left(-b\right) + \left(1.5 \cdot \frac{a \cdot c}{b} - b\right)}{3 \cdot a}\\
\mathbf{elif}\;b \le -5.26967329570505124 \cdot 10^{-298}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{\mathsf{fma}\left(b, b, -\left(\sqrt[3]{c \cdot \left(3 \cdot a\right)} \cdot \left(\sqrt[3]{3} \cdot \sqrt[3]{a \cdot c}\right)\right) \cdot \sqrt[3]{c \cdot \left(3 \cdot a\right)}\right)}}{3 \cdot a}\\
\mathbf{elif}\;b \le 1.0331115085790278 \cdot 10^{154}:\\
\;\;\;\;\frac{\frac{c \cdot \left(3 \cdot a\right)}{\left(-b\right) - \sqrt{\mathsf{fma}\left(b, b, -c \cdot \left(3 \cdot a\right)\right)}}}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1.5 \cdot \frac{a \cdot c}{b}}{3 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r163217 = b;
double r163218 = -r163217;
double r163219 = r163217 * r163217;
double r163220 = 3.0;
double r163221 = a;
double r163222 = r163220 * r163221;
double r163223 = c;
double r163224 = r163222 * r163223;
double r163225 = r163219 - r163224;
double r163226 = sqrt(r163225);
double r163227 = r163218 + r163226;
double r163228 = r163227 / r163222;
return r163228;
}
double f(double a, double b, double c) {
double r163229 = b;
double r163230 = -2.272454186637281e+165;
bool r163231 = r163229 <= r163230;
double r163232 = -r163229;
double r163233 = 1.5;
double r163234 = a;
double r163235 = c;
double r163236 = r163234 * r163235;
double r163237 = r163236 / r163229;
double r163238 = r163233 * r163237;
double r163239 = r163238 - r163229;
double r163240 = r163232 + r163239;
double r163241 = 3.0;
double r163242 = r163241 * r163234;
double r163243 = r163240 / r163242;
double r163244 = -5.269673295705051e-298;
bool r163245 = r163229 <= r163244;
double r163246 = r163235 * r163242;
double r163247 = cbrt(r163246);
double r163248 = cbrt(r163241);
double r163249 = cbrt(r163236);
double r163250 = r163248 * r163249;
double r163251 = r163247 * r163250;
double r163252 = r163251 * r163247;
double r163253 = -r163252;
double r163254 = fma(r163229, r163229, r163253);
double r163255 = sqrt(r163254);
double r163256 = r163232 + r163255;
double r163257 = r163256 / r163242;
double r163258 = 1.0331115085790278e+154;
bool r163259 = r163229 <= r163258;
double r163260 = -r163246;
double r163261 = fma(r163229, r163229, r163260);
double r163262 = sqrt(r163261);
double r163263 = r163232 - r163262;
double r163264 = r163246 / r163263;
double r163265 = r163264 / r163242;
double r163266 = -1.5;
double r163267 = r163266 * r163237;
double r163268 = r163267 / r163242;
double r163269 = r163259 ? r163265 : r163268;
double r163270 = r163245 ? r163257 : r163269;
double r163271 = r163231 ? r163243 : r163270;
return r163271;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -2.272454186637281e+165Initial program 64.0
Taylor expanded around -inf 10.5
if -2.272454186637281e+165 < b < -5.269673295705051e-298Initial program 9.5
Taylor expanded around 0 9.5
Simplified9.5
rmApplied add-cube-cbrt9.7
Taylor expanded around 0 56.3
Simplified9.7
if -5.269673295705051e-298 < b < 1.0331115085790278e+154Initial program 33.9
Taylor expanded around 0 34.0
Simplified33.9
rmApplied flip-+33.9
Simplified16.3
if 1.0331115085790278e+154 < b Initial program 64.0
Taylor expanded around inf 14.5
Final simplification13.1
herbie shell --seed 2020047 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))