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 -2.0102898407983201 \cdot 10^{-307}:\\
\;\;\;\;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 \sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}\right) \cdot \left(\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}} \cdot y.im\right)} \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 \sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}\right) \cdot \left(\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}} \cdot y.im\right)} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re - y.im \cdot \log \left(\frac{1}{x.re}\right)\right)\\
\end{array}double f(double x_re, double x_im, double y_re, double y_im) {
double r15832 = x_re;
double r15833 = r15832 * r15832;
double r15834 = x_im;
double r15835 = r15834 * r15834;
double r15836 = r15833 + r15835;
double r15837 = sqrt(r15836);
double r15838 = log(r15837);
double r15839 = y_re;
double r15840 = r15838 * r15839;
double r15841 = atan2(r15834, r15832);
double r15842 = y_im;
double r15843 = r15841 * r15842;
double r15844 = r15840 - r15843;
double r15845 = exp(r15844);
double r15846 = r15838 * r15842;
double r15847 = r15841 * r15839;
double r15848 = r15846 + r15847;
double r15849 = sin(r15848);
double r15850 = r15845 * r15849;
return r15850;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r15851 = x_re;
double r15852 = -2.01028984079832e-307;
bool r15853 = r15851 <= r15852;
double r15854 = r15851 * r15851;
double r15855 = x_im;
double r15856 = r15855 * r15855;
double r15857 = r15854 + r15856;
double r15858 = sqrt(r15857);
double r15859 = log(r15858);
double r15860 = y_re;
double r15861 = r15859 * r15860;
double r15862 = atan2(r15855, r15851);
double r15863 = cbrt(r15862);
double r15864 = r15863 * r15863;
double r15865 = y_im;
double r15866 = r15863 * r15865;
double r15867 = r15864 * r15866;
double r15868 = r15861 - r15867;
double r15869 = exp(r15868);
double r15870 = r15862 * r15860;
double r15871 = -1.0;
double r15872 = r15871 / r15851;
double r15873 = log(r15872);
double r15874 = r15865 * r15873;
double r15875 = r15870 - r15874;
double r15876 = sin(r15875);
double r15877 = r15869 * r15876;
double r15878 = 1.0;
double r15879 = r15878 / r15851;
double r15880 = log(r15879);
double r15881 = r15865 * r15880;
double r15882 = r15870 - r15881;
double r15883 = sin(r15882);
double r15884 = r15869 * r15883;
double r15885 = r15853 ? r15877 : r15884;
return r15885;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if x.re < -2.01028984079832e-307Initial program 32.1
rmApplied add-cube-cbrt32.1
Applied associate-*l*32.1
Taylor expanded around -inf 20.8
if -2.01028984079832e-307 < x.re Initial program 34.3
rmApplied add-cube-cbrt34.3
Applied associate-*l*34.3
Taylor expanded around inf 24.3
Final simplification22.7
herbie shell --seed 2020059
(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)))))