\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.325519151108135343753380598918343279627 \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{\frac{\left(2 \cdot \frac{a \cdot c}{b} - b\right) - b}{2}}{a}\\
\end{array}\\
\mathbf{elif}\;b \le 5.031608061939102936286074782173578716838 \cdot 10^{53}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{\left(\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right) \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2}}{a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2}}{a}\\
\end{array}double f(double a, double b, double c) {
double r30849 = b;
double r30850 = 0.0;
bool r30851 = r30849 >= r30850;
double r30852 = 2.0;
double r30853 = c;
double r30854 = r30852 * r30853;
double r30855 = -r30849;
double r30856 = r30849 * r30849;
double r30857 = 4.0;
double r30858 = a;
double r30859 = r30857 * r30858;
double r30860 = r30859 * r30853;
double r30861 = r30856 - r30860;
double r30862 = sqrt(r30861);
double r30863 = r30855 - r30862;
double r30864 = r30854 / r30863;
double r30865 = r30855 + r30862;
double r30866 = r30852 * r30858;
double r30867 = r30865 / r30866;
double r30868 = r30851 ? r30864 : r30867;
return r30868;
}
double f(double a, double b, double c) {
double r30869 = b;
double r30870 = -1.3255191511081353e+154;
bool r30871 = r30869 <= r30870;
double r30872 = 0.0;
bool r30873 = r30869 >= r30872;
double r30874 = 2.0;
double r30875 = c;
double r30876 = r30874 * r30875;
double r30877 = -r30869;
double r30878 = r30869 * r30869;
double r30879 = 4.0;
double r30880 = a;
double r30881 = r30879 * r30880;
double r30882 = r30881 * r30875;
double r30883 = r30878 - r30882;
double r30884 = sqrt(r30883);
double r30885 = r30877 - r30884;
double r30886 = r30876 / r30885;
double r30887 = r30880 * r30875;
double r30888 = r30887 / r30869;
double r30889 = r30874 * r30888;
double r30890 = r30889 - r30869;
double r30891 = r30890 - r30869;
double r30892 = r30891 / r30874;
double r30893 = r30892 / r30880;
double r30894 = r30873 ? r30886 : r30893;
double r30895 = 5.031608061939103e+53;
bool r30896 = r30869 <= r30895;
double r30897 = cbrt(r30883);
double r30898 = r30897 * r30897;
double r30899 = r30898 * r30897;
double r30900 = sqrt(r30899);
double r30901 = r30877 - r30900;
double r30902 = r30876 / r30901;
double r30903 = r30884 - r30869;
double r30904 = r30903 / r30874;
double r30905 = r30904 / r30880;
double r30906 = r30873 ? r30902 : r30905;
double r30907 = r30869 - r30889;
double r30908 = r30877 - r30907;
double r30909 = r30876 / r30908;
double r30910 = r30873 ? r30909 : r30905;
double r30911 = r30896 ? r30906 : r30910;
double r30912 = r30871 ? r30894 : r30911;
return r30912;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3255191511081353e+154Initial program 64.0
Simplified64.0
Taylor expanded around -inf 11.1
if -1.3255191511081353e+154 < b < 5.031608061939103e+53Initial program 8.7
Simplified8.7
rmApplied add-cube-cbrt8.9
if 5.031608061939103e+53 < b Initial program 26.3
Simplified26.3
Taylor expanded around inf 7.7
Final simplification8.8
herbie shell --seed 2019326 +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))))