e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\begin{array}{l}
\mathbf{if}\;x.re \le -5.217492173167826615124143270308957496776 \cdot 10^{-309}:\\
\;\;\;\;e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \left(\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}\right) \cdot \sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re - y.im \cdot \log \left(\frac{-1}{x.re}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \left(\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}\right) \cdot \sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}} \cdot \sin \left(\log x.re \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\\
\end{array}double f(double x_re, double x_im, double y_re, double y_im) {
double r14874 = x_re;
double r14875 = r14874 * r14874;
double r14876 = x_im;
double r14877 = r14876 * r14876;
double r14878 = r14875 + r14877;
double r14879 = sqrt(r14878);
double r14880 = log(r14879);
double r14881 = y_re;
double r14882 = r14880 * r14881;
double r14883 = atan2(r14876, r14874);
double r14884 = y_im;
double r14885 = r14883 * r14884;
double r14886 = r14882 - r14885;
double r14887 = exp(r14886);
double r14888 = r14880 * r14884;
double r14889 = r14883 * r14881;
double r14890 = r14888 + r14889;
double r14891 = sin(r14890);
double r14892 = r14887 * r14891;
return r14892;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r14893 = x_re;
double r14894 = -5.217492173167827e-309;
bool r14895 = r14893 <= r14894;
double r14896 = r14893 * r14893;
double r14897 = x_im;
double r14898 = r14897 * r14897;
double r14899 = r14896 + r14898;
double r14900 = sqrt(r14899);
double r14901 = log(r14900);
double r14902 = y_re;
double r14903 = r14901 * r14902;
double r14904 = atan2(r14897, r14893);
double r14905 = y_im;
double r14906 = r14904 * r14905;
double r14907 = cbrt(r14906);
double r14908 = r14907 * r14907;
double r14909 = r14908 * r14907;
double r14910 = r14903 - r14909;
double r14911 = exp(r14910);
double r14912 = r14904 * r14902;
double r14913 = -1.0;
double r14914 = r14913 / r14893;
double r14915 = log(r14914);
double r14916 = r14905 * r14915;
double r14917 = r14912 - r14916;
double r14918 = sin(r14917);
double r14919 = r14911 * r14918;
double r14920 = log(r14893);
double r14921 = r14920 * r14905;
double r14922 = r14921 + r14912;
double r14923 = sin(r14922);
double r14924 = r14911 * r14923;
double r14925 = r14895 ? r14919 : r14924;
return r14925;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if x.re < -5.217492173167827e-309Initial program 32.2
rmApplied add-cube-cbrt32.2
Taylor expanded around -inf 20.6
if -5.217492173167827e-309 < x.re Initial program 34.6
rmApplied add-cube-cbrt34.6
Taylor expanded around inf 23.9
Simplified23.9
Final simplification22.3
herbie shell --seed 2019351
(FPCore (x.re x.im y.re y.im)
:name "powComplex, imaginary part"
:precision binary64
(* (exp (- (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) (* (atan2 x.im x.re) y.im))) (sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re)))))