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 \sin \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^{\left(\sqrt[3]{y.re} \cdot \left(\sqrt[3]{y.re} \cdot \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right)\right)\right) \cdot \sqrt[3]{y.re} - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\sin \left(\log \left(1 \cdot \mathsf{hypot}\left(x.re, x.im\right)\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\right)\right)double f(double x_re, double x_im, double y_re, double y_im) {
double r14952 = x_re;
double r14953 = r14952 * r14952;
double r14954 = x_im;
double r14955 = r14954 * r14954;
double r14956 = r14953 + r14955;
double r14957 = sqrt(r14956);
double r14958 = log(r14957);
double r14959 = y_re;
double r14960 = r14958 * r14959;
double r14961 = atan2(r14954, r14952);
double r14962 = y_im;
double r14963 = r14961 * r14962;
double r14964 = r14960 - r14963;
double r14965 = exp(r14964);
double r14966 = r14958 * r14962;
double r14967 = r14961 * r14959;
double r14968 = r14966 + r14967;
double r14969 = sin(r14968);
double r14970 = r14965 * r14969;
return r14970;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r14971 = y_re;
double r14972 = cbrt(r14971);
double r14973 = x_re;
double r14974 = x_im;
double r14975 = hypot(r14973, r14974);
double r14976 = log(r14975);
double r14977 = r14972 * r14976;
double r14978 = r14972 * r14977;
double r14979 = r14978 * r14972;
double r14980 = atan2(r14974, r14973);
double r14981 = y_im;
double r14982 = r14980 * r14981;
double r14983 = r14979 - r14982;
double r14984 = exp(r14983);
double r14985 = 1.0;
double r14986 = r14985 * r14975;
double r14987 = log(r14986);
double r14988 = r14987 * r14981;
double r14989 = r14980 * r14971;
double r14990 = r14988 + r14989;
double r14991 = sin(r14990);
double r14992 = expm1(r14991);
double r14993 = log1p(r14992);
double r14994 = r14984 * r14993;
return r14994;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 33.1
rmApplied *-un-lft-identity33.1
Applied sqrt-prod33.1
Simplified33.1
Simplified19.1
rmApplied *-un-lft-identity19.1
Applied sqrt-prod19.1
Simplified19.1
Simplified3.3
rmApplied log1p-expm1-u3.3
rmApplied add-cube-cbrt3.3
Applied associate-*r*3.3
Simplified3.3
Final simplification3.3
herbie shell --seed 2020064 +o rules:numerics
(FPCore (x.re x.im y.re y.im)
:name "powComplex, imaginary part"
:precision binary64
(* (exp (- (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) (* (atan2 x.im x.re) y.im))) (sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re)))))