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^{\log \left(\mathsf{hypot}\left(x.re, x.im\right)\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\log \left(\mathsf{hypot}\left(x.re, x.im\right)\right) \cdot y.im + \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(\sqrt[3]{y.re} \cdot \sqrt[3]{y.re}\right)\right) \cdot \sqrt[3]{y.re}\right)double f(double x_re, double x_im, double y_re, double y_im) {
double r16170 = x_re;
double r16171 = r16170 * r16170;
double r16172 = x_im;
double r16173 = r16172 * r16172;
double r16174 = r16171 + r16173;
double r16175 = sqrt(r16174);
double r16176 = log(r16175);
double r16177 = y_re;
double r16178 = r16176 * r16177;
double r16179 = atan2(r16172, r16170);
double r16180 = y_im;
double r16181 = r16179 * r16180;
double r16182 = r16178 - r16181;
double r16183 = exp(r16182);
double r16184 = r16176 * r16180;
double r16185 = r16179 * r16177;
double r16186 = r16184 + r16185;
double r16187 = sin(r16186);
double r16188 = r16183 * r16187;
return r16188;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r16189 = x_re;
double r16190 = x_im;
double r16191 = hypot(r16189, r16190);
double r16192 = log(r16191);
double r16193 = y_re;
double r16194 = r16192 * r16193;
double r16195 = atan2(r16190, r16189);
double r16196 = y_im;
double r16197 = r16195 * r16196;
double r16198 = r16194 - r16197;
double r16199 = exp(r16198);
double r16200 = r16192 * r16196;
double r16201 = cbrt(r16193);
double r16202 = r16201 * r16201;
double r16203 = r16195 * r16202;
double r16204 = r16203 * r16201;
double r16205 = r16200 + r16204;
double r16206 = sin(r16205);
double r16207 = r16199 * r16206;
return r16207;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 33.3
rmApplied hypot-def19.2
rmApplied hypot-def3.8
rmApplied add-cube-cbrt4.0
Applied associate-*r*4.0
Final simplification4.0
herbie shell --seed 2020100 +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)))))