\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 -1.35190676294417 \cdot 10^{154}:\\
\;\;\;\;\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{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 2.34940293042711077 \cdot 10^{98}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left|\sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\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}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right) - 2 \cdot b}\\
\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 r31704 = b;
double r31705 = 0.0;
bool r31706 = r31704 >= r31705;
double r31707 = 2.0;
double r31708 = c;
double r31709 = r31707 * r31708;
double r31710 = -r31704;
double r31711 = r31704 * r31704;
double r31712 = 4.0;
double r31713 = a;
double r31714 = r31712 * r31713;
double r31715 = r31714 * r31708;
double r31716 = r31711 - r31715;
double r31717 = sqrt(r31716);
double r31718 = r31710 - r31717;
double r31719 = r31709 / r31718;
double r31720 = r31710 + r31717;
double r31721 = r31707 * r31713;
double r31722 = r31720 / r31721;
double r31723 = r31706 ? r31719 : r31722;
return r31723;
}
double f(double a, double b, double c) {
double r31724 = b;
double r31725 = -1.35190676294417e+154;
bool r31726 = r31724 <= r31725;
double r31727 = 0.0;
bool r31728 = r31724 >= r31727;
double r31729 = 2.0;
double r31730 = c;
double r31731 = r31729 * r31730;
double r31732 = -r31724;
double r31733 = r31724 * r31724;
double r31734 = 4.0;
double r31735 = a;
double r31736 = r31734 * r31735;
double r31737 = r31736 * r31730;
double r31738 = r31733 - r31737;
double r31739 = sqrt(r31738);
double r31740 = r31732 - r31739;
double r31741 = r31731 / r31740;
double r31742 = r31735 * r31730;
double r31743 = r31742 / r31724;
double r31744 = r31729 * r31743;
double r31745 = 2.0;
double r31746 = r31745 * r31724;
double r31747 = r31744 - r31746;
double r31748 = r31729 * r31735;
double r31749 = r31747 / r31748;
double r31750 = r31728 ? r31741 : r31749;
double r31751 = 2.3494029304271108e+98;
bool r31752 = r31724 <= r31751;
double r31753 = cbrt(r31738);
double r31754 = sqrt(r31753);
double r31755 = r31754 * r31754;
double r31756 = fabs(r31755);
double r31757 = r31756 * r31754;
double r31758 = r31732 - r31757;
double r31759 = r31731 / r31758;
double r31760 = r31732 + r31739;
double r31761 = r31760 / r31748;
double r31762 = r31728 ? r31759 : r31761;
double r31763 = cbrt(r31724);
double r31764 = r31763 * r31763;
double r31765 = r31735 / r31764;
double r31766 = r31730 / r31763;
double r31767 = r31765 * r31766;
double r31768 = r31729 * r31767;
double r31769 = r31768 - r31746;
double r31770 = r31731 / r31769;
double r31771 = r31728 ? r31770 : r31761;
double r31772 = r31752 ? r31762 : r31771;
double r31773 = r31726 ? r31750 : r31772;
return r31773;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.35190676294417e+154Initial program 64.0
Taylor expanded around -inf 10.8
if -1.35190676294417e+154 < b < 2.3494029304271108e+98Initial program 8.9
rmApplied add-cube-cbrt9.1
Applied sqrt-prod9.1
Simplified9.1
rmApplied add-sqr-sqrt9.1
if 2.3494029304271108e+98 < b Initial program 30.1
Taylor expanded around inf 6.4
rmApplied add-cube-cbrt6.4
Applied times-frac2.5
Final simplification7.8
herbie shell --seed 2019195
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0.0) (/ (* 2.0 c) (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a))))