Average Error: 26.2 → 15.1
Time: 11.3s
Precision: binary64
Cost: 28228
\[\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 \leq -3.2563987087522574 \cdot 10^{+81}:\\ \;\;\;\;\frac{x.im}{\frac{{y.im}^{2}}{y.re}} - \frac{x.re}{y.im}\\ \mathbf{elif}\;y.im \leq -8.232708701844971 \cdot 10^{-48}:\\ \;\;\;\;\frac{\frac{x.im \cdot y.re - y.im \cdot x.re}{\sqrt{{y.im}^{2} + {y.re}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\ \mathbf{elif}\;y.im \leq 1.8192329406445362 \cdot 10^{-149}:\\ \;\;\;\;\frac{x.im}{y.re} - \frac{x.re}{\frac{{y.re}^{2}}{y.im}}\\ \mathbf{elif}\;y.im \leq 2.0139063475555305 \cdot 10^{+69}:\\ \;\;\;\;\frac{\frac{x.im \cdot y.re - y.im \cdot x.re}{\sqrt{{y.im}^{2} + {y.re}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x.im}{\frac{{y.im}^{2}}{y.re}} - \frac{x.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 \leq -3.2563987087522574 \cdot 10^{+81}:\\
\;\;\;\;\frac{x.im}{\frac{{y.im}^{2}}{y.re}} - \frac{x.re}{y.im}\\

\mathbf{elif}\;y.im \leq -8.232708701844971 \cdot 10^{-48}:\\
\;\;\;\;\frac{\frac{x.im \cdot y.re - y.im \cdot x.re}{\sqrt{{y.im}^{2} + {y.re}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\

\mathbf{elif}\;y.im \leq 1.8192329406445362 \cdot 10^{-149}:\\
\;\;\;\;\frac{x.im}{y.re} - \frac{x.re}{\frac{{y.re}^{2}}{y.im}}\\

\mathbf{elif}\;y.im \leq 2.0139063475555305 \cdot 10^{+69}:\\
\;\;\;\;\frac{\frac{x.im \cdot y.re - y.im \cdot x.re}{\sqrt{{y.im}^{2} + {y.re}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\

\mathbf{else}:\\
\;\;\;\;\frac{x.im}{\frac{{y.im}^{2}}{y.re}} - \frac{x.re}{y.im}\\

\end{array}
(FPCore (x.re x.im y.re y.im)
 :precision binary64
 (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))
(FPCore (x.re x.im y.re y.im)
 :precision binary64
 (if (<= y.im -3.2563987087522574e+81)
   (- (/ x.im (/ (pow y.im 2.0) y.re)) (/ x.re y.im))
   (if (<= y.im -8.232708701844971e-48)
     (/
      (/
       (- (* x.im y.re) (* y.im x.re))
       (sqrt (+ (pow y.im 2.0) (pow y.re 2.0))))
      (sqrt (+ (* y.re y.re) (* y.im y.im))))
     (if (<= y.im 1.8192329406445362e-149)
       (- (/ x.im y.re) (/ x.re (/ (pow y.re 2.0) y.im)))
       (if (<= y.im 2.0139063475555305e+69)
         (/
          (/
           (- (* x.im y.re) (* y.im x.re))
           (sqrt (+ (pow y.im 2.0) (pow y.re 2.0))))
          (sqrt (+ (* y.re y.re) (* y.im y.im))))
         (- (/ x.im (/ (pow y.im 2.0) y.re)) (/ x.re y.im)))))))
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
	return ((x_46_im * y_46_re) - (x_46_re * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im));
}
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
	double tmp;
	if (y_46_im <= -3.2563987087522574e+81) {
		tmp = (x_46_im / (pow(y_46_im, 2.0) / y_46_re)) - (x_46_re / y_46_im);
	} else if (y_46_im <= -8.232708701844971e-48) {
		tmp = (((x_46_im * y_46_re) - (y_46_im * x_46_re)) / sqrt(pow(y_46_im, 2.0) + pow(y_46_re, 2.0))) / sqrt((y_46_re * y_46_re) + (y_46_im * y_46_im));
	} else if (y_46_im <= 1.8192329406445362e-149) {
		tmp = (x_46_im / y_46_re) - (x_46_re / (pow(y_46_re, 2.0) / y_46_im));
	} else if (y_46_im <= 2.0139063475555305e+69) {
		tmp = (((x_46_im * y_46_re) - (y_46_im * x_46_re)) / sqrt(pow(y_46_im, 2.0) + pow(y_46_re, 2.0))) / sqrt((y_46_re * y_46_re) + (y_46_im * y_46_im));
	} else {
		tmp = (x_46_im / (pow(y_46_im, 2.0) / y_46_re)) - (x_46_re / y_46_im);
	}
	return tmp;
}

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

Alternatives

Alternative 1
Error15.1
Cost8324
\[\begin{array}{l} \mathbf{if}\;y.im \leq -2.3901732992931246 \cdot 10^{+81}:\\ \;\;\;\;\frac{x.im}{\frac{{y.im}^{2}}{y.re}} - \frac{x.re}{y.im}\\ \mathbf{elif}\;y.im \leq -1.2878803517827424 \cdot 10^{-49}:\\ \;\;\;\;\frac{x.im \cdot y.re - y.im \cdot x.re}{y.re \cdot y.re + y.im \cdot y.im}\\ \mathbf{elif}\;y.im \leq 1.3404554011445771 \cdot 10^{-145}:\\ \;\;\;\;\frac{x.im}{y.re} - \frac{x.re}{\frac{{y.re}^{2}}{y.im}}\\ \mathbf{elif}\;y.im \leq 1.2069815748150215 \cdot 10^{+69}:\\ \;\;\;\;\frac{x.im \cdot y.re - y.im \cdot x.re}{y.re \cdot y.re + y.im \cdot y.im}\\ \mathbf{else}:\\ \;\;\;\;\frac{x.im}{\frac{{y.im}^{2}}{y.re}} - \frac{x.re}{y.im}\\ \end{array}\]
Alternative 2
Error15.9
Cost8003
\[\begin{array}{l} \mathbf{if}\;y.im \leq -5.2209511980358546 \cdot 10^{+81}:\\ \;\;\;\;\frac{-x.re}{y.im}\\ \mathbf{elif}\;y.im \leq -7.146998424621189 \cdot 10^{-50}:\\ \;\;\;\;\frac{x.im \cdot y.re - y.im \cdot x.re}{y.re \cdot y.re + y.im \cdot y.im}\\ \mathbf{elif}\;y.im \leq 3.8908836956847665 \cdot 10^{-149}:\\ \;\;\;\;\frac{x.im}{y.re} - \frac{x.re}{\frac{{y.re}^{2}}{y.im}}\\ \mathbf{elif}\;y.im \leq 1.2946963342904071 \cdot 10^{+70}:\\ \;\;\;\;\frac{x.im \cdot y.re - y.im \cdot x.re}{y.re \cdot y.re + y.im \cdot y.im}\\ \mathbf{else}:\\ \;\;\;\;\frac{-x.re}{y.im}\\ \end{array}\]
Alternative 3
Error16.7
Cost2244
\[\begin{array}{l} \mathbf{if}\;y.im \leq -5.2209511980358546 \cdot 10^{+81}:\\ \;\;\;\;\frac{-x.re}{y.im}\\ \mathbf{elif}\;y.im \leq -4.6048343682484033 \cdot 10^{-240}:\\ \;\;\;\;\frac{x.im \cdot y.re - y.im \cdot x.re}{y.re \cdot y.re + y.im \cdot y.im}\\ \mathbf{elif}\;y.im \leq 9.118125018073582 \cdot 10^{-148}:\\ \;\;\;\;\frac{x.im}{y.re}\\ \mathbf{elif}\;y.im \leq 1.3505017989061179 \cdot 10^{+70}:\\ \;\;\;\;\frac{x.im \cdot y.re - y.im \cdot x.re}{y.re \cdot y.re + y.im \cdot y.im}\\ \mathbf{else}:\\ \;\;\;\;\frac{-x.re}{y.im}\\ \end{array}\]
Alternative 4
Error22.5
Cost1667
\[\begin{array}{l} \mathbf{if}\;y.re \leq -5.812131874856144 \cdot 10^{-13}:\\ \;\;\;\;\frac{x.im}{y.re}\\ \mathbf{elif}\;y.re \leq 2.954263000042488 \cdot 10^{-61}:\\ \;\;\;\;\frac{-x.re}{y.im}\\ \mathbf{elif}\;y.re \leq 3.4647570315662663 \cdot 10^{+40}:\\ \;\;\;\;\frac{x.im \cdot y.re}{y.re \cdot y.re + y.im \cdot y.im}\\ \mathbf{elif}\;y.re \leq 9.247055853391496 \cdot 10^{+58}:\\ \;\;\;\;\frac{-x.re}{y.im}\\ \mathbf{else}:\\ \;\;\;\;\frac{x.im}{y.re}\\ \end{array}\]
Alternative 5
Error23.2
Cost584
\[\begin{array}{l} \mathbf{if}\;y.im \leq -8.128458494529882 \cdot 10^{+71} \lor \neg \left(y.im \leq 5.872366693829185 \cdot 10^{-06}\right):\\ \;\;\;\;\frac{-x.re}{y.im}\\ \mathbf{else}:\\ \;\;\;\;\frac{x.im}{y.re}\\ \end{array}\]
Alternative 6
Error35.1
Cost834
\[\begin{array}{l} \mathbf{if}\;y.im \leq -6.4465228986931395 \cdot 10^{+115}:\\ \;\;\;\;0\\ \mathbf{elif}\;y.im \leq 1.5347938031871036 \cdot 10^{+46}:\\ \;\;\;\;\frac{x.im}{y.re}\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]
Alternative 7
Error51.9
Cost64
\[0\]
Alternative 8
Error61.7
Cost64
\[1\]

Error

Derivation

  1. Split input into 3 regimes
  2. if y.im < -3.256398708752257e81 or 2.01390634755553049e69 < y.im

    1. Initial program 37.9

      \[\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-sqrt_binary64_112337.9

      \[\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-identity_binary64_110137.9

      \[\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-frac_binary64_110737.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. Simplified37.9

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

      \[\leadsto \frac{1}{\sqrt{{y.re}^{2} + {y.im}^{2}}} \cdot \color{blue}{\frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}\]
    8. Taylor expanded around 0 17.5

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

      \[\leadsto \color{blue}{\frac{x.im}{\frac{{y.im}^{2}}{y.re}} - \frac{x.re}{y.im}}\]
    10. Simplified16.9

      \[\leadsto \color{blue}{\frac{x.im}{\frac{{y.im}^{2}}{y.re}} - \frac{x.re}{y.im}}\]

    if -3.256398708752257e81 < y.im < -8.23270870184497108e-48 or 1.8192329406445362e-149 < y.im < 2.01390634755553049e69

    1. Initial program 14.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-sqrt_binary64_112314.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 associate-/r*_binary64_104514.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. Simplified14.6

      \[\leadsto \frac{\color{blue}{\frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
    6. Simplified14.6

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

    if -8.23270870184497108e-48 < y.im < 1.8192329406445362e-149

    1. Initial program 21.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-sqrt_binary64_112321.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-identity_binary64_110121.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-frac_binary64_110721.8

      \[\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. Simplified21.8

      \[\leadsto \color{blue}{\frac{1}{\sqrt{{y.re}^{2} + {y.im}^{2}}}} \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.8

      \[\leadsto \frac{1}{\sqrt{{y.re}^{2} + {y.im}^{2}}} \cdot \color{blue}{\frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}\]
    8. Taylor expanded around inf 12.3

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

      \[\leadsto \color{blue}{\frac{x.im}{y.re} - \frac{x.re}{\frac{{y.re}^{2}}{y.im}}}\]
    10. Simplified13.2

      \[\leadsto \color{blue}{\frac{x.im}{y.re} - \frac{x.re}{\frac{{y.re}^{2}}{y.im}}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification15.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;y.im \leq -3.2563987087522574 \cdot 10^{+81}:\\ \;\;\;\;\frac{x.im}{\frac{{y.im}^{2}}{y.re}} - \frac{x.re}{y.im}\\ \mathbf{elif}\;y.im \leq -8.232708701844971 \cdot 10^{-48}:\\ \;\;\;\;\frac{\frac{x.im \cdot y.re - y.im \cdot x.re}{\sqrt{{y.im}^{2} + {y.re}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\ \mathbf{elif}\;y.im \leq 1.8192329406445362 \cdot 10^{-149}:\\ \;\;\;\;\frac{x.im}{y.re} - \frac{x.re}{\frac{{y.re}^{2}}{y.im}}\\ \mathbf{elif}\;y.im \leq 2.0139063475555305 \cdot 10^{+69}:\\ \;\;\;\;\frac{\frac{x.im \cdot y.re - y.im \cdot x.re}{\sqrt{{y.im}^{2} + {y.re}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x.im}{\frac{{y.im}^{2}}{y.re}} - \frac{x.re}{y.im}\\ \end{array}\]

Reproduce

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