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 -4.933856107603524 \cdot 10^{-310}:\\
\;\;\;\;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 \left(-1 \cdot x.re\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\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 r17126 = x_re;
double r17127 = r17126 * r17126;
double r17128 = x_im;
double r17129 = r17128 * r17128;
double r17130 = r17127 + r17129;
double r17131 = sqrt(r17130);
double r17132 = log(r17131);
double r17133 = y_re;
double r17134 = r17132 * r17133;
double r17135 = atan2(r17128, r17126);
double r17136 = y_im;
double r17137 = r17135 * r17136;
double r17138 = r17134 - r17137;
double r17139 = exp(r17138);
double r17140 = r17132 * r17136;
double r17141 = r17135 * r17133;
double r17142 = r17140 + r17141;
double r17143 = sin(r17142);
double r17144 = r17139 * r17143;
return r17144;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r17145 = x_re;
double r17146 = -4.9338561076035e-310;
bool r17147 = r17145 <= r17146;
double r17148 = r17145 * r17145;
double r17149 = x_im;
double r17150 = r17149 * r17149;
double r17151 = r17148 + r17150;
double r17152 = sqrt(r17151);
double r17153 = log(r17152);
double r17154 = y_re;
double r17155 = r17153 * r17154;
double r17156 = atan2(r17149, r17145);
double r17157 = y_im;
double r17158 = r17156 * r17157;
double r17159 = cbrt(r17158);
double r17160 = r17159 * r17159;
double r17161 = r17160 * r17159;
double r17162 = r17155 - r17161;
double r17163 = exp(r17162);
double r17164 = -1.0;
double r17165 = r17164 * r17145;
double r17166 = log(r17165);
double r17167 = r17166 * r17157;
double r17168 = r17156 * r17154;
double r17169 = r17167 + r17168;
double r17170 = sin(r17169);
double r17171 = r17163 * r17170;
double r17172 = log(r17145);
double r17173 = r17172 * r17157;
double r17174 = r17173 + r17168;
double r17175 = sin(r17174);
double r17176 = r17163 * r17175;
double r17177 = r17147 ? r17171 : r17176;
return r17177;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if x.re < -4.9338561076035e-310Initial program 31.6
rmApplied add-cube-cbrt31.6
Taylor expanded around -inf 20.8
if -4.9338561076035e-310 < x.re Initial program 35.4
rmApplied add-cube-cbrt35.4
Taylor expanded around inf 24.6
Final simplification22.7
herbie shell --seed 2020020
(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)))))