\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 2029.693337701399:\\
\;\;\;\;\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{else}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r3492629 = b;
double r3492630 = -r3492629;
double r3492631 = r3492629 * r3492629;
double r3492632 = 3.0;
double r3492633 = a;
double r3492634 = r3492632 * r3492633;
double r3492635 = c;
double r3492636 = r3492634 * r3492635;
double r3492637 = r3492631 - r3492636;
double r3492638 = sqrt(r3492637);
double r3492639 = r3492630 + r3492638;
double r3492640 = r3492639 / r3492634;
return r3492640;
}
double f(double a, double b, double c) {
double r3492641 = b;
double r3492642 = 2029.693337701399;
bool r3492643 = r3492641 <= r3492642;
double r3492644 = a;
double r3492645 = c;
double r3492646 = r3492644 * r3492645;
double r3492647 = -3.0;
double r3492648 = r3492646 * r3492647;
double r3492649 = r3492641 * r3492641;
double r3492650 = r3492648 + r3492649;
double r3492651 = sqrt(r3492650);
double r3492652 = r3492650 * r3492651;
double r3492653 = r3492641 * r3492649;
double r3492654 = r3492652 - r3492653;
double r3492655 = r3492641 * r3492651;
double r3492656 = r3492649 + r3492655;
double r3492657 = r3492650 + r3492656;
double r3492658 = r3492654 / r3492657;
double r3492659 = 3.0;
double r3492660 = r3492644 * r3492659;
double r3492661 = r3492658 / r3492660;
double r3492662 = -0.5;
double r3492663 = r3492645 / r3492641;
double r3492664 = r3492662 * r3492663;
double r3492665 = r3492643 ? r3492661 : r3492664;
return r3492665;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 2029.693337701399Initial program 18.1
Simplified18.1
rmApplied flip3--18.2
Simplified17.5
Simplified17.5
if 2029.693337701399 < b Initial program 37.2
Simplified37.2
Taylor expanded around inf 15.5
Final simplification16.4
herbie shell --seed 2019139
(FPCore (a b c)
: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)))