double f(double x_re, double x_im, double y_re, double y_im) {
double r574676 = x_re;
double r574677 = r574676 * r574676;
double r574678 = x_im;
double r574679 = r574678 * r574678;
double r574680 = r574677 + r574679;
double r574681 = sqrt(r574680);
double r574682 = log(r574681);
double r574683 = y_re;
double r574684 = r574682 * r574683;
double r574685 = atan2(r574678, r574676);
double r574686 = y_im;
double r574687 = r574685 * r574686;
double r574688 = r574684 - r574687;
double r574689 = exp(r574688);
double r574690 = r574682 * r574686;
double r574691 = r574685 * r574683;
double r574692 = r574690 + r574691;
double r574693 = cos(r574692);
double r574694 = r574689 * r574693;
return r574694;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r574695 = x_re;
double r574696 = x_im;
double r574697 = hypot(r574695, r574696);
double r574698 = log(r574697);
double r574699 = y_re;
double r574700 = r574698 * r574699;
double r574701 = y_im;
double r574702 = atan2(r574696, r574695);
double r574703 = r574701 * r574702;
double r574704 = r574700 - r574703;
double r574705 = exp(r574704);
return r574705;
}
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(\sqrt{x.re^2 + x.im^2}^*\right) \cdot y.re - y.im \cdot \tan^{-1}_* \frac{x.im}{x.re}}


Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 31.0
Taylor expanded around 0 17.2
rmApplied hypot-def0
Final simplification0
herbie shell --seed 2019101 +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)))))