\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 -3.241187172550559408188235703536897569729 \cdot 10^{147}:\\
\;\;\;\;\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{\frac{2 \cdot a}{\frac{b}{c}} + b \cdot -2}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 2.349402930427110769075791183992464758725 \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 c\right) \cdot a}} \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot c\right) \cdot a}}\right| \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\frac{2 \cdot a}{\frac{b}{c}} + b \cdot -2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{b \cdot b - \left(b \cdot b - \left(a \cdot c\right) \cdot 4\right)}{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r34975 = b;
double r34976 = 0.0;
bool r34977 = r34975 >= r34976;
double r34978 = 2.0;
double r34979 = c;
double r34980 = r34978 * r34979;
double r34981 = -r34975;
double r34982 = r34975 * r34975;
double r34983 = 4.0;
double r34984 = a;
double r34985 = r34983 * r34984;
double r34986 = r34985 * r34979;
double r34987 = r34982 - r34986;
double r34988 = sqrt(r34987);
double r34989 = r34981 - r34988;
double r34990 = r34980 / r34989;
double r34991 = r34981 + r34988;
double r34992 = r34978 * r34984;
double r34993 = r34991 / r34992;
double r34994 = r34977 ? r34990 : r34993;
return r34994;
}
double f(double a, double b, double c) {
double r34995 = b;
double r34996 = -3.2411871725505594e+147;
bool r34997 = r34995 <= r34996;
double r34998 = 0.0;
bool r34999 = r34995 >= r34998;
double r35000 = 2.0;
double r35001 = c;
double r35002 = r35000 * r35001;
double r35003 = -r34995;
double r35004 = r34995 * r34995;
double r35005 = 4.0;
double r35006 = a;
double r35007 = r35005 * r35006;
double r35008 = r35007 * r35001;
double r35009 = r35004 - r35008;
double r35010 = sqrt(r35009);
double r35011 = r35003 - r35010;
double r35012 = r35002 / r35011;
double r35013 = r35000 * r35006;
double r35014 = r34995 / r35001;
double r35015 = r35013 / r35014;
double r35016 = -2.0;
double r35017 = r34995 * r35016;
double r35018 = r35015 + r35017;
double r35019 = r35018 / r35013;
double r35020 = r34999 ? r35012 : r35019;
double r35021 = 2.3494029304271108e+98;
bool r35022 = r34995 <= r35021;
double r35023 = r35005 * r35001;
double r35024 = r35023 * r35006;
double r35025 = r35004 - r35024;
double r35026 = cbrt(r35025);
double r35027 = sqrt(r35026);
double r35028 = r35027 * r35027;
double r35029 = fabs(r35028);
double r35030 = cbrt(r35009);
double r35031 = sqrt(r35030);
double r35032 = r35029 * r35031;
double r35033 = r35003 - r35032;
double r35034 = r35002 / r35033;
double r35035 = r35010 + r35003;
double r35036 = r35035 / r35013;
double r35037 = r34999 ? r35034 : r35036;
double r35038 = r35002 / r35018;
double r35039 = r35006 * r35001;
double r35040 = r35039 * r35005;
double r35041 = r35004 - r35040;
double r35042 = r35004 - r35041;
double r35043 = sqrt(r35041);
double r35044 = r35003 - r35043;
double r35045 = r35042 / r35044;
double r35046 = r35045 / r35013;
double r35047 = r34999 ? r35038 : r35046;
double r35048 = r35022 ? r35037 : r35047;
double r35049 = r34997 ? r35020 : r35048;
return r35049;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.2411871725505594e+147Initial program 61.4
Taylor expanded around -inf 10.6
Simplified1.7
if -3.2411871725505594e+147 < b < 2.3494029304271108e+98Initial program 8.9
rmApplied add-cube-cbrt9.1
Applied sqrt-prod9.1
Simplified9.1
rmApplied add-sqr-sqrt9.2
Simplified9.2
Simplified9.2
if 2.3494029304271108e+98 < b Initial program 30.1
Taylor expanded around inf 6.4
Simplified2.5
rmApplied flip-+2.5
Simplified2.5
Simplified2.5
Final simplification6.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))))