\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 -5.105369019268963816293244653075052742799 \cdot 10^{141}:\\
\;\;\;\;\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{\mathsf{fma}\left(2, \frac{a \cdot c}{b}, -2 \cdot b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 5.139720957774800459105165687985873103887 \cdot 10^{144}:\\
\;\;\;\;\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) + \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{\sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\left(\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right) \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}} \cdot \sqrt[3]{\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}{\mathsf{fma}\left(2, \frac{a \cdot c}{b}, -2 \cdot b\right)}\\
\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 r32884 = b;
double r32885 = 0.0;
bool r32886 = r32884 >= r32885;
double r32887 = 2.0;
double r32888 = c;
double r32889 = r32887 * r32888;
double r32890 = -r32884;
double r32891 = r32884 * r32884;
double r32892 = 4.0;
double r32893 = a;
double r32894 = r32892 * r32893;
double r32895 = r32894 * r32888;
double r32896 = r32891 - r32895;
double r32897 = sqrt(r32896);
double r32898 = r32890 - r32897;
double r32899 = r32889 / r32898;
double r32900 = r32890 + r32897;
double r32901 = r32887 * r32893;
double r32902 = r32900 / r32901;
double r32903 = r32886 ? r32899 : r32902;
return r32903;
}
double f(double a, double b, double c) {
double r32904 = b;
double r32905 = -5.105369019268964e+141;
bool r32906 = r32904 <= r32905;
double r32907 = 0.0;
bool r32908 = r32904 >= r32907;
double r32909 = 2.0;
double r32910 = c;
double r32911 = r32909 * r32910;
double r32912 = -r32904;
double r32913 = r32904 * r32904;
double r32914 = 4.0;
double r32915 = a;
double r32916 = r32914 * r32915;
double r32917 = r32916 * r32910;
double r32918 = r32913 - r32917;
double r32919 = sqrt(r32918);
double r32920 = r32912 - r32919;
double r32921 = r32911 / r32920;
double r32922 = r32915 * r32910;
double r32923 = r32922 / r32904;
double r32924 = -2.0;
double r32925 = r32924 * r32904;
double r32926 = fma(r32909, r32923, r32925);
double r32927 = r32909 * r32915;
double r32928 = r32926 / r32927;
double r32929 = r32908 ? r32921 : r32928;
double r32930 = 5.1397209577748005e+144;
bool r32931 = r32904 <= r32930;
double r32932 = cbrt(r32918);
double r32933 = fabs(r32932);
double r32934 = sqrt(r32919);
double r32935 = cbrt(r32919);
double r32936 = r32935 * r32935;
double r32937 = r32936 * r32935;
double r32938 = sqrt(r32937);
double r32939 = r32934 * r32938;
double r32940 = cbrt(r32939);
double r32941 = r32940 * r32935;
double r32942 = sqrt(r32941);
double r32943 = r32933 * r32942;
double r32944 = r32912 + r32943;
double r32945 = r32944 / r32927;
double r32946 = r32908 ? r32921 : r32945;
double r32947 = r32911 / r32926;
double r32948 = r32912 + r32919;
double r32949 = r32948 / r32927;
double r32950 = r32908 ? r32947 : r32949;
double r32951 = r32931 ? r32946 : r32950;
double r32952 = r32906 ? r32929 : r32951;
return r32952;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -5.105369019268964e+141Initial program 60.4
Taylor expanded around -inf 10.7
Simplified10.7
if -5.105369019268964e+141 < b < 5.1397209577748005e+144Initial program 8.2
rmApplied add-cube-cbrt8.4
Applied sqrt-prod8.4
Simplified8.4
rmApplied add-sqr-sqrt8.4
Applied cbrt-prod8.4
rmApplied add-sqr-sqrt8.4
Applied sqrt-prod8.4
rmApplied add-cube-cbrt8.4
if 5.1397209577748005e+144 < b Initial program 36.4
Taylor expanded around inf 6.1
Simplified6.1
Final simplification8.3
herbie shell --seed 2019325 +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))))