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)e^{\log \left(e^{\log \left(\mathsf{hypot}\left(x.re, x.im\right)\right)}\right) \cdot y.re - \left(\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}} \cdot \sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}\right) \cdot \left(\left(\left(\sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}} \cdot \sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}}\right) \cdot \sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}}\right) \cdot y.im\right)} \cdot \sin \left(\log \left(1 \cdot \mathsf{hypot}\left(x.re, x.im\right)\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)double f(double x_re, double x_im, double y_re, double y_im) {
double r15391 = x_re;
double r15392 = r15391 * r15391;
double r15393 = x_im;
double r15394 = r15393 * r15393;
double r15395 = r15392 + r15394;
double r15396 = sqrt(r15395);
double r15397 = log(r15396);
double r15398 = y_re;
double r15399 = r15397 * r15398;
double r15400 = atan2(r15393, r15391);
double r15401 = y_im;
double r15402 = r15400 * r15401;
double r15403 = r15399 - r15402;
double r15404 = exp(r15403);
double r15405 = r15397 * r15401;
double r15406 = r15400 * r15398;
double r15407 = r15405 + r15406;
double r15408 = sin(r15407);
double r15409 = r15404 * r15408;
return r15409;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r15410 = x_re;
double r15411 = x_im;
double r15412 = hypot(r15410, r15411);
double r15413 = log(r15412);
double r15414 = exp(r15413);
double r15415 = log(r15414);
double r15416 = y_re;
double r15417 = r15415 * r15416;
double r15418 = atan2(r15411, r15410);
double r15419 = cbrt(r15418);
double r15420 = r15419 * r15419;
double r15421 = cbrt(r15419);
double r15422 = r15421 * r15421;
double r15423 = r15422 * r15421;
double r15424 = y_im;
double r15425 = r15423 * r15424;
double r15426 = r15420 * r15425;
double r15427 = r15417 - r15426;
double r15428 = exp(r15427);
double r15429 = 1.0;
double r15430 = r15429 * r15412;
double r15431 = log(r15430);
double r15432 = r15431 * r15424;
double r15433 = r15418 * r15416;
double r15434 = r15432 + r15433;
double r15435 = sin(r15434);
double r15436 = r15428 * r15435;
return r15436;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 32.7
rmApplied *-un-lft-identity32.7
Applied sqrt-prod32.7
Simplified32.7
Simplified18.9
rmApplied add-exp-log18.9
Simplified3.5
rmApplied add-cube-cbrt3.5
Applied associate-*l*3.5
rmApplied add-cube-cbrt3.5
Final simplification3.5
herbie shell --seed 2020060 +o rules:numerics
(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)))))