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.434160650439028118361824534749858467457 \cdot 10^{-309}:\\
\;\;\;\;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)\\
\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 r15374 = x_re;
double r15375 = r15374 * r15374;
double r15376 = x_im;
double r15377 = r15376 * r15376;
double r15378 = r15375 + r15377;
double r15379 = sqrt(r15378);
double r15380 = log(r15379);
double r15381 = y_re;
double r15382 = r15380 * r15381;
double r15383 = atan2(r15376, r15374);
double r15384 = y_im;
double r15385 = r15383 * r15384;
double r15386 = r15382 - r15385;
double r15387 = exp(r15386);
double r15388 = r15380 * r15384;
double r15389 = r15383 * r15381;
double r15390 = r15388 + r15389;
double r15391 = sin(r15390);
double r15392 = r15387 * r15391;
return r15392;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r15393 = x_re;
double r15394 = -5.43416065043903e-309;
bool r15395 = r15393 <= r15394;
double r15396 = r15393 * r15393;
double r15397 = x_im;
double r15398 = r15397 * r15397;
double r15399 = r15396 + r15398;
double r15400 = sqrt(r15399);
double r15401 = log(r15400);
double r15402 = y_re;
double r15403 = r15401 * r15402;
double r15404 = atan2(r15397, r15393);
double r15405 = y_im;
double r15406 = r15404 * r15405;
double r15407 = r15403 - r15406;
double r15408 = exp(r15407);
double r15409 = r15404 * r15402;
double r15410 = -1.0;
double r15411 = r15410 / r15393;
double r15412 = log(r15411);
double r15413 = r15405 * r15412;
double r15414 = r15409 - r15413;
double r15415 = sin(r15414);
double r15416 = r15408 * r15415;
double r15417 = 1.0;
double r15418 = r15417 / r15393;
double r15419 = log(r15418);
double r15420 = r15405 * r15419;
double r15421 = r15409 - r15420;
double r15422 = sin(r15421);
double r15423 = r15408 * r15422;
double r15424 = r15395 ? r15416 : r15423;
return r15424;
}



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.43416065043903e-309Initial program 31.6
Taylor expanded around -inf 19.4
if -5.43416065043903e-309 < x.re Initial program 34.9
rmApplied add-cube-cbrt35.0
Applied associate-*l*35.0
Taylor expanded around inf 24.8
Final simplification22.1
herbie shell --seed 2019356
(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)))))