\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3.0 \cdot a\right) \cdot c}}{3.0 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -2.0519886074223697 \cdot 10^{+155}:\\
\;\;\;\;\frac{\left(1.5 \cdot \frac{a \cdot c}{b} - b\right) - b}{3.0 \cdot a}\\
\mathbf{elif}\;b \le 1.3635892865650846 \cdot 10^{-93}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(3.0 \cdot a\right) \cdot c} - b}{3.0 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1.5 \cdot \frac{a \cdot c}{b}}{3.0 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r4561434 = b;
double r4561435 = -r4561434;
double r4561436 = r4561434 * r4561434;
double r4561437 = 3.0;
double r4561438 = a;
double r4561439 = r4561437 * r4561438;
double r4561440 = c;
double r4561441 = r4561439 * r4561440;
double r4561442 = r4561436 - r4561441;
double r4561443 = sqrt(r4561442);
double r4561444 = r4561435 + r4561443;
double r4561445 = r4561444 / r4561439;
return r4561445;
}
double f(double a, double b, double c) {
double r4561446 = b;
double r4561447 = -2.0519886074223697e+155;
bool r4561448 = r4561446 <= r4561447;
double r4561449 = 1.5;
double r4561450 = a;
double r4561451 = c;
double r4561452 = r4561450 * r4561451;
double r4561453 = r4561452 / r4561446;
double r4561454 = r4561449 * r4561453;
double r4561455 = r4561454 - r4561446;
double r4561456 = r4561455 - r4561446;
double r4561457 = 3.0;
double r4561458 = r4561457 * r4561450;
double r4561459 = r4561456 / r4561458;
double r4561460 = 1.3635892865650846e-93;
bool r4561461 = r4561446 <= r4561460;
double r4561462 = r4561446 * r4561446;
double r4561463 = r4561458 * r4561451;
double r4561464 = r4561462 - r4561463;
double r4561465 = sqrt(r4561464);
double r4561466 = r4561465 - r4561446;
double r4561467 = r4561466 / r4561458;
double r4561468 = -1.5;
double r4561469 = r4561468 * r4561453;
double r4561470 = r4561469 / r4561458;
double r4561471 = r4561461 ? r4561467 : r4561470;
double r4561472 = r4561448 ? r4561459 : r4561471;
return r4561472;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.0519886074223697e+155Initial program 64.0
Simplified64.0
Taylor expanded around -inf 12.0
if -2.0519886074223697e+155 < b < 1.3635892865650846e-93Initial program 11.8
Simplified11.8
if 1.3635892865650846e-93 < b Initial program 52.9
Simplified52.9
Taylor expanded around inf 19.8
Final simplification15.2
herbie shell --seed 2019165
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3.0 a) c)))) (* 3.0 a)))