\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 -34801737241079.82:\\
\;\;\;\;\frac{\left(-b\right) + \left(1.5 \cdot \frac{a \cdot c}{b} - b\right)}{3 \cdot a}\\
\mathbf{elif}\;b \le -1.4167290353563065 \cdot 10^{-64}:\\
\;\;\;\;\frac{1}{\frac{3 \cdot a}{3 \cdot \left(a \cdot c\right)} \cdot \frac{\left({b}^{2} - {b}^{2}\right) + 3 \cdot \left(a \cdot c\right)}{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}}\\
\mathbf{elif}\;b \le 1.3695280426588302 \cdot 10^{154}:\\
\;\;\;\;1 \cdot \frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{1}{\frac{c}{1}} \cdot \left(1.5 \cdot \frac{a \cdot c}{b} - 2 \cdot b\right)}\\
\end{array}double f(double a, double b, double c) {
double r119352 = b;
double r119353 = -r119352;
double r119354 = r119352 * r119352;
double r119355 = 3.0;
double r119356 = a;
double r119357 = r119355 * r119356;
double r119358 = c;
double r119359 = r119357 * r119358;
double r119360 = r119354 - r119359;
double r119361 = sqrt(r119360);
double r119362 = r119353 + r119361;
double r119363 = r119362 / r119357;
return r119363;
}
double f(double a, double b, double c) {
double r119364 = b;
double r119365 = -34801737241079.82;
bool r119366 = r119364 <= r119365;
double r119367 = -r119364;
double r119368 = 1.5;
double r119369 = a;
double r119370 = c;
double r119371 = r119369 * r119370;
double r119372 = r119371 / r119364;
double r119373 = r119368 * r119372;
double r119374 = r119373 - r119364;
double r119375 = r119367 + r119374;
double r119376 = 3.0;
double r119377 = r119376 * r119369;
double r119378 = r119375 / r119377;
double r119379 = -1.4167290353563065e-64;
bool r119380 = r119364 <= r119379;
double r119381 = 1.0;
double r119382 = r119376 * r119371;
double r119383 = r119377 / r119382;
double r119384 = 2.0;
double r119385 = pow(r119364, r119384);
double r119386 = r119385 - r119385;
double r119387 = r119386 + r119382;
double r119388 = r119364 * r119364;
double r119389 = r119377 * r119370;
double r119390 = r119388 - r119389;
double r119391 = sqrt(r119390);
double r119392 = r119391 - r119364;
double r119393 = r119387 / r119392;
double r119394 = r119383 * r119393;
double r119395 = r119381 / r119394;
double r119396 = 1.3695280426588302e+154;
bool r119397 = r119364 <= r119396;
double r119398 = r119367 - r119391;
double r119399 = r119370 / r119398;
double r119400 = r119381 * r119399;
double r119401 = r119370 / r119381;
double r119402 = r119381 / r119401;
double r119403 = r119384 * r119364;
double r119404 = r119373 - r119403;
double r119405 = r119402 * r119404;
double r119406 = r119381 / r119405;
double r119407 = r119397 ? r119400 : r119406;
double r119408 = r119380 ? r119395 : r119407;
double r119409 = r119366 ? r119378 : r119408;
return r119409;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -34801737241079.82Initial program 34.0
Taylor expanded around -inf 12.9
if -34801737241079.82 < b < -1.4167290353563065e-64Initial program 4.5
rmApplied flip-+40.3
Simplified40.4
rmApplied *-un-lft-identity40.4
Applied *-un-lft-identity40.4
Applied times-frac40.4
Applied associate-/l*40.4
Simplified40.4
rmApplied flip--40.5
Simplified14.6
Simplified14.6
if -1.4167290353563065e-64 < b < 1.3695280426588302e+154Initial program 27.4
rmApplied flip-+30.2
Simplified16.8
rmApplied *-un-lft-identity16.8
Applied *-un-lft-identity16.8
Applied times-frac16.8
Applied associate-/l*17.0
Simplified16.0
rmApplied clear-num16.0
Simplified11.8
rmApplied div-inv11.8
Simplified11.4
if 1.3695280426588302e+154 < b Initial program 64.0
rmApplied flip-+64.0
Simplified38.1
rmApplied *-un-lft-identity38.1
Applied *-un-lft-identity38.1
Applied times-frac38.1
Applied associate-/l*38.1
Simplified38.1
rmApplied clear-num38.1
Simplified38.0
Taylor expanded around inf 7.5
Final simplification11.2
herbie shell --seed 2020057
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))