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}\;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) \le 0.0:\\
\;\;\;\;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)\\
\mathbf{else}:\\
\;\;\;\;\cos \left(\left(\sqrt[3]{\mathsf{fma}\left(\log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), y.im, \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), y.im, \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(\log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), y.im, \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)}\right) \cdot \frac{{\left(\mathsf{hypot}\left(x.re, x.im\right)\right)}^{y.re}}{e^{\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 r23908 = x_re;
double r23909 = r23908 * r23908;
double r23910 = x_im;
double r23911 = r23910 * r23910;
double r23912 = r23909 + r23911;
double r23913 = sqrt(r23912);
double r23914 = log(r23913);
double r23915 = y_re;
double r23916 = r23914 * r23915;
double r23917 = atan2(r23910, r23908);
double r23918 = y_im;
double r23919 = r23917 * r23918;
double r23920 = r23916 - r23919;
double r23921 = exp(r23920);
double r23922 = r23914 * r23918;
double r23923 = r23917 * r23915;
double r23924 = r23922 + r23923;
double r23925 = cos(r23924);
double r23926 = r23921 * r23925;
return r23926;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r23927 = x_re;
double r23928 = r23927 * r23927;
double r23929 = x_im;
double r23930 = r23929 * r23929;
double r23931 = r23928 + r23930;
double r23932 = sqrt(r23931);
double r23933 = log(r23932);
double r23934 = y_re;
double r23935 = r23933 * r23934;
double r23936 = atan2(r23929, r23927);
double r23937 = y_im;
double r23938 = r23936 * r23937;
double r23939 = r23935 - r23938;
double r23940 = exp(r23939);
double r23941 = r23933 * r23937;
double r23942 = r23936 * r23934;
double r23943 = r23941 + r23942;
double r23944 = cos(r23943);
double r23945 = r23940 * r23944;
double r23946 = 0.0;
bool r23947 = r23945 <= r23946;
double r23948 = hypot(r23927, r23929);
double r23949 = log(r23948);
double r23950 = fma(r23949, r23937, r23942);
double r23951 = cbrt(r23950);
double r23952 = r23951 * r23951;
double r23953 = r23952 * r23951;
double r23954 = cos(r23953);
double r23955 = pow(r23948, r23934);
double r23956 = exp(r23938);
double r23957 = r23955 / r23956;
double r23958 = r23954 * r23957;
double r23959 = r23947 ? r23945 : r23958;
return r23959;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
if (* (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)))) < 0.0Initial program 4.2
if 0.0 < (* (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)))) Initial program 39.0
Simplified8.2
rmApplied add-cube-cbrt8.3
Final simplification6.1
herbie shell --seed 2019303 +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)))))