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.414572343622511084237022818077982329413 \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 - \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 r18963 = x_re;
double r18964 = r18963 * r18963;
double r18965 = x_im;
double r18966 = r18965 * r18965;
double r18967 = r18964 + r18966;
double r18968 = sqrt(r18967);
double r18969 = log(r18968);
double r18970 = y_re;
double r18971 = r18969 * r18970;
double r18972 = atan2(r18965, r18963);
double r18973 = y_im;
double r18974 = r18972 * r18973;
double r18975 = r18971 - r18974;
double r18976 = exp(r18975);
double r18977 = r18969 * r18973;
double r18978 = r18972 * r18970;
double r18979 = r18977 + r18978;
double r18980 = sin(r18979);
double r18981 = r18976 * r18980;
return r18981;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r18982 = x_re;
double r18983 = -5.41457234362251e-309;
bool r18984 = r18982 <= r18983;
double r18985 = r18982 * r18982;
double r18986 = x_im;
double r18987 = r18986 * r18986;
double r18988 = r18985 + r18987;
double r18989 = sqrt(r18988);
double r18990 = log(r18989);
double r18991 = y_re;
double r18992 = r18990 * r18991;
double r18993 = atan2(r18986, r18982);
double r18994 = y_im;
double r18995 = r18993 * r18994;
double r18996 = cbrt(r18995);
double r18997 = r18996 * r18996;
double r18998 = r18997 * r18996;
double r18999 = r18992 - r18998;
double r19000 = exp(r18999);
double r19001 = r18993 * r18991;
double r19002 = -1.0;
double r19003 = r19002 / r18982;
double r19004 = log(r19003);
double r19005 = r18994 * r19004;
double r19006 = r19001 - r19005;
double r19007 = sin(r19006);
double r19008 = r19000 * r19007;
double r19009 = r18992 - r18995;
double r19010 = exp(r19009);
double r19011 = log(r18982);
double r19012 = r19011 * r18994;
double r19013 = r19012 + r19001;
double r19014 = sin(r19013);
double r19015 = r19010 * r19014;
double r19016 = r18984 ? r19008 : r19015;
return r19016;
}



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.41457234362251e-309Initial program 32.2
rmApplied add-cube-cbrt32.2
Taylor expanded around -inf 21.3
if -5.41457234362251e-309 < x.re Initial program 34.0
Taylor expanded around inf 23.9
Final simplification22.6
herbie shell --seed 2020001
(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)))))