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)\begin{array}{l}
\mathbf{if}\;y.re \le -44.251669125944375:\\
\;\;\;\;e^{\log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}\\
\mathbf{else}:\\
\;\;\;\;e^{y.re \cdot \log \left(-x.re\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}\\
\end{array}double f(double x_re, double x_im, double y_re, double y_im) {
double r437963 = x_re;
double r437964 = r437963 * r437963;
double r437965 = x_im;
double r437966 = r437965 * r437965;
double r437967 = r437964 + r437966;
double r437968 = sqrt(r437967);
double r437969 = log(r437968);
double r437970 = y_re;
double r437971 = r437969 * r437970;
double r437972 = atan2(r437965, r437963);
double r437973 = y_im;
double r437974 = r437972 * r437973;
double r437975 = r437971 - r437974;
double r437976 = exp(r437975);
double r437977 = r437969 * r437973;
double r437978 = r437972 * r437970;
double r437979 = r437977 + r437978;
double r437980 = cos(r437979);
double r437981 = r437976 * r437980;
return r437981;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r437982 = y_re;
double r437983 = -44.251669125944375;
bool r437984 = r437982 <= r437983;
double r437985 = x_im;
double r437986 = r437985 * r437985;
double r437987 = x_re;
double r437988 = r437987 * r437987;
double r437989 = r437986 + r437988;
double r437990 = sqrt(r437989);
double r437991 = log(r437990);
double r437992 = r437991 * r437982;
double r437993 = atan2(r437985, r437987);
double r437994 = y_im;
double r437995 = r437993 * r437994;
double r437996 = r437992 - r437995;
double r437997 = exp(r437996);
double r437998 = -r437987;
double r437999 = log(r437998);
double r438000 = r437982 * r437999;
double r438001 = r438000 - r437995;
double r438002 = exp(r438001);
double r438003 = r437984 ? r437997 : r438002;
return r438003;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if y.re < -44.251669125944375Initial program 36.2
Taylor expanded around 0 0
if -44.251669125944375 < y.re Initial program 28.0
Taylor expanded around 0 25.6
Taylor expanded around -inf 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019119
(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)))))