\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -4.739519777490095733488952130644039307968 \cdot 10^{139} \lor \neg \left(b \le 5.291645547718113453266834027715248202984 \cdot 10^{102}\right):\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r33696 = b;
double r33697 = 0.0;
bool r33698 = r33696 >= r33697;
double r33699 = 2.0;
double r33700 = c;
double r33701 = r33699 * r33700;
double r33702 = -r33696;
double r33703 = r33696 * r33696;
double r33704 = 4.0;
double r33705 = a;
double r33706 = r33704 * r33705;
double r33707 = r33706 * r33700;
double r33708 = r33703 - r33707;
double r33709 = sqrt(r33708);
double r33710 = r33702 - r33709;
double r33711 = r33701 / r33710;
double r33712 = r33702 + r33709;
double r33713 = r33699 * r33705;
double r33714 = r33712 / r33713;
double r33715 = r33698 ? r33711 : r33714;
return r33715;
}
double f(double a, double b, double c) {
double r33716 = b;
double r33717 = -4.7395197774900957e+139;
bool r33718 = r33716 <= r33717;
double r33719 = 5.291645547718113e+102;
bool r33720 = r33716 <= r33719;
double r33721 = !r33720;
bool r33722 = r33718 || r33721;
double r33723 = 0.0;
bool r33724 = r33716 >= r33723;
double r33725 = 2.0;
double r33726 = c;
double r33727 = r33725 * r33726;
double r33728 = -r33716;
double r33729 = a;
double r33730 = r33729 * r33726;
double r33731 = r33730 / r33716;
double r33732 = r33725 * r33731;
double r33733 = r33716 - r33732;
double r33734 = r33728 - r33733;
double r33735 = r33727 / r33734;
double r33736 = 1.0;
double r33737 = r33726 / r33716;
double r33738 = r33716 / r33729;
double r33739 = r33737 - r33738;
double r33740 = r33736 * r33739;
double r33741 = r33724 ? r33735 : r33740;
double r33742 = r33716 * r33716;
double r33743 = 4.0;
double r33744 = r33743 * r33729;
double r33745 = r33744 * r33726;
double r33746 = r33742 - r33745;
double r33747 = cbrt(r33746);
double r33748 = fabs(r33747);
double r33749 = sqrt(r33747);
double r33750 = r33748 * r33749;
double r33751 = r33728 - r33750;
double r33752 = r33727 / r33751;
double r33753 = sqrt(r33746);
double r33754 = r33728 + r33753;
double r33755 = r33725 * r33729;
double r33756 = r33754 / r33755;
double r33757 = r33724 ? r33752 : r33756;
double r33758 = r33722 ? r33741 : r33757;
return r33758;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.7395197774900957e+139 or 5.291645547718113e+102 < b Initial program 39.7
Taylor expanded around -inf 23.0
Taylor expanded around 0 20.5
Simplified20.5
Taylor expanded around inf 5.0
if -4.7395197774900957e+139 < b < 5.291645547718113e+102Initial program 8.4
rmApplied add-cube-cbrt8.6
Applied sqrt-prod8.6
Simplified8.6
Final simplification7.3
herbie shell --seed 2019212 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))