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}\;x.re \le -2759744.9040251518599689006805419921875:\\
\;\;\;\;e^{\log \left(-x.re\right) \cdot y.re - y.im \cdot \tan^{-1}_* \frac{x.im}{x.re}}\\
\mathbf{elif}\;x.re \le -5.32610268211259449984213034556843154695 \cdot 10^{-30}:\\
\;\;\;\;e^{\log \left(\log \left(e^{\sqrt{x.re \cdot x.re + x.im \cdot x.im}}\right)\right) \cdot y.re - y.im \cdot \tan^{-1}_* \frac{x.im}{x.re}}\\
\mathbf{elif}\;x.re \le -4.399901143579185647092718121671803160377 \cdot 10^{-310}:\\
\;\;\;\;e^{\log \left(-x.re\right) \cdot y.re - y.im \cdot \tan^{-1}_* \frac{x.im}{x.re}}\\
\mathbf{else}:\\
\;\;\;\;e^{y.re \cdot \log x.re - y.im \cdot \tan^{-1}_* \frac{x.im}{x.re}}\\
\end{array}double f(double x_re, double x_im, double y_re, double y_im) {
double r1384235 = x_re;
double r1384236 = r1384235 * r1384235;
double r1384237 = x_im;
double r1384238 = r1384237 * r1384237;
double r1384239 = r1384236 + r1384238;
double r1384240 = sqrt(r1384239);
double r1384241 = log(r1384240);
double r1384242 = y_re;
double r1384243 = r1384241 * r1384242;
double r1384244 = atan2(r1384237, r1384235);
double r1384245 = y_im;
double r1384246 = r1384244 * r1384245;
double r1384247 = r1384243 - r1384246;
double r1384248 = exp(r1384247);
double r1384249 = r1384241 * r1384245;
double r1384250 = r1384244 * r1384242;
double r1384251 = r1384249 + r1384250;
double r1384252 = cos(r1384251);
double r1384253 = r1384248 * r1384252;
return r1384253;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1384254 = x_re;
double r1384255 = -2759744.904025152;
bool r1384256 = r1384254 <= r1384255;
double r1384257 = -r1384254;
double r1384258 = log(r1384257);
double r1384259 = y_re;
double r1384260 = r1384258 * r1384259;
double r1384261 = y_im;
double r1384262 = x_im;
double r1384263 = atan2(r1384262, r1384254);
double r1384264 = r1384261 * r1384263;
double r1384265 = r1384260 - r1384264;
double r1384266 = exp(r1384265);
double r1384267 = -5.3261026821125945e-30;
bool r1384268 = r1384254 <= r1384267;
double r1384269 = r1384254 * r1384254;
double r1384270 = r1384262 * r1384262;
double r1384271 = r1384269 + r1384270;
double r1384272 = sqrt(r1384271);
double r1384273 = exp(r1384272);
double r1384274 = log(r1384273);
double r1384275 = log(r1384274);
double r1384276 = r1384275 * r1384259;
double r1384277 = r1384276 - r1384264;
double r1384278 = exp(r1384277);
double r1384279 = -4.3999011435792e-310;
bool r1384280 = r1384254 <= r1384279;
double r1384281 = log(r1384254);
double r1384282 = r1384259 * r1384281;
double r1384283 = r1384282 - r1384264;
double r1384284 = exp(r1384283);
double r1384285 = r1384280 ? r1384266 : r1384284;
double r1384286 = r1384268 ? r1384278 : r1384285;
double r1384287 = r1384256 ? r1384266 : r1384286;
return r1384287;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if x.re < -2759744.904025152 or -5.3261026821125945e-30 < x.re < -4.3999011435792e-310Initial program 32.6
Taylor expanded around 0 18.2
Taylor expanded around -inf 6.4
Simplified6.4
if -2759744.904025152 < x.re < -5.3261026821125945e-30Initial program 12.6
Taylor expanded around 0 6.7
rmApplied add-log-exp20.8
if -4.3999011435792e-310 < x.re Initial program 33.9
Taylor expanded around 0 20.9
Taylor expanded around inf 11.4
Final simplification9.3
herbie shell --seed 2019172
(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)))))