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)e^{\log \left(1 \cdot \mathsf{hypot}\left(x.re, x.im\right)\right) \cdot y.re - \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 r14187 = x_re;
double r14188 = r14187 * r14187;
double r14189 = x_im;
double r14190 = r14189 * r14189;
double r14191 = r14188 + r14190;
double r14192 = sqrt(r14191);
double r14193 = log(r14192);
double r14194 = y_re;
double r14195 = r14193 * r14194;
double r14196 = atan2(r14189, r14187);
double r14197 = y_im;
double r14198 = r14196 * r14197;
double r14199 = r14195 - r14198;
double r14200 = exp(r14199);
double r14201 = r14193 * r14197;
double r14202 = r14196 * r14194;
double r14203 = r14201 + r14202;
double r14204 = cos(r14203);
double r14205 = r14200 * r14204;
return r14205;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r14206 = 1.0;
double r14207 = x_re;
double r14208 = x_im;
double r14209 = hypot(r14207, r14208);
double r14210 = r14206 * r14209;
double r14211 = log(r14210);
double r14212 = y_re;
double r14213 = r14211 * r14212;
double r14214 = atan2(r14208, r14207);
double r14215 = y_im;
double r14216 = r14214 * r14215;
double r14217 = r14213 - r14216;
double r14218 = exp(r14217);
return r14218;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 33.3
Taylor expanded around 0 19.6
rmApplied *-un-lft-identity19.6
Applied sqrt-prod19.6
Simplified19.6
Simplified4.0
Final simplification4.0
herbie shell --seed 2020033 +o rules:numerics
(FPCore (x.re x.im y.re y.im)
:name "powComplex, real part"
:precision binary64
(* (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)))))