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.533104850875599033183749109279252085753 \cdot 10^{-70}:\\
\;\;\;\;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{elif}\;x.re \le 8.46522173077545475232222870066891639199 \cdot 10^{-274}:\\
\;\;\;\;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 \left(\left(\sqrt[3]{\left(\sqrt[3]{\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)} \cdot \sqrt[3]{\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)}\right) \cdot \sqrt[3]{\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)}} \cdot \sqrt[3]{\left(\sqrt[3]{\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)} \cdot \sqrt[3]{\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)}\right) \cdot \sqrt[3]{\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)}}\right) \cdot \sqrt[3]{\left(\sqrt[3]{\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)} \cdot \sqrt[3]{\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)}\right) \cdot \sqrt[3]{\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)}}\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 r29377 = x_re;
double r29378 = r29377 * r29377;
double r29379 = x_im;
double r29380 = r29379 * r29379;
double r29381 = r29378 + r29380;
double r29382 = sqrt(r29381);
double r29383 = log(r29382);
double r29384 = y_re;
double r29385 = r29383 * r29384;
double r29386 = atan2(r29379, r29377);
double r29387 = y_im;
double r29388 = r29386 * r29387;
double r29389 = r29385 - r29388;
double r29390 = exp(r29389);
double r29391 = r29383 * r29387;
double r29392 = r29386 * r29384;
double r29393 = r29391 + r29392;
double r29394 = sin(r29393);
double r29395 = r29390 * r29394;
return r29395;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r29396 = x_re;
double r29397 = -4.533104850875599e-70;
bool r29398 = r29396 <= r29397;
double r29399 = r29396 * r29396;
double r29400 = x_im;
double r29401 = r29400 * r29400;
double r29402 = r29399 + r29401;
double r29403 = sqrt(r29402);
double r29404 = log(r29403);
double r29405 = y_re;
double r29406 = r29404 * r29405;
double r29407 = atan2(r29400, r29396);
double r29408 = y_im;
double r29409 = r29407 * r29408;
double r29410 = r29406 - r29409;
double r29411 = exp(r29410);
double r29412 = r29407 * r29405;
double r29413 = -1.0;
double r29414 = r29413 / r29396;
double r29415 = log(r29414);
double r29416 = r29408 * r29415;
double r29417 = r29412 - r29416;
double r29418 = sin(r29417);
double r29419 = r29411 * r29418;
double r29420 = 8.465221730775455e-274;
bool r29421 = r29396 <= r29420;
double r29422 = r29404 * r29408;
double r29423 = r29422 + r29412;
double r29424 = sin(r29423);
double r29425 = cbrt(r29424);
double r29426 = r29425 * r29425;
double r29427 = r29426 * r29425;
double r29428 = cbrt(r29427);
double r29429 = r29428 * r29428;
double r29430 = r29429 * r29428;
double r29431 = r29411 * r29430;
double r29432 = 1.0;
double r29433 = r29432 / r29396;
double r29434 = log(r29433);
double r29435 = r29408 * r29434;
double r29436 = r29412 - r29435;
double r29437 = sin(r29436);
double r29438 = r29411 * r29437;
double r29439 = r29421 ? r29431 : r29438;
double r29440 = r29398 ? r29419 : r29439;
return r29440;
}



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.533104850875599e-70Initial program 35.8
Taylor expanded around -inf 20.3
if -4.533104850875599e-70 < x.re < 8.465221730775455e-274Initial program 27.2
rmApplied add-cube-cbrt27.5
rmApplied add-cube-cbrt27.5
rmApplied add-cube-cbrt27.5
rmApplied add-cube-cbrt27.5
if 8.465221730775455e-274 < x.re Initial program 35.3
Taylor expanded around inf 24.8
Final simplification24.0
herbie shell --seed 2019308
(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)))))