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 \cos \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)\mathsf{log1p}\left(\log \left(e^{\sqrt[3]{\left(\mathsf{expm1}\left(\cos \left(\mathsf{fma}\left(\log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), y.im, \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\right)\right) \cdot \mathsf{expm1}\left(\cos \left(\mathsf{fma}\left(\log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), y.im, \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\right)\right)\right) \cdot \mathsf{expm1}\left(\cos \left(\mathsf{fma}\left(\log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), y.im, \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\right)\right)}}\right)\right) \cdot e^{y.re \cdot \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}double f(double x_re, double x_im, double y_re, double y_im) {
double r1838683 = x_re;
double r1838684 = r1838683 * r1838683;
double r1838685 = x_im;
double r1838686 = r1838685 * r1838685;
double r1838687 = r1838684 + r1838686;
double r1838688 = sqrt(r1838687);
double r1838689 = log(r1838688);
double r1838690 = y_re;
double r1838691 = r1838689 * r1838690;
double r1838692 = atan2(r1838685, r1838683);
double r1838693 = y_im;
double r1838694 = r1838692 * r1838693;
double r1838695 = r1838691 - r1838694;
double r1838696 = exp(r1838695);
double r1838697 = r1838689 * r1838693;
double r1838698 = r1838692 * r1838690;
double r1838699 = r1838697 + r1838698;
double r1838700 = cos(r1838699);
double r1838701 = r1838696 * r1838700;
return r1838701;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1838702 = x_re;
double r1838703 = x_im;
double r1838704 = hypot(r1838702, r1838703);
double r1838705 = log(r1838704);
double r1838706 = y_im;
double r1838707 = atan2(r1838703, r1838702);
double r1838708 = y_re;
double r1838709 = r1838707 * r1838708;
double r1838710 = fma(r1838705, r1838706, r1838709);
double r1838711 = cos(r1838710);
double r1838712 = expm1(r1838711);
double r1838713 = r1838712 * r1838712;
double r1838714 = r1838713 * r1838712;
double r1838715 = cbrt(r1838714);
double r1838716 = exp(r1838715);
double r1838717 = log(r1838716);
double r1838718 = log1p(r1838717);
double r1838719 = r1838708 * r1838705;
double r1838720 = r1838707 * r1838706;
double r1838721 = r1838719 - r1838720;
double r1838722 = exp(r1838721);
double r1838723 = r1838718 * r1838722;
return r1838723;
}



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.2
rmApplied log1p-expm1-u3.2
rmApplied add-log-exp3.2
rmApplied add-cbrt-cube3.2
Final simplification3.2
herbie shell --seed 2019174 +o rules:numerics
(FPCore (x.re x.im y.re y.im)
:name "powComplex, real part"
(* (exp (- (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) (* (atan2 x.im x.re) y.im))) (cos (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re)))))