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 r16237 = x_re;
double r16238 = r16237 * r16237;
double r16239 = x_im;
double r16240 = r16239 * r16239;
double r16241 = r16238 + r16240;
double r16242 = sqrt(r16241);
double r16243 = log(r16242);
double r16244 = y_re;
double r16245 = r16243 * r16244;
double r16246 = atan2(r16239, r16237);
double r16247 = y_im;
double r16248 = r16246 * r16247;
double r16249 = r16245 - r16248;
double r16250 = exp(r16249);
double r16251 = r16243 * r16247;
double r16252 = r16246 * r16244;
double r16253 = r16251 + r16252;
double r16254 = sin(r16253);
double r16255 = r16250 * r16254;
return r16255;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r16256 = x_re;
double r16257 = x_im;
double r16258 = hypot(r16256, r16257);
double r16259 = log(r16258);
double r16260 = y_re;
double r16261 = r16259 * r16260;
double r16262 = atan2(r16257, r16256);
double r16263 = y_im;
double r16264 = r16262 * r16263;
double r16265 = r16261 - r16264;
double r16266 = exp(r16265);
double r16267 = r16259 * r16263;
double r16268 = cbrt(r16260);
double r16269 = r16268 * r16268;
double r16270 = r16262 * r16269;
double r16271 = r16270 * r16268;
double r16272 = r16267 + r16271;
double r16273 = sin(r16272);
double r16274 = r16266 * r16273;
return r16274;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 33.7
rmApplied hypot-def19.5
rmApplied hypot-def3.7
rmApplied add-cube-cbrt3.9
Applied associate-*r*3.9
Final simplification3.9
herbie shell --seed 2020039 +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)))))