\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.142518093006308:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(\left(-b \cdot b\right), b, \left(b \cdot \left(b \cdot b\right)\right)\right) + \mathsf{fma}\left(\left(\mathsf{fma}\left(b, b, \left(\left(a \cdot -3\right) \cdot c\right)\right)\right), \left(\sqrt{\mathsf{fma}\left(b, b, \left(\left(a \cdot -3\right) \cdot c\right)\right)}\right), \left(b \cdot \left(-b \cdot b\right)\right)\right)}{\mathsf{fma}\left(b, \left(b + \sqrt{\mathsf{fma}\left(b, b, \left(\left(a \cdot -3\right) \cdot c\right)\right)}\right), \left(\mathsf{fma}\left(b, b, \left(\left(a \cdot -3\right) \cdot c\right)\right)\right)\right)}}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{a} \cdot \frac{1}{\mathsf{fma}\left(b, \left(\sqrt{\mathsf{fma}\left(b, b, \left(\left(a \cdot c\right) \cdot -3\right)\right)} + b\right), \left(\mathsf{fma}\left(b, b, \left(\left(a \cdot c\right) \cdot -3\right)\right)\right)\right)}\right) \cdot \frac{\mathsf{fma}\left(\left(\frac{\left(a \cdot c\right) \cdot \left(a \cdot c\right)}{b}\right), \frac{27}{8}, \left(\left(b \cdot \left(a \cdot c\right)\right) \cdot \frac{-9}{2}\right)\right)}{3}\\
\end{array}double f(double a, double b, double c, double __attribute__((unused)) d) {
double r2862308 = b;
double r2862309 = -r2862308;
double r2862310 = r2862308 * r2862308;
double r2862311 = 3.0;
double r2862312 = a;
double r2862313 = r2862311 * r2862312;
double r2862314 = c;
double r2862315 = r2862313 * r2862314;
double r2862316 = r2862310 - r2862315;
double r2862317 = sqrt(r2862316);
double r2862318 = r2862309 + r2862317;
double r2862319 = r2862318 / r2862313;
return r2862319;
}
double f(double a, double b, double c, double __attribute__((unused)) d) {
double r2862320 = b;
double r2862321 = 4.142518093006308;
bool r2862322 = r2862320 <= r2862321;
double r2862323 = r2862320 * r2862320;
double r2862324 = -r2862323;
double r2862325 = r2862320 * r2862323;
double r2862326 = fma(r2862324, r2862320, r2862325);
double r2862327 = a;
double r2862328 = -3.0;
double r2862329 = r2862327 * r2862328;
double r2862330 = c;
double r2862331 = r2862329 * r2862330;
double r2862332 = fma(r2862320, r2862320, r2862331);
double r2862333 = sqrt(r2862332);
double r2862334 = r2862320 * r2862324;
double r2862335 = fma(r2862332, r2862333, r2862334);
double r2862336 = r2862326 + r2862335;
double r2862337 = r2862320 + r2862333;
double r2862338 = fma(r2862320, r2862337, r2862332);
double r2862339 = r2862336 / r2862338;
double r2862340 = 3.0;
double r2862341 = r2862340 * r2862327;
double r2862342 = r2862339 / r2862341;
double r2862343 = 1.0;
double r2862344 = r2862343 / r2862327;
double r2862345 = r2862327 * r2862330;
double r2862346 = r2862345 * r2862328;
double r2862347 = fma(r2862320, r2862320, r2862346);
double r2862348 = sqrt(r2862347);
double r2862349 = r2862348 + r2862320;
double r2862350 = fma(r2862320, r2862349, r2862347);
double r2862351 = r2862343 / r2862350;
double r2862352 = r2862344 * r2862351;
double r2862353 = r2862345 * r2862345;
double r2862354 = r2862353 / r2862320;
double r2862355 = 3.375;
double r2862356 = r2862320 * r2862345;
double r2862357 = -4.5;
double r2862358 = r2862356 * r2862357;
double r2862359 = fma(r2862354, r2862355, r2862358);
double r2862360 = r2862359 / r2862340;
double r2862361 = r2862352 * r2862360;
double r2862362 = r2862322 ? r2862342 : r2862361;
return r2862362;
}



Bits error versus a



Bits error versus b



Bits error versus c



Bits error versus d
if b < 4.142518093006308Initial program 13.0
Simplified13.0
rmApplied flip3--13.1
Simplified12.5
Simplified12.5
rmApplied prod-diff12.2
if 4.142518093006308 < b Initial program 32.8
Simplified32.8
rmApplied flip3--32.8
Simplified32.2
Simplified32.2
Taylor expanded around inf 8.4
Simplified8.4
rmApplied div-inv8.4
Applied times-frac8.4
Simplified8.4
rmApplied div-inv8.4
Final simplification9.2
herbie shell --seed 2019129 +o rules:numerics
(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)))