Average Error: 26.1 → 12.4
Time: 6.2s
Precision: 64
\[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
\[\begin{array}{l} \mathbf{if}\;y.re \le -5.24214216730030625 \cdot 10^{138}:\\ \;\;\;\;{\left(\frac{-1 \cdot x.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}\\ \mathbf{elif}\;y.re \le 3.2259502147858646 \cdot 10^{139}:\\ \;\;\;\;{\left(\frac{\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}\\ \mathbf{elif}\;y.re \le 1.9590575859470631 \cdot 10^{185}:\\ \;\;\;\;{\left(\frac{\frac{y.re}{\frac{{\left(\sqrt{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{3}}{x.im}} - \frac{y.im}{\frac{{\left(\sqrt{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{3}}{x.re}}}{\sqrt{\mathsf{hypot}\left(y.re, y.im\right)}}\right)}^{1}\\ \mathbf{else}:\\ \;\;\;\;{\left(\frac{x.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}\\ \end{array}\]
\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}
\begin{array}{l}
\mathbf{if}\;y.re \le -5.24214216730030625 \cdot 10^{138}:\\
\;\;\;\;{\left(\frac{-1 \cdot x.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}\\

\mathbf{elif}\;y.re \le 3.2259502147858646 \cdot 10^{139}:\\
\;\;\;\;{\left(\frac{\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}\\

\mathbf{elif}\;y.re \le 1.9590575859470631 \cdot 10^{185}:\\
\;\;\;\;{\left(\frac{\frac{y.re}{\frac{{\left(\sqrt{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{3}}{x.im}} - \frac{y.im}{\frac{{\left(\sqrt{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{3}}{x.re}}}{\sqrt{\mathsf{hypot}\left(y.re, y.im\right)}}\right)}^{1}\\

\mathbf{else}:\\
\;\;\;\;{\left(\frac{x.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}\\

\end{array}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r110806 = x_im;
        double r110807 = y_re;
        double r110808 = r110806 * r110807;
        double r110809 = x_re;
        double r110810 = y_im;
        double r110811 = r110809 * r110810;
        double r110812 = r110808 - r110811;
        double r110813 = r110807 * r110807;
        double r110814 = r110810 * r110810;
        double r110815 = r110813 + r110814;
        double r110816 = r110812 / r110815;
        return r110816;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r110817 = y_re;
        double r110818 = -5.242142167300306e+138;
        bool r110819 = r110817 <= r110818;
        double r110820 = -1.0;
        double r110821 = x_im;
        double r110822 = r110820 * r110821;
        double r110823 = y_im;
        double r110824 = hypot(r110817, r110823);
        double r110825 = r110822 / r110824;
        double r110826 = 1.0;
        double r110827 = pow(r110825, r110826);
        double r110828 = 3.2259502147858646e+139;
        bool r110829 = r110817 <= r110828;
        double r110830 = r110821 * r110817;
        double r110831 = x_re;
        double r110832 = r110831 * r110823;
        double r110833 = r110830 - r110832;
        double r110834 = r110833 / r110824;
        double r110835 = r110834 / r110824;
        double r110836 = pow(r110835, r110826);
        double r110837 = 1.959057585947063e+185;
        bool r110838 = r110817 <= r110837;
        double r110839 = sqrt(r110824);
        double r110840 = 3.0;
        double r110841 = pow(r110839, r110840);
        double r110842 = r110841 / r110821;
        double r110843 = r110817 / r110842;
        double r110844 = r110841 / r110831;
        double r110845 = r110823 / r110844;
        double r110846 = r110843 - r110845;
        double r110847 = r110846 / r110839;
        double r110848 = pow(r110847, r110826);
        double r110849 = r110821 / r110824;
        double r110850 = pow(r110849, r110826);
        double r110851 = r110838 ? r110848 : r110850;
        double r110852 = r110829 ? r110836 : r110851;
        double r110853 = r110819 ? r110827 : r110852;
        return r110853;
}

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. Split input into 4 regimes
  2. if y.re < -5.242142167300306e+138

    1. Initial program 43.7

      \[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt43.7

      \[\leadsto \frac{x.im \cdot y.re - x.re \cdot y.im}{\color{blue}{\sqrt{y.re \cdot y.re + y.im \cdot y.im} \cdot \sqrt{y.re \cdot y.re + y.im \cdot y.im}}}\]
    4. Applied *-un-lft-identity43.7

      \[\leadsto \frac{\color{blue}{1 \cdot \left(x.im \cdot y.re - x.re \cdot y.im\right)}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im} \cdot \sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
    5. Applied times-frac43.7

      \[\leadsto \color{blue}{\frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}\]
    6. Simplified43.7

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

      \[\leadsto \frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1} \cdot \color{blue}{\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}}\]
    8. Using strategy rm
    9. Applied pow128.3

      \[\leadsto \frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1} \cdot \color{blue}{{\left(\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}}\]
    10. Applied pow128.3

      \[\leadsto \color{blue}{{\left(\frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1}\right)}^{1}} \cdot {\left(\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}\]
    11. Applied pow-prod-down28.3

      \[\leadsto \color{blue}{{\left(\frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1} \cdot \frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}}\]
    12. Simplified28.3

      \[\leadsto {\color{blue}{\left(\frac{\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}}^{1}\]
    13. Taylor expanded around -inf 13.9

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

    if -5.242142167300306e+138 < y.re < 3.2259502147858646e+139

    1. Initial program 19.1

      \[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt19.1

      \[\leadsto \frac{x.im \cdot y.re - x.re \cdot y.im}{\color{blue}{\sqrt{y.re \cdot y.re + y.im \cdot y.im} \cdot \sqrt{y.re \cdot y.re + y.im \cdot y.im}}}\]
    4. Applied *-un-lft-identity19.1

      \[\leadsto \frac{\color{blue}{1 \cdot \left(x.im \cdot y.re - x.re \cdot y.im\right)}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im} \cdot \sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
    5. Applied times-frac19.1

      \[\leadsto \color{blue}{\frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}\]
    6. Simplified19.1

      \[\leadsto \color{blue}{\frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1}} \cdot \frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
    7. Simplified12.2

      \[\leadsto \frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1} \cdot \color{blue}{\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}}\]
    8. Using strategy rm
    9. Applied pow112.2

      \[\leadsto \frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1} \cdot \color{blue}{{\left(\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}}\]
    10. Applied pow112.2

      \[\leadsto \color{blue}{{\left(\frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1}\right)}^{1}} \cdot {\left(\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}\]
    11. Applied pow-prod-down12.2

      \[\leadsto \color{blue}{{\left(\frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1} \cdot \frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}}\]
    12. Simplified12.1

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

    if 3.2259502147858646e+139 < y.re < 1.959057585947063e+185

    1. Initial program 41.8

      \[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt41.8

      \[\leadsto \frac{x.im \cdot y.re - x.re \cdot y.im}{\color{blue}{\sqrt{y.re \cdot y.re + y.im \cdot y.im} \cdot \sqrt{y.re \cdot y.re + y.im \cdot y.im}}}\]
    4. Applied *-un-lft-identity41.8

      \[\leadsto \frac{\color{blue}{1 \cdot \left(x.im \cdot y.re - x.re \cdot y.im\right)}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im} \cdot \sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
    5. Applied times-frac41.9

      \[\leadsto \color{blue}{\frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}\]
    6. Simplified41.9

      \[\leadsto \color{blue}{\frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1}} \cdot \frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
    7. Simplified21.7

      \[\leadsto \frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1} \cdot \color{blue}{\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}}\]
    8. Using strategy rm
    9. Applied pow121.7

      \[\leadsto \frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1} \cdot \color{blue}{{\left(\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}}\]
    10. Applied pow121.7

      \[\leadsto \color{blue}{{\left(\frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1}\right)}^{1}} \cdot {\left(\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}\]
    11. Applied pow-prod-down21.7

      \[\leadsto \color{blue}{{\left(\frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1} \cdot \frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}}\]
    12. Simplified21.6

      \[\leadsto {\color{blue}{\left(\frac{\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}}^{1}\]
    13. Using strategy rm
    14. Applied add-sqr-sqrt21.8

      \[\leadsto {\left(\frac{\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}}{\color{blue}{\sqrt{\mathsf{hypot}\left(y.re, y.im\right)} \cdot \sqrt{\mathsf{hypot}\left(y.re, y.im\right)}}}\right)}^{1}\]
    15. Applied associate-/r*21.8

      \[\leadsto {\color{blue}{\left(\frac{\frac{\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}}{\sqrt{\mathsf{hypot}\left(y.re, y.im\right)}}}{\sqrt{\mathsf{hypot}\left(y.re, y.im\right)}}\right)}}^{1}\]
    16. Using strategy rm
    17. Applied div-sub21.8

      \[\leadsto {\left(\frac{\frac{\color{blue}{\frac{x.im \cdot y.re}{\mathsf{hypot}\left(y.re, y.im\right)} - \frac{x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}}}{\sqrt{\mathsf{hypot}\left(y.re, y.im\right)}}}{\sqrt{\mathsf{hypot}\left(y.re, y.im\right)}}\right)}^{1}\]
    18. Applied div-sub21.8

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

      \[\leadsto {\left(\frac{\color{blue}{\frac{y.re}{\frac{{\left(\sqrt{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{3}}{x.im}}} - \frac{\frac{x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}}{\sqrt{\mathsf{hypot}\left(y.re, y.im\right)}}}{\sqrt{\mathsf{hypot}\left(y.re, y.im\right)}}\right)}^{1}\]
    20. Simplified13.0

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

    if 1.959057585947063e+185 < y.re

    1. Initial program 43.0

      \[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt43.0

      \[\leadsto \frac{x.im \cdot y.re - x.re \cdot y.im}{\color{blue}{\sqrt{y.re \cdot y.re + y.im \cdot y.im} \cdot \sqrt{y.re \cdot y.re + y.im \cdot y.im}}}\]
    4. Applied *-un-lft-identity43.0

      \[\leadsto \frac{\color{blue}{1 \cdot \left(x.im \cdot y.re - x.re \cdot y.im\right)}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im} \cdot \sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
    5. Applied times-frac43.0

      \[\leadsto \color{blue}{\frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}\]
    6. Simplified43.0

      \[\leadsto \color{blue}{\frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1}} \cdot \frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
    7. Simplified31.0

      \[\leadsto \frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1} \cdot \color{blue}{\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}}\]
    8. Using strategy rm
    9. Applied pow131.0

      \[\leadsto \frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1} \cdot \color{blue}{{\left(\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}}\]
    10. Applied pow131.0

      \[\leadsto \color{blue}{{\left(\frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1}\right)}^{1}} \cdot {\left(\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}\]
    11. Applied pow-prod-down31.0

      \[\leadsto \color{blue}{{\left(\frac{1}{\mathsf{hypot}\left(y.re, y.im\right) \cdot 1} \cdot \frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}}\]
    12. Simplified31.0

      \[\leadsto {\color{blue}{\left(\frac{\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}}^{1}\]
    13. Taylor expanded around inf 12.2

      \[\leadsto {\left(\frac{\color{blue}{x.im}}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification12.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;y.re \le -5.24214216730030625 \cdot 10^{138}:\\ \;\;\;\;{\left(\frac{-1 \cdot x.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}\\ \mathbf{elif}\;y.re \le 3.2259502147858646 \cdot 10^{139}:\\ \;\;\;\;{\left(\frac{\frac{x.im \cdot y.re - x.re \cdot y.im}{\mathsf{hypot}\left(y.re, y.im\right)}}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}\\ \mathbf{elif}\;y.re \le 1.9590575859470631 \cdot 10^{185}:\\ \;\;\;\;{\left(\frac{\frac{y.re}{\frac{{\left(\sqrt{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{3}}{x.im}} - \frac{y.im}{\frac{{\left(\sqrt{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{3}}{x.re}}}{\sqrt{\mathsf{hypot}\left(y.re, y.im\right)}}\right)}^{1}\\ \mathbf{else}:\\ \;\;\;\;{\left(\frac{x.im}{\mathsf{hypot}\left(y.re, y.im\right)}\right)}^{1}\\ \end{array}\]

Reproduce

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