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)\frac{\cos \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right) \cdot \cos \left(\log \left(\mathsf{hypot}\left(x.re, x.im\right)\right) \cdot y.im\right) - \sin \left(\log \left(\mathsf{hypot}\left(x.re, x.im\right)\right) \cdot y.im\right) \cdot \left(\left(\sqrt[3]{\sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)} \cdot \sqrt[3]{\sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)}\right) \cdot \sqrt[3]{\sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)}\right)}{e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im - \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right) \cdot y.re}}double f(double x_re, double x_im, double y_re, double y_im) {
double r1138833 = x_re;
double r1138834 = r1138833 * r1138833;
double r1138835 = x_im;
double r1138836 = r1138835 * r1138835;
double r1138837 = r1138834 + r1138836;
double r1138838 = sqrt(r1138837);
double r1138839 = log(r1138838);
double r1138840 = y_re;
double r1138841 = r1138839 * r1138840;
double r1138842 = atan2(r1138835, r1138833);
double r1138843 = y_im;
double r1138844 = r1138842 * r1138843;
double r1138845 = r1138841 - r1138844;
double r1138846 = exp(r1138845);
double r1138847 = r1138839 * r1138843;
double r1138848 = r1138842 * r1138840;
double r1138849 = r1138847 + r1138848;
double r1138850 = cos(r1138849);
double r1138851 = r1138846 * r1138850;
return r1138851;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1138852 = x_im;
double r1138853 = x_re;
double r1138854 = atan2(r1138852, r1138853);
double r1138855 = y_re;
double r1138856 = r1138854 * r1138855;
double r1138857 = cos(r1138856);
double r1138858 = hypot(r1138853, r1138852);
double r1138859 = log(r1138858);
double r1138860 = y_im;
double r1138861 = r1138859 * r1138860;
double r1138862 = cos(r1138861);
double r1138863 = r1138857 * r1138862;
double r1138864 = sin(r1138861);
double r1138865 = sin(r1138856);
double r1138866 = cbrt(r1138865);
double r1138867 = r1138866 * r1138866;
double r1138868 = r1138867 * r1138866;
double r1138869 = r1138864 * r1138868;
double r1138870 = r1138863 - r1138869;
double r1138871 = r1138854 * r1138860;
double r1138872 = r1138859 * r1138855;
double r1138873 = r1138871 - r1138872;
double r1138874 = exp(r1138873);
double r1138875 = r1138870 / r1138874;
return r1138875;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 32.2
Simplified3.4
rmApplied fma-udef3.4
Applied cos-sum3.4
rmApplied add-cube-cbrt3.4
Final simplification3.4
herbie shell --seed 2019162 +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)))))