\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 242.4632640034452:\\
\;\;\;\;\frac{\frac{\left(\left(a \cdot c\right) \cdot -3 + b \cdot b\right) \cdot \sqrt{\left(a \cdot c\right) \cdot -3 + b \cdot b} - b \cdot \left(b \cdot b\right)}{\left(\left(a \cdot c\right) \cdot -3 + b \cdot b\right) + \left(b \cdot b + b \cdot \sqrt{\left(a \cdot c\right) \cdot -3 + b \cdot b}\right)}}{a \cdot 3}\\
\mathbf{elif}\;b \le 6425.461402364593:\\
\;\;\;\;\sqrt[3]{\frac{-1}{8} \cdot \frac{\frac{a \cdot c}{b} \cdot \frac{a \cdot c}{b}}{\frac{a \cdot \left(a \cdot a\right)}{\frac{a \cdot c}{b}}}}\\
\mathbf{elif}\;b \le 13378.421715408645:\\
\;\;\;\;\frac{\sqrt{b \cdot b - c \cdot \left(a \cdot 3\right)} \cdot \sqrt{b \cdot b - c \cdot \left(a \cdot 3\right)} - b \cdot b}{\left(\sqrt{b \cdot b - c \cdot \left(a \cdot 3\right)} + b\right) \cdot \left(a \cdot 3\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c, double __attribute__((unused)) d) {
double r1213212 = b;
double r1213213 = -r1213212;
double r1213214 = r1213212 * r1213212;
double r1213215 = 3.0;
double r1213216 = a;
double r1213217 = r1213215 * r1213216;
double r1213218 = c;
double r1213219 = r1213217 * r1213218;
double r1213220 = r1213214 - r1213219;
double r1213221 = sqrt(r1213220);
double r1213222 = r1213213 + r1213221;
double r1213223 = r1213222 / r1213217;
return r1213223;
}
double f(double a, double b, double c, double __attribute__((unused)) d) {
double r1213224 = b;
double r1213225 = 242.4632640034452;
bool r1213226 = r1213224 <= r1213225;
double r1213227 = a;
double r1213228 = c;
double r1213229 = r1213227 * r1213228;
double r1213230 = -3.0;
double r1213231 = r1213229 * r1213230;
double r1213232 = r1213224 * r1213224;
double r1213233 = r1213231 + r1213232;
double r1213234 = sqrt(r1213233);
double r1213235 = r1213233 * r1213234;
double r1213236 = r1213224 * r1213232;
double r1213237 = r1213235 - r1213236;
double r1213238 = r1213224 * r1213234;
double r1213239 = r1213232 + r1213238;
double r1213240 = r1213233 + r1213239;
double r1213241 = r1213237 / r1213240;
double r1213242 = 3.0;
double r1213243 = r1213227 * r1213242;
double r1213244 = r1213241 / r1213243;
double r1213245 = 6425.461402364593;
bool r1213246 = r1213224 <= r1213245;
double r1213247 = -0.125;
double r1213248 = r1213229 / r1213224;
double r1213249 = r1213248 * r1213248;
double r1213250 = r1213227 * r1213227;
double r1213251 = r1213227 * r1213250;
double r1213252 = r1213251 / r1213248;
double r1213253 = r1213249 / r1213252;
double r1213254 = r1213247 * r1213253;
double r1213255 = cbrt(r1213254);
double r1213256 = 13378.421715408645;
bool r1213257 = r1213224 <= r1213256;
double r1213258 = r1213228 * r1213243;
double r1213259 = r1213232 - r1213258;
double r1213260 = sqrt(r1213259);
double r1213261 = r1213260 * r1213260;
double r1213262 = r1213261 - r1213232;
double r1213263 = r1213260 + r1213224;
double r1213264 = r1213263 * r1213243;
double r1213265 = r1213262 / r1213264;
double r1213266 = -0.5;
double r1213267 = r1213228 / r1213224;
double r1213268 = r1213266 * r1213267;
double r1213269 = r1213257 ? r1213265 : r1213268;
double r1213270 = r1213246 ? r1213255 : r1213269;
double r1213271 = r1213226 ? r1213244 : r1213270;
return r1213271;
}



Bits error versus a



Bits error versus b



Bits error versus c



Bits error versus d
Results
if b < 242.4632640034452Initial program 16.1
Simplified16.1
rmApplied flip3--16.2
Simplified15.5
Simplified15.5
if 242.4632640034452 < b < 6425.461402364593Initial program 26.0
Simplified26.0
Taylor expanded around inf 24.4
rmApplied add-cbrt-cube24.4
Applied add-cbrt-cube24.4
Applied cbrt-unprod24.4
Applied add-cbrt-cube24.4
Applied add-cbrt-cube24.4
Applied add-cbrt-cube24.4
Applied cbrt-unprod24.4
Applied cbrt-undiv24.4
Applied add-cbrt-cube24.4
Applied cbrt-unprod24.4
Applied cbrt-undiv24.4
Simplified24.4
if 6425.461402364593 < b < 13378.421715408645Initial program 29.4
Simplified29.4
rmApplied flip--29.3
Applied associate-/l/29.3
if 13378.421715408645 < b Initial program 38.6
Simplified38.6
Taylor expanded around inf 14.5
Taylor expanded around -inf 14.3
Final simplification16.7
herbie shell --seed 2019128
(FPCore (a b c d)
:name "Cubic critical, narrow range"
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))