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(\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 r18980 = x_re;
double r18981 = r18980 * r18980;
double r18982 = x_im;
double r18983 = r18982 * r18982;
double r18984 = r18981 + r18983;
double r18985 = sqrt(r18984);
double r18986 = log(r18985);
double r18987 = y_re;
double r18988 = r18986 * r18987;
double r18989 = atan2(r18982, r18980);
double r18990 = y_im;
double r18991 = r18989 * r18990;
double r18992 = r18988 - r18991;
double r18993 = exp(r18992);
double r18994 = r18986 * r18990;
double r18995 = r18989 * r18987;
double r18996 = r18994 + r18995;
double r18997 = sin(r18996);
double r18998 = r18993 * r18997;
return r18998;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r18999 = x_re;
double r19000 = -5.41457234362251e-309;
bool r19001 = r18999 <= r19000;
double r19002 = r18999 * r18999;
double r19003 = x_im;
double r19004 = r19003 * r19003;
double r19005 = r19002 + r19004;
double r19006 = sqrt(r19005);
double r19007 = log(r19006);
double r19008 = y_re;
double r19009 = r19007 * r19008;
double r19010 = atan2(r19003, r18999);
double r19011 = y_im;
double r19012 = r19010 * r19011;
double r19013 = cbrt(r19012);
double r19014 = r19013 * r19013;
double r19015 = r19014 * r19013;
double r19016 = r19009 - r19015;
double r19017 = exp(r19016);
double r19018 = r19010 * r19008;
double r19019 = -1.0;
double r19020 = r19019 / r18999;
double r19021 = log(r19020);
double r19022 = r19011 * r19021;
double r19023 = r19018 - r19022;
double r19024 = sin(r19023);
double r19025 = r19017 * r19024;
double r19026 = r19009 - r19012;
double r19027 = exp(r19026);
double r19028 = 1.0;
double r19029 = r19028 / r18999;
double r19030 = log(r19029);
double r19031 = r19011 * r19030;
double r19032 = r19018 - r19031;
double r19033 = sin(r19032);
double r19034 = r19027 * r19033;
double r19035 = r19001 ? r19025 : r19034;
return r19035;
}



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 24.0
Final simplification22.7
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)))))