Average Error: 26.2 → 14.8
Time: 17.9s
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.im \le -2.020491544654025199922900102043661000373 \cdot 10^{153}:\\ \;\;\;\;\frac{y.re}{\frac{y.im \cdot y.im + y.re \cdot y.re}{x.im}} - \frac{x.re}{\frac{y.re}{\frac{y.im}{y.re}} + y.im}\\ \mathbf{elif}\;y.im \le 1.030193990259699638432445694492071758293 \cdot 10^{-162}:\\ \;\;\;\;\frac{y.re}{\frac{y.im \cdot y.im}{x.im} + \frac{y.re}{\frac{x.im}{y.re}}} - \frac{x.re}{\frac{y.im \cdot y.im + y.re \cdot y.re}{y.im}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{y.re}{y.im \cdot y.im + y.re \cdot y.re}}{\frac{1}{x.im}} - \frac{x.re}{y.im + \frac{y.re \cdot y.re}{y.im}}\\ \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.im \le -2.020491544654025199922900102043661000373 \cdot 10^{153}:\\
\;\;\;\;\frac{y.re}{\frac{y.im \cdot y.im + y.re \cdot y.re}{x.im}} - \frac{x.re}{\frac{y.re}{\frac{y.im}{y.re}} + y.im}\\

\mathbf{elif}\;y.im \le 1.030193990259699638432445694492071758293 \cdot 10^{-162}:\\
\;\;\;\;\frac{y.re}{\frac{y.im \cdot y.im}{x.im} + \frac{y.re}{\frac{x.im}{y.re}}} - \frac{x.re}{\frac{y.im \cdot y.im + y.re \cdot y.re}{y.im}}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{y.re}{y.im \cdot y.im + y.re \cdot y.re}}{\frac{1}{x.im}} - \frac{x.re}{y.im + \frac{y.re \cdot y.re}{y.im}}\\

