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)\sin \left(\mathsf{fma}\left(y.im, \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), \sqrt[3]{y.re} \cdot \left(\left(\sqrt[3]{y.re} \cdot \sqrt[3]{y.re}\right) \cdot \tan^{-1}_* \frac{x.im}{x.re}\right)\right)\right) \cdot e^{\log \left(\mathsf{hypot}\left(x.re, x.im\right)\right) \cdot y.re - y.im \cdot \tan^{-1}_* \frac{x.im}{x.re}}double f(double x_re, double x_im, double y_re, double y_im) {
double r585658 = x_re;
double r585659 = r585658 * r585658;
double r585660 = x_im;
double r585661 = r585660 * r585660;
double r585662 = r585659 + r585661;
double r585663 = sqrt(r585662);
double r585664 = log(r585663);
double r585665 = y_re;
double r585666 = r585664 * r585665;
double r585667 = atan2(r585660, r585658);
double r585668 = y_im;
double r585669 = r585667 * r585668;
double r585670 = r585666 - r585669;
double r585671 = exp(r585670);
double r585672 = r585664 * r585668;
double r585673 = r585667 * r585665;
double r585674 = r585672 + r585673;
double r585675 = sin(r585674);
double r585676 = r585671 * r585675;
return r585676;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r585677 = y_im;
double r585678 = x_re;
double r585679 = x_im;
double r585680 = hypot(r585678, r585679);
double r585681 = log(r585680);
double r585682 = y_re;
double r585683 = cbrt(r585682);
double r585684 = r585683 * r585683;
double r585685 = atan2(r585679, r585678);
double r585686 = r585684 * r585685;
double r585687 = r585683 * r585686;
double r585688 = fma(r585677, r585681, r585687);
double r585689 = sin(r585688);
double r585690 = r585681 * r585682;
double r585691 = r585677 * r585685;
double r585692 = r585690 - r585691;
double r585693 = exp(r585692);
double r585694 = r585689 * r585693;
return r585694;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 33.0
Simplified3.4
rmApplied add-cube-cbrt3.6
Applied associate-*r*3.6
Final simplification3.6
herbie shell --seed 2019154 +o rules:numerics
(FPCore (x.re x.im y.re y.im)
:name "powComplex, imaginary part"
(* (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)))))