Average Error: 26.4 → 17.6
Time: 21.1s
Precision: 64
\[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
\[\frac{\frac{\sqrt[3]{x.im \cdot y.re - x.re \cdot y.im} \cdot \sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}}{\mathsf{hypot}\left(y.re, y.im\right)}}{\frac{\mathsf{hypot}\left(y.re, y.im\right)}{\sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}}}\]
\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}
\frac{\frac{\sqrt[3]{x.im \cdot y.re - x.re \cdot y.im} \cdot \sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}}{\mathsf{hypot}\left(y.re, y.im\right)}}{\frac{\mathsf{hypot}\left(y.re, y.im\right)}{\sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}}}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r5317842 = x_im;
        double r5317843 = y_re;
        double r5317844 = r5317842 * r5317843;
        double r5317845 = x_re;
        double r5317846 = y_im;
        double r5317847 = r5317845 * r5317846;
        double r5317848 = r5317844 - r5317847;
        double r5317849 = r5317843 * r5317843;
        double r5317850 = r5317846 * r5317846;
        double r5317851 = r5317849 + r5317850;
        double r5317852 = r5317848 / r5317851;
        return r5317852;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r5317853 = x_im;
        double r5317854 = y_re;
        double r5317855 = r5317853 * r5317854;
        double r5317856 = x_re;
        double r5317857 = y_im;
        double r5317858 = r5317856 * r5317857;
        double r5317859 = r5317855 - r5317858;
        double r5317860 = cbrt(r5317859);
        double r5317861 = r5317860 * r5317860;
        double r5317862 = hypot(r5317854, r5317857);
        double r5317863 = r5317861 / r5317862;
        double r5317864 = r5317862 / r5317860;
        double r5317865 = r5317863 / r5317864;
        return r5317865;
}

Error

Bits error versus x.re

Bits error versus x.im

Bits error versus y.re

Bits error versus y.im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 26.4

    \[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
  2. Simplified26.4

    \[\leadsto \color{blue}{\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{fma}\left(y.re, y.re, y.im \cdot y.im\right)}}\]
  3. Using strategy rm
  4. Applied add-sqr-sqrt26.4

    \[\leadsto \frac{x.im \cdot y.re - x.re \cdot y.im}{\color{blue}{\sqrt{\mathsf{fma}\left(y.re, y.re, y.im \cdot y.im\right)} \cdot \sqrt{\mathsf{fma}\left(y.re, y.re, y.im \cdot y.im\right)}}}\]
  5. Applied associate-/r*26.3

    \[\leadsto \color{blue}{\frac{\frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{\mathsf{fma}\left(y.re, y.re, y.im \cdot y.im\right)}}}{\sqrt{\mathsf{fma}\left(y.re, y.re, y.im \cdot y.im\right)}}}\]
  6. Using strategy rm
  7. Applied *-un-lft-identity26.3

    \[\leadsto \frac{\frac{x.im \cdot y.re - x.re \cdot y.im}{\color{blue}{1 \cdot \sqrt{\mathsf{fma}\left(y.re, y.re, y.im \cdot y.im\right)}}}}{\sqrt{\mathsf{fma}\left(y.re, y.re, y.im \cdot y.im\right)}}\]
  8. Applied add-cube-cbrt26.8

    \[\leadsto \frac{\frac{\color{blue}{\left(\sqrt[3]{x.im \cdot y.re - x.re \cdot y.im} \cdot \sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}\right) \cdot \sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}}}{1 \cdot \sqrt{\mathsf{fma}\left(y.re, y.re, y.im \cdot y.im\right)}}}{\sqrt{\mathsf{fma}\left(y.re, y.re, y.im \cdot y.im\right)}}\]
  9. Applied times-frac26.8

    \[\leadsto \frac{\color{blue}{\frac{\sqrt[3]{x.im \cdot y.re - x.re \cdot y.im} \cdot \sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}}{1} \cdot \frac{\sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}}{\sqrt{\mathsf{fma}\left(y.re, y.re, y.im \cdot y.im\right)}}}}{\sqrt{\mathsf{fma}\left(y.re, y.re, y.im \cdot y.im\right)}}\]
  10. Applied associate-/l*26.9

    \[\leadsto \color{blue}{\frac{\frac{\sqrt[3]{x.im \cdot y.re - x.re \cdot y.im} \cdot \sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}}{1}}{\frac{\sqrt{\mathsf{fma}\left(y.re, y.re, y.im \cdot y.im\right)}}{\frac{\sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}}{\sqrt{\mathsf{fma}\left(y.re, y.re, y.im \cdot y.im\right)}}}}}\]
  11. Simplified23.7

    \[\leadsto \frac{\frac{\sqrt[3]{x.im \cdot y.re - x.re \cdot y.im} \cdot \sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}}{1}}{\color{blue}{\mathsf{hypot}\left(y.re, y.im\right) \cdot \frac{\mathsf{hypot}\left(y.re, y.im\right)}{\sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}}}}\]
  12. Using strategy rm
  13. Applied associate-/r*17.6

    \[\leadsto \color{blue}{\frac{\frac{\frac{\sqrt[3]{x.im \cdot y.re - x.re \cdot y.im} \cdot \sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}}{1}}{\mathsf{hypot}\left(y.re, y.im\right)}}{\frac{\mathsf{hypot}\left(y.re, y.im\right)}{\sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}}}}\]
  14. Simplified17.6

    \[\leadsto \frac{\color{blue}{\frac{\sqrt[3]{x.im \cdot y.re - x.re \cdot y.im} \cdot \sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}}{\mathsf{hypot}\left(y.re, y.im\right)}}}{\frac{\mathsf{hypot}\left(y.re, y.im\right)}{\sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}}}\]
  15. Final simplification17.6

    \[\leadsto \frac{\frac{\sqrt[3]{x.im \cdot y.re - x.re \cdot y.im} \cdot \sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}}{\mathsf{hypot}\left(y.re, y.im\right)}}{\frac{\mathsf{hypot}\left(y.re, y.im\right)}{\sqrt[3]{x.im \cdot y.re - x.re \cdot y.im}}}\]

Reproduce

herbie shell --seed 2019174 +o rules:numerics
(FPCore (x.re x.im y.re y.im)
  :name "_divideComplex, imaginary part"
  (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))