\end{array}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r3241023 = x_im;
        double r3241024 = y_re;
        double r3241025 = r3241023 * r3241024;
        double r3241026 = x_re;
        double r3241027 = y_im;
        double r3241028 = r3241026 * r3241027;
        double r3241029 = r3241025 - r3241028;
        double r3241030 = r3241024 * r3241024;
        double r3241031 = r3241027 * r3241027;
        double r3241032 = r3241030 + r3241031;
        double r3241033 = r3241029 / r3241032;
        return r3241033;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r3241034 = y_im;
        double r3241035 = -2.0204915446540252e+153;
        bool r3241036 = r3241034 <= r3241035;
        double r3241037 = y_re;
        double r3241038 = r3241034 * r3241034;
        double r3241039 = r3241037 * r3241037;
        double r3241040 = r3241038 + r3241039;
        double r3241041 = x_im;
        double r3241042 = r3241040 / r3241041;
        double r3241043 = r3241037 / r3241042;
        double r3241044 = x_re;
        double r3241045 = r3241034 / r3241037;
        double r3241046 = r3241037 / r3241045;
        double r3241047 = r3241046 + r3241034;
        double r3241048 = r3241044 / r3241047;
        double r3241049 = r3241043 - r3241048;
        double r3241050 = 1.0301939902596996e-162;
        bool r3241051 = r3241034 <= r3241050;
        double r3241052 = r3241038 / r3241041;
        double r3241053 = r3241041 / r3241037;
        double r3241054 = r3241037 / r3241053;
        double r3241055 = r3241052 + r3241054;
        double r3241056 = r3241037 / r3241055;
        double r3241057 = r3241040 / r3241034;
        double r3241058 = r3241044 / r3241057;
        double r3241059 = r3241056 - r3241058;
        double r3241060 = r3241037 / r3241040;
        double r3241061 = 1.0;
        double r3241062 = r3241061 / r3241041;
        double r3241063 = r3241060 / r3241062;
        double r3241064 = r3241039 / r3241034;
        double r3241065 = r3241034 + r3241064;
        double r3241066 = r3241044 / r3241065;
        double r3241067 = r3241063 - r3241066;
        double r3241068 = r3241051 ? r3241059 : r3241067;
        double r3241069 = r3241036 ? r3241049 : r3241068;
        return r3241069;
}

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 3 regimes
  2. if y.im < -2.0204915446540252e+153

    1. Initial program 44.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-sqrt44.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 associate-/r*44.8

      \[\leadsto \color{blue}{\frac{\frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}\]
    5. Using strategy rm
    6. Applied div-sub44.8

      \[\leadsto \frac{\color{blue}{\frac{x.im \cdot y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} - \frac{x.re \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
    7. Applied div-sub44.8

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

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

      \[\leadsto \frac{y.re}{\frac{y.re \cdot y.re + y.im \cdot y.im}{x.im}} - \color{blue}{\frac{x.re}{\frac{y.re \cdot y.re + y.im \cdot y.im}{y.im}}}\]
    10. Taylor expanded around 0 16.5

      \[\leadsto \frac{y.re}{\frac{y.re \cdot y.re + y.im \cdot y.im}{x.im}} - \frac{x.re}{\color{blue}{y.im + \frac{{y.re}^{2}}{y.im}}}\]
    11. Simplified16.5

      \[\leadsto \frac{y.re}{\frac{y.re \cdot y.re + y.im \cdot y.im}{x.im}} - \frac{x.re}{\color{blue}{y.im + \frac{y.re \cdot y.re}{y.im}}}\]
    12. Using strategy rm
    13. Applied associate-/l*12.1

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

    if -2.0204915446540252e+153 < y.im < 1.0301939902596996e-162

    1. Initial program 19.6

      \[\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.6

      \[\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 associate-/r*19.5

      \[\leadsto \color{blue}{\frac{\frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}\]
    5. Using strategy rm
    6. Applied div-sub19.5

      \[\leadsto \frac{\color{blue}{\frac{x.im \cdot y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} - \frac{x.re \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
    7. Applied div-sub19.5

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

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

      \[\leadsto \frac{y.re}{\frac{y.re \cdot y.re + y.im \cdot y.im}{x.im}} - \color{blue}{\frac{x.re}{\frac{y.re \cdot y.re + y.im \cdot y.im}{y.im}}}\]
    10. Taylor expanded around 0 19.9

      \[\leadsto \frac{y.re}{\color{blue}{\frac{{y.im}^{2}}{x.im} + \frac{{y.re}^{2}}{x.im}}} - \frac{x.re}{\frac{y.re \cdot y.re + y.im \cdot y.im}{y.im}}\]
    11. Simplified15.9

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

    if 1.0301939902596996e-162 < y.im

    1. Initial program 27.6

      \[\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-sqrt27.6

      \[\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 associate-/r*27.6

      \[\leadsto \color{blue}{\frac{\frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}\]
    5. Using strategy rm
    6. Applied div-sub27.6

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

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

      \[\leadsto \color{blue}{\frac{y.re}{\frac{y.re \cdot y.re + y.im \cdot y.im}{x.im}}} - \frac{\frac{x.re \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
    9. Simplified25.5

      \[\leadsto \frac{y.re}{\frac{y.re \cdot y.re + y.im \cdot y.im}{x.im}} - \color{blue}{\frac{x.re}{\frac{y.re \cdot y.re + y.im \cdot y.im}{y.im}}}\]
    10. Taylor expanded around 0 16.1

      \[\leadsto \frac{y.re}{\frac{y.re \cdot y.re + y.im \cdot y.im}{x.im}} - \frac{x.re}{\color{blue}{y.im + \frac{{y.re}^{2}}{y.im}}}\]
    11. Simplified16.1

      \[\leadsto \frac{y.re}{\frac{y.re \cdot y.re + y.im \cdot y.im}{x.im}} - \frac{x.re}{\color{blue}{y.im + \frac{y.re \cdot y.re}{y.im}}}\]
    12. Using strategy rm
    13. Applied div-inv16.1

      \[\leadsto \frac{y.re}{\color{blue}{\left(y.re \cdot y.re + y.im \cdot y.im\right) \cdot \frac{1}{x.im}}} - \frac{x.re}{y.im + \frac{y.re \cdot y.re}{y.im}}\]
    14. Applied associate-/r*14.4

      \[\leadsto \color{blue}{\frac{\frac{y.re}{y.re \cdot y.re + y.im \cdot y.im}}{\frac{1}{x.im}}} - \frac{x.re}{y.im + \frac{y.re \cdot y.re}{y.im}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification14.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;y.im \le -2.020491544654025199922900102043661000373 \cdot 10^{153}:\\ \;\;\;\;\frac{y.re}{\frac{y.im \cdot y.im + y.re \cdot y.re}{x.im}} - \frac{x.re}{\frac{y.re}{\frac{y.im}{y.re}} + y.im}\\ \mathbf{elif}\;y.im \le 1.030193990259699638432445694492071758293 \cdot 10^{-162}:\\ \;\;\;\;\frac{y.re}{\frac{y.im \cdot y.im}{x.im} + \frac{y.re}{\frac{x.im}{y.re}}} - \frac{x.re}{\frac{y.im \cdot y.im + y.re \cdot y.re}{y.im}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{y.re}{y.im \cdot y.im + y.re \cdot y.re}}{\frac{1}{x.im}} - \frac{x.re}{y.im + \frac{y.re \cdot y.re}{y.im}}\\ \end{array}\]

Reproduce

herbie shell --seed 2019169 
(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))))