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)\frac{\left(\sqrt[3]{\cos \left(\mathsf{fma}\left(y.im, \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\right)} \cdot \sqrt[3]{\sqrt[3]{\cos \left(\mathsf{fma}\left(y.im, \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\right)} \cdot \left(\sqrt[3]{\cos \left(\mathsf{fma}\left(y.im, \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\right)} \cdot \sqrt[3]{\cos \left(\mathsf{fma}\left(y.im, \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\right)}\right)}\right) \cdot \sqrt[3]{\sqrt[3]{\cos \left(\mathsf{fma}\left(y.im, \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\right)} \cdot \left(\sqrt[3]{\cos \left(\mathsf{fma}\left(y.im, \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\right)} \cdot \sqrt[3]{\cos \left(\mathsf{fma}\left(y.im, \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\right)}\right)}}{e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im - y.re \cdot \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right)}}double f(double x_re, double x_im, double y_re, double y_im) {
double r1253542 = x_re;
double r1253543 = r1253542 * r1253542;
double r1253544 = x_im;
double r1253545 = r1253544 * r1253544;
double r1253546 = r1253543 + r1253545;
double r1253547 = sqrt(r1253546);
double r1253548 = log(r1253547);
double r1253549 = y_re;
double r1253550 = r1253548 * r1253549;
double r1253551 = atan2(r1253544, r1253542);
double r1253552 = y_im;
double r1253553 = r1253551 * r1253552;
double r1253554 = r1253550 - r1253553;
double r1253555 = exp(r1253554);
double r1253556 = r1253548 * r1253552;
double r1253557 = r1253551 * r1253549;
double r1253558 = r1253556 + r1253557;
double r1253559 = cos(r1253558);
double r1253560 = r1253555 * r1253559;
return r1253560;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1253561 = y_im;
double r1253562 = x_re;
double r1253563 = x_im;
double r1253564 = hypot(r1253562, r1253563);
double r1253565 = log(r1253564);
double r1253566 = atan2(r1253563, r1253562);
double r1253567 = y_re;
double r1253568 = r1253566 * r1253567;
double r1253569 = fma(r1253561, r1253565, r1253568);
double r1253570 = cos(r1253569);
double r1253571 = cbrt(r1253570);
double r1253572 = r1253571 * r1253571;
double r1253573 = r1253571 * r1253572;
double r1253574 = cbrt(r1253573);
double r1253575 = r1253571 * r1253574;
double r1253576 = r1253575 * r1253574;
double r1253577 = r1253566 * r1253561;
double r1253578 = r1253567 * r1253565;
double r1253579 = r1253577 - r1253578;
double r1253580 = exp(r1253579);
double r1253581 = r1253576 / r1253580;
return r1253581;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 32.7
Simplified3.3
rmApplied add-cube-cbrt3.3
rmApplied add-cube-cbrt3.3
rmApplied add-cube-cbrt3.3
Final simplification3.3
herbie shell --seed 2019172 +o rules:numerics
(FPCore (x.re x.im y.re y.im)
:name "powComplex, real part"
(* (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)))))