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 - \left(\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}} \cdot \left(\left(\sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}} \cdot \sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}}\right) \cdot \sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}}\right)\right) \cdot \left(y.im \cdot \left(\left(\sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}} \cdot \sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}}\right) \cdot \sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}}\right)\right)} \cdot \sin \left(\mathsf{fma}\left(y.im, \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\right)\right)double f(double x_re, double x_im, double y_re, double y_im) {
double r1789171 = x_re;
double r1789172 = r1789171 * r1789171;
double r1789173 = x_im;
double r1789174 = r1789173 * r1789173;
double r1789175 = r1789172 + r1789174;
double r1789176 = sqrt(r1789175);
double r1789177 = log(r1789176);
double r1789178 = y_re;
double r1789179 = r1789177 * r1789178;
double r1789180 = atan2(r1789173, r1789171);
double r1789181 = y_im;
double r1789182 = r1789180 * r1789181;
double r1789183 = r1789179 - r1789182;
double r1789184 = exp(r1789183);
double r1789185 = r1789177 * r1789181;
double r1789186 = r1789180 * r1789178;
double r1789187 = r1789185 + r1789186;
double r1789188 = sin(r1789187);
double r1789189 = r1789184 * r1789188;
return r1789189;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1789190 = x_re;
double r1789191 = x_im;
double r1789192 = hypot(r1789190, r1789191);
double r1789193 = log(r1789192);
double r1789194 = y_re;
double r1789195 = r1789193 * r1789194;
double r1789196 = atan2(r1789191, r1789190);
double r1789197 = cbrt(r1789196);
double r1789198 = cbrt(r1789197);
double r1789199 = r1789198 * r1789198;
double r1789200 = r1789199 * r1789198;
double r1789201 = r1789197 * r1789200;
double r1789202 = y_im;
double r1789203 = r1789202 * r1789200;
double r1789204 = r1789201 * r1789203;
double r1789205 = r1789195 - r1789204;
double r1789206 = exp(r1789205);
double r1789207 = r1789194 * r1789196;
double r1789208 = fma(r1789202, r1789193, r1789207);
double r1789209 = sin(r1789208);
double r1789210 = r1789206 * r1789209;
return r1789210;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 32.8
Simplified3.4
rmApplied add-cube-cbrt3.4
Applied associate-*l*3.4
rmApplied add-cube-cbrt3.4
rmApplied add-cube-cbrt3.4
Final simplification3.4
herbie shell --seed 2019144 +o rules:numerics
(FPCore (x.re x.im y.re y.im)
:name "powComplex, imaginary part"
(* (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)))))