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 r23923 = x_re;
double r23924 = r23923 * r23923;
double r23925 = x_im;
double r23926 = r23925 * r23925;
double r23927 = r23924 + r23926;
double r23928 = sqrt(r23927);
double r23929 = log(r23928);
double r23930 = y_re;
double r23931 = r23929 * r23930;
double r23932 = atan2(r23925, r23923);
double r23933 = y_im;
double r23934 = r23932 * r23933;
double r23935 = r23931 - r23934;
double r23936 = exp(r23935);
double r23937 = r23929 * r23933;
double r23938 = r23932 * r23930;
double r23939 = r23937 + r23938;
double r23940 = cos(r23939);
double r23941 = r23936 * r23940;
return r23941;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r23942 = x_re;
double r23943 = r23942 * r23942;
double r23944 = x_im;
double r23945 = r23944 * r23944;
double r23946 = r23943 + r23945;
double r23947 = sqrt(r23946);
double r23948 = log(r23947);
double r23949 = y_re;
double r23950 = r23948 * r23949;
double r23951 = atan2(r23944, r23942);
double r23952 = y_im;
double r23953 = r23951 * r23952;
double r23954 = r23950 - r23953;
double r23955 = exp(r23954);
double r23956 = r23948 * r23952;
double r23957 = r23951 * r23949;
double r23958 = r23956 + r23957;
double r23959 = cos(r23958);
double r23960 = r23955 * r23959;
double r23961 = 0.0;
bool r23962 = r23960 <= r23961;
double r23963 = hypot(r23942, r23944);
double r23964 = log(r23963);
double r23965 = fma(r23964, r23952, r23957);
double r23966 = cbrt(r23965);
double r23967 = r23966 * r23966;
double r23968 = r23967 * r23966;
double r23969 = cos(r23968);
double r23970 = pow(r23963, r23949);
double r23971 = exp(r23953);
double r23972 = r23970 / r23971;
double r23973 = r23969 * r23972;
double r23974 = r23962 ? r23960 : r23973;
return r23974;
}



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)))))