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(\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)}{e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im - 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 r532160 = x_re;
double r532161 = r532160 * r532160;
double r532162 = x_im;
double r532163 = r532162 * r532162;
double r532164 = r532161 + r532163;
double r532165 = sqrt(r532164);
double r532166 = log(r532165);
double r532167 = y_re;
double r532168 = r532166 * r532167;
double r532169 = atan2(r532162, r532160);
double r532170 = y_im;
double r532171 = r532169 * r532170;
double r532172 = r532168 - r532171;
double r532173 = exp(r532172);
double r532174 = r532166 * r532170;
double r532175 = r532169 * r532167;
double r532176 = r532174 + r532175;
double r532177 = cos(r532176);
double r532178 = r532173 * r532177;
return r532178;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r532179 = y_im;
double r532180 = x_re;
double r532181 = x_im;
double r532182 = hypot(r532180, r532181);
double r532183 = log(r532182);
double r532184 = atan2(r532181, r532180);
double r532185 = y_re;
double r532186 = r532184 * r532185;
double r532187 = fma(r532179, r532183, r532186);
double r532188 = cos(r532187);
double r532189 = r532184 * r532179;
double r532190 = r532185 * r532183;
double r532191 = r532189 - r532190;
double r532192 = exp(r532191);
double r532193 = r532188 / r532192;
return r532193;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 31.6
Simplified0.0
Final simplification0.0
herbie shell --seed 2019135 +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)))))