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 r15039 = x_re;
double r15040 = r15039 * r15039;
double r15041 = x_im;
double r15042 = r15041 * r15041;
double r15043 = r15040 + r15042;
double r15044 = sqrt(r15043);
double r15045 = log(r15044);
double r15046 = y_re;
double r15047 = r15045 * r15046;
double r15048 = atan2(r15041, r15039);
double r15049 = y_im;
double r15050 = r15048 * r15049;
double r15051 = r15047 - r15050;
double r15052 = exp(r15051);
double r15053 = r15045 * r15049;
double r15054 = r15048 * r15046;
double r15055 = r15053 + r15054;
double r15056 = cos(r15055);
double r15057 = r15052 * r15056;
return r15057;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r15058 = 1.0;
double r15059 = x_re;
double r15060 = x_im;
double r15061 = hypot(r15059, r15060);
double r15062 = r15058 * r15061;
double r15063 = log(r15062);
double r15064 = y_re;
double r15065 = r15063 * r15064;
double r15066 = atan2(r15060, r15059);
double r15067 = y_im;
double r15068 = r15066 * r15067;
double r15069 = r15065 - r15068;
double r15070 = exp(r15069);
return r15070;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 33.2
Taylor expanded around 0 20.0
rmApplied *-un-lft-identity20.0
Applied sqrt-prod20.0
Simplified20.0
Simplified4.3
Final simplification4.3
herbie shell --seed 2020057 +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)))))