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{\log \left(e^{\cos \left(\mathsf{fma}\left(y.im, \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\right)}\right)}{e^{\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 \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) - y.re \cdot \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right)}}double f(double x_re, double x_im, double y_re, double y_im) {
double r1281207 = x_re;
double r1281208 = r1281207 * r1281207;
double r1281209 = x_im;
double r1281210 = r1281209 * r1281209;
double r1281211 = r1281208 + r1281210;
double r1281212 = sqrt(r1281211);
double r1281213 = log(r1281212);
double r1281214 = y_re;
double r1281215 = r1281213 * r1281214;
double r1281216 = atan2(r1281209, r1281207);
double r1281217 = y_im;
double r1281218 = r1281216 * r1281217;
double r1281219 = r1281215 - r1281218;
double r1281220 = exp(r1281219);
double r1281221 = r1281213 * r1281217;
double r1281222 = r1281216 * r1281214;
double r1281223 = r1281221 + r1281222;
double r1281224 = cos(r1281223);
double r1281225 = r1281220 * r1281224;
return r1281225;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1281226 = y_im;
double r1281227 = x_re;
double r1281228 = x_im;
double r1281229 = hypot(r1281227, r1281228);
double r1281230 = log(r1281229);
double r1281231 = atan2(r1281228, r1281227);
double r1281232 = y_re;
double r1281233 = r1281231 * r1281232;
double r1281234 = fma(r1281226, r1281230, r1281233);
double r1281235 = cos(r1281234);
double r1281236 = exp(r1281235);
double r1281237 = log(r1281236);
double r1281238 = cbrt(r1281231);
double r1281239 = cbrt(r1281238);
double r1281240 = r1281239 * r1281239;
double r1281241 = r1281240 * r1281239;
double r1281242 = r1281241 * r1281238;
double r1281243 = r1281241 * r1281226;
double r1281244 = r1281242 * r1281243;
double r1281245 = r1281232 * r1281230;
double r1281246 = r1281244 - r1281245;
double r1281247 = exp(r1281246);
double r1281248 = r1281237 / r1281247;
return r1281248;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 33.5
Simplified3.5
rmApplied add-log-exp3.5
rmApplied add-cube-cbrt3.5
Applied associate-*l*3.5
rmApplied add-cube-cbrt3.5
rmApplied add-cube-cbrt3.5
Final simplification3.5
herbie shell --seed 2019170 +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)))))