\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.139975678520567663603045399522192354667 \cdot 10^{154}:\\
\;\;\;\;\frac{\frac{1.5 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{3}}{a}\\
\mathbf{elif}\;b \le -2.214640747245634010207767966958415488931 \cdot 10^{-234}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\\
\mathbf{elif}\;b \le 1.637981871922542116970186679587044653306 \cdot 10^{152}:\\
\;\;\;\;\frac{-1}{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} + b}{c} \cdot \frac{a}{a}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{-\left(3 \cdot a\right) \cdot c}{\left(b - 1.5 \cdot \frac{a \cdot c}{b}\right) + b}}{3}}{a}\\
\end{array}double f(double a, double b, double c) {
double r111345 = b;
double r111346 = -r111345;
double r111347 = r111345 * r111345;
double r111348 = 3.0;
double r111349 = a;
double r111350 = r111348 * r111349;
double r111351 = c;
double r111352 = r111350 * r111351;
double r111353 = r111347 - r111352;
double r111354 = sqrt(r111353);
double r111355 = r111346 + r111354;
double r111356 = r111355 / r111350;
return r111356;
}
double f(double a, double b, double c) {
double r111357 = b;
double r111358 = -1.1399756785205677e+154;
bool r111359 = r111357 <= r111358;
double r111360 = 1.5;
double r111361 = a;
double r111362 = c;
double r111363 = r111361 * r111362;
double r111364 = r111363 / r111357;
double r111365 = r111360 * r111364;
double r111366 = 2.0;
double r111367 = r111366 * r111357;
double r111368 = r111365 - r111367;
double r111369 = 3.0;
double r111370 = r111368 / r111369;
double r111371 = r111370 / r111361;
double r111372 = -2.214640747245634e-234;
bool r111373 = r111357 <= r111372;
double r111374 = -r111357;
double r111375 = r111357 * r111357;
double r111376 = r111369 * r111361;
double r111377 = r111376 * r111362;
double r111378 = r111375 - r111377;
double r111379 = sqrt(r111378);
double r111380 = r111374 + r111379;
double r111381 = r111380 / r111376;
double r111382 = 1.6379818719225421e+152;
bool r111383 = r111357 <= r111382;
double r111384 = -1.0;
double r111385 = r111379 + r111357;
double r111386 = r111385 / r111362;
double r111387 = r111361 / r111361;
double r111388 = r111386 * r111387;
double r111389 = r111384 / r111388;
double r111390 = -r111377;
double r111391 = r111357 - r111365;
double r111392 = r111391 + r111357;
double r111393 = r111390 / r111392;
double r111394 = r111393 / r111369;
double r111395 = r111394 / r111361;
double r111396 = r111383 ? r111389 : r111395;
double r111397 = r111373 ? r111381 : r111396;
double r111398 = r111359 ? r111371 : r111397;
return r111398;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.1399756785205677e+154Initial program 64.0
Simplified64.0
Taylor expanded around -inf 11.3
if -1.1399756785205677e+154 < b < -2.214640747245634e-234Initial program 7.2
if -2.214640747245634e-234 < b < 1.6379818719225421e+152Initial program 32.5
Simplified32.6
rmApplied flip--32.7
Simplified16.2
rmApplied sub0-neg16.2
Applied distribute-frac-neg16.2
Simplified14.5
rmApplied div-inv14.6
Applied associate-/l*14.6
Simplified14.4
rmApplied *-un-lft-identity14.4
Applied distribute-lft-neg-in14.4
Applied associate-/l*14.4
Simplified9.4
if 1.6379818719225421e+152 < b Initial program 63.8
Simplified63.8
rmApplied flip--63.8
Simplified38.2
Taylor expanded around inf 14.4
Final simplification9.8
herbie shell --seed 2019325
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))