Average Error: 25.7 → 14.2
Time: 10.0s
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 -1.1437132202364462 \cdot 10^{+93}:\\
\;\;\;\;\frac{-x.re}{y.im}\\
\mathbf{elif}\;y.im \leq -2.5652367524611406 \cdot 10^{-141}:\\
\;\;\;\;\frac{\frac{y.re \cdot x.im - y.im \cdot x.re}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\mathbf{elif}\;y.im \leq 1.5711842677325443 \cdot 10^{-128}:\\
\;\;\;\;\frac{x.im}{y.re} - \frac{y.im \cdot x.re}{{y.re}^{2}}\\
\mathbf{elif}\;y.im \leq 1.400268501927579 \cdot 10^{+125}:\\
\;\;\;\;\frac{\frac{y.re \cdot x.im - y.im \cdot x.re}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\mathbf{else}:\\
\;\;\;\;\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 -1.1437132202364462 \cdot 10^{+93}:\\
\;\;\;\;\frac{-x.re}{y.im}\\
\mathbf{elif}\;y.im \leq -2.5652367524611406 \cdot 10^{-141}:\\
\;\;\;\;\frac{\frac{y.re \cdot x.im - y.im \cdot x.re}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\mathbf{elif}\;y.im \leq 1.5711842677325443 \cdot 10^{-128}:\\
\;\;\;\;\frac{x.im}{y.re} - \frac{y.im \cdot x.re}{{y.re}^{2}}\\
\mathbf{elif}\;y.im \leq 1.400268501927579 \cdot 10^{+125}:\\
\;\;\;\;\frac{\frac{y.re \cdot x.im - y.im \cdot x.re}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\mathbf{else}:\\
\;\;\;\;\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 -1.1437132202364462e+93)
(/ (- x.re) y.im)
(if (<= y.im -2.5652367524611406e-141)
(/
(/
(- (* y.re x.im) (* y.im x.re))
(sqrt (+ (pow y.re 2.0) (pow y.im 2.0))))
(sqrt (+ (* y.re y.re) (* y.im y.im))))
(if (<= y.im 1.5711842677325443e-128)
(- (/ x.im y.re) (/ (* y.im x.re) (pow y.re 2.0)))
(if (<= y.im 1.400268501927579e+125)
(/
(/
(- (* y.re x.im) (* y.im x.re))
(sqrt (+ (pow y.re 2.0) (pow y.im 2.0))))
(sqrt (+ (* y.re y.re) (* y.im y.im))))
(/ (- 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 <= -1.1437132202364462e+93) {
tmp = -x_46_re / y_46_im;
} else if (y_46_im <= -2.5652367524611406e-141) {
tmp = (((y_46_re * x_46_im) - (y_46_im * x_46_re)) / sqrt(pow(y_46_re, 2.0) + pow(y_46_im, 2.0))) / sqrt((y_46_re * y_46_re) + (y_46_im * y_46_im));
} else if (y_46_im <= 1.5711842677325443e-128) {
tmp = (x_46_im / y_46_re) - ((y_46_im * x_46_re) / pow(y_46_re, 2.0));
} else if (y_46_im <= 1.400268501927579e+125) {
tmp = (((y_46_re * x_46_im) - (y_46_im * x_46_re)) / sqrt(pow(y_46_re, 2.0) + pow(y_46_im, 2.0))) / sqrt((y_46_re * y_46_re) + (y_46_im * y_46_im));
} else {
tmp = -x_46_re / y_46_im;
}
return tmp;
}
Try it out
Enter valid numbers for all inputs
Alternatives
| Alternative 1 |
|---|
| Error | 26.3 |
|---|
| Cost | 79424 |
|---|
\[\frac{\sqrt[3]{y.re \cdot x.im - x.re \cdot y.im} \cdot \sqrt[3]{y.re \cdot x.im - x.re \cdot y.im}}{\sqrt[3]{{y.re}^{2} + {y.im}^{2}} \cdot \sqrt[3]{{y.re}^{2} + {y.im}^{2}}} \cdot \frac{\sqrt[3]{y.re \cdot x.im - x.re \cdot y.im}}{\sqrt[3]{{y.re}^{2} + {y.im}^{2}}}\]
| Alternative 2 |
|---|
| Error | 45.0 |
|---|
| Cost | 72512 |
|---|
\[\frac{\sqrt{y.re \cdot x.im - x.re \cdot y.im}}{\sqrt[3]{{y.re}^{2} + {y.im}^{2}} \cdot \sqrt[3]{{y.re}^{2} + {y.im}^{2}}} \cdot \frac{\sqrt{y.re \cdot x.im - x.re \cdot y.im}}{\sqrt[3]{{y.re}^{2} + {y.im}^{2}}}\]
| Alternative 3 |
|---|
| Error | 26.2 |
|---|
| Cost | 60224 |
|---|
\[\sqrt[3]{\frac{y.re \cdot x.im - x.re \cdot y.im}{{y.re}^{2} + {y.im}^{2}}} \cdot \left(\sqrt[3]{\frac{y.re \cdot x.im - x.re \cdot y.im}{{y.re}^{2} + {y.im}^{2}}} \cdot \sqrt[3]{\frac{y.re \cdot x.im - x.re \cdot y.im}{{y.re}^{2} + {y.im}^{2}}}\right)\]
| Alternative 4 |
|---|
| Error | 26.2 |
|---|
| Cost | 59840 |
|---|
\[\frac{\sqrt[3]{y.re \cdot x.im - x.re \cdot y.im} \cdot \sqrt[3]{y.re \cdot x.im - x.re \cdot y.im}}{\sqrt{{y.re}^{2} + {y.im}^{2}}} \cdot \frac{\sqrt[3]{y.re \cdot x.im - x.re \cdot y.im}}{\sqrt{{y.re}^{2} + {y.im}^{2}}}\]
| Alternative 5 |
|---|
| Error | 26.2 |
|---|
| Cost | 59328 |
|---|
\[\frac{1}{\sqrt[3]{{y.re}^{2} + {y.im}^{2}} \cdot \sqrt[3]{{y.re}^{2} + {y.im}^{2}}} \cdot \frac{y.re \cdot x.im - x.re \cdot y.im}{\sqrt[3]{{y.re}^{2} + {y.im}^{2}}}\]
| Alternative 6 |
|---|
| Error | 44.8 |
|---|
| Cost | 52928 |
|---|
\[\frac{\sqrt{y.re \cdot x.im - x.re \cdot y.im}}{\sqrt{{y.re}^{2} + {y.im}^{2}}} \cdot \frac{\sqrt{y.re \cdot x.im - x.re \cdot y.im}}{\sqrt{{y.re}^{2} + {y.im}^{2}}}\]
| Alternative 7 |
|---|
| Error | 27.5 |
|---|
| Cost | 52416 |
|---|
\[\frac{\frac{y.re \cdot x.im - x.re \cdot y.im}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}{e^{\log \left(\sqrt{{y.re}^{2} + {y.im}^{2}}\right)}}\]
| Alternative 8 |
|---|
| Error | 39.6 |
|---|
| Cost | 40128 |
|---|
\[\sqrt{\frac{y.re \cdot x.im - x.re \cdot y.im}{{y.re}^{2} + {y.im}^{2}}} \cdot \sqrt{\frac{y.re \cdot x.im - x.re \cdot y.im}{{y.re}^{2} + {y.im}^{2}}}\]
| Alternative 9 |
|---|
| Error | 25.7 |
|---|
| Cost | 39744 |
|---|
\[\frac{y.re \cdot x.im - x.re \cdot y.im}{\sqrt{{y.re}^{2} + {y.im}^{2}}} \cdot \frac{1}{\sqrt{{y.re}^{2} + {y.im}^{2}}}\]
| Alternative 10 |
|---|
| Error | 26.2 |
|---|
| Cost | 33856 |
|---|
\[\left(\sqrt[3]{y.re \cdot x.im - x.re \cdot y.im} \cdot \sqrt[3]{y.re \cdot x.im - x.re \cdot y.im}\right) \cdot \frac{\sqrt[3]{y.re \cdot x.im - x.re \cdot y.im}}{{y.re}^{2} + {y.im}^{2}}\]
| Alternative 11 |
|---|
| Error | 47.1 |
|---|
| Cost | 28096 |
|---|
\[\frac{\frac{{\left(y.re \cdot x.im\right)}^{3} - {\left(x.re \cdot y.im\right)}^{3}}{{y.re}^{2} + {y.im}^{2}}}{\left(y.re \cdot x.im\right) \cdot \left(y.re \cdot x.im\right) + \left(\left(x.re \cdot y.im\right) \cdot \left(x.re \cdot y.im\right) + \left(y.re \cdot x.im\right) \cdot \left(x.re \cdot y.im\right)\right)}\]
| Alternative 12 |
|---|
| Error | 25.7 |
|---|
| Cost | 26944 |
|---|
\[\frac{\frac{y.re \cdot x.im - x.re \cdot y.im}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
| Alternative 13 |
|---|
| Error | 44.8 |
|---|
| Cost | 26944 |
|---|
\[\sqrt{y.re \cdot x.im - x.re \cdot y.im} \cdot \frac{\sqrt{y.re \cdot x.im - x.re \cdot y.im}}{{y.re}^{2} + {y.im}^{2}}\]
| Alternative 14 |
|---|
| Error | 40.9 |
|---|
| Cost | 26496 |
|---|
\[\sqrt[3]{{\left(\frac{y.re \cdot x.im - x.re \cdot y.im}{{y.re}^{2} + {y.im}^{2}}\right)}^{3}}\]
| Alternative 15 |
|---|
| Error | 26.2 |
|---|
| Cost | 21184 |
|---|
\[\frac{\sqrt[3]{y.re \cdot x.im - x.re \cdot y.im} \cdot \left(\sqrt[3]{y.re \cdot x.im - x.re \cdot y.im} \cdot \sqrt[3]{y.re \cdot x.im - x.re \cdot y.im}\right)}{y.re \cdot y.re + y.im \cdot y.im}\]
| Alternative 16 |
|---|
| Error | 46.2 |
|---|
| Cost | 20160 |
|---|
\[\frac{\frac{y.re \cdot x.im - x.re \cdot y.im}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}{y.re}\]
| Alternative 17 |
|---|
| Error | 54.7 |
|---|
| Cost | 15168 |
|---|
\[\frac{y.re \cdot x.im - x.re \cdot y.im}{{y.re}^{6} + {y.im}^{6}} \cdot \left(\left(y.re \cdot y.re\right) \cdot \left(y.re \cdot y.re\right) + \left(\left(y.im \cdot y.im\right) \cdot \left(y.im \cdot y.im\right) - \left(y.re \cdot y.re\right) \cdot \left(y.im \cdot y.im\right)\right)\right)\]
| Alternative 18 |
|---|
| Error | 40.9 |
|---|
| Cost | 14656 |
|---|
\[\frac{\left(y.re \cdot x.im\right) \cdot \left(y.re \cdot x.im\right) - \left(x.re \cdot y.im\right) \cdot \left(x.re \cdot y.im\right)}{\left({y.re}^{2} + {y.im}^{2}\right) \cdot \left(y.re \cdot x.im + x.re \cdot y.im\right)}\]
| Alternative 19 |
|---|
| Error | 51.7 |
|---|
| Cost | 14656 |
|---|
\[\frac{\frac{{y.re}^{2} \cdot \left(x.im \cdot x.im\right) - {y.im}^{2} \cdot \left(x.re \cdot x.re\right)}{y.re \cdot x.im + x.re \cdot y.im}}{y.re \cdot y.re + y.im \cdot y.im}\]
| Alternative 20 |
|---|
| Error | 44.8 |
|---|
| Cost | 14272 |
|---|
\[\frac{\sqrt{y.re \cdot x.im - x.re \cdot y.im} \cdot \sqrt{y.re \cdot x.im - x.re \cdot y.im}}{y.re \cdot y.re + y.im \cdot y.im}\]
| Alternative 21 |
|---|
| Error | 48.5 |
|---|
| Cost | 14144 |
|---|
\[\frac{y.re \cdot x.im - x.re \cdot y.im}{{y.re}^{4} - {y.im}^{4}} \cdot \left(y.re \cdot y.re - y.im \cdot y.im\right)\]
| Alternative 22 |
|---|
| Error | 44.9 |
|---|
| Cost | 13824 |
|---|
\[\frac{\sqrt[3]{{\left(y.re \cdot x.im - x.re \cdot y.im\right)}^{3}}}{y.re \cdot y.re + y.im \cdot y.im}\]
| Alternative 23 |
|---|
| Error | 25.9 |
|---|
| Cost | 13760 |
|---|
\[\left(y.re \cdot x.im - x.re \cdot y.im\right) \cdot \frac{1}{{y.re}^{2} + {y.im}^{2}}\]
| Alternative 24 |
|---|
| Error | 25.9 |
|---|
| Cost | 13760 |
|---|
\[\frac{1}{\frac{{y.re}^{2} + {y.im}^{2}}{y.re \cdot x.im - x.re \cdot y.im}}\]
| Alternative 25 |
|---|
| Error | 38.9 |
|---|
| Cost | 13440 |
|---|
\[\frac{\left(-x.re\right) \cdot y.im}{{y.re}^{2} + {y.im}^{2}}\]
| Alternative 26 |
|---|
| Error | 38.8 |
|---|
| Cost | 13376 |
|---|
\[\frac{y.re \cdot x.im}{{y.re}^{2} + {y.im}^{2}}\]
| Alternative 27 |
|---|
| Error | 47.2 |
|---|
| Cost | 7552 |
|---|
\[\frac{\frac{y.re \cdot x.im - x.re \cdot y.im}{-y.im}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
| Alternative 28 |
|---|
| Error | 47.1 |
|---|
| Cost | 7488 |
|---|
\[\frac{\frac{y.re \cdot x.im - x.re \cdot y.im}{y.re}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
| Alternative 29 |
|---|
| Error | 46.3 |
|---|
| Cost | 7360 |
|---|
\[\frac{x.re - \frac{y.re \cdot x.im}{y.im}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
| Alternative 30 |
|---|
| Error | 46.1 |
|---|
| Cost | 7360 |
|---|
\[\frac{x.im - \frac{x.re \cdot y.im}{y.re}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
| Alternative 31 |
|---|
| Error | 46.7 |
|---|
| Cost | 7040 |
|---|
\[\frac{-x.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
| Alternative 32 |
|---|
| Error | 47.1 |
|---|
| Cost | 7040 |
|---|
\[\frac{-x.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
| Alternative 33 |
|---|
| Error | 35.2 |
|---|
| Cost | 7040 |
|---|
\[\frac{x.im}{y.re} - \frac{x.re \cdot y.im}{{y.re}^{2}}\]
| Alternative 34 |
|---|
| Error | 25.7 |
|---|
| Cost | 960 |
|---|
\[\frac{y.re \cdot x.im - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
| Alternative 35 |
|---|
| Error | 38.9 |
|---|
| Cost | 768 |
|---|
\[\frac{\left(-x.re\right) \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
| Alternative 36 |
|---|
| Error | 38.8 |
|---|
| Cost | 704 |
|---|
\[\frac{y.re \cdot x.im}{y.re \cdot y.re + y.im \cdot y.im}\]
| Alternative 37 |
|---|
| Error | 37.0 |
|---|
| Cost | 256 |
|---|
\[\frac{-x.re}{y.im}\]
| Alternative 38 |
|---|
| Error | 37.7 |
|---|
| Cost | 192 |
|---|
\[\frac{x.im}{y.re}\]
| Alternative 39 |
|---|
| Error | 61.6 |
|---|
| Cost | 64 |
|---|
\[1\]
| Alternative 40 |
|---|
| Error | 51.6 |
|---|
| Cost | 64 |
|---|
\[0\]
| Alternative 41 |
|---|
| Error | 61.7 |
|---|
| Cost | 64 |
|---|
\[-1\]
Error

Derivation
- Split input into 3 regimes
if y.im < -1.1437132202364462e93 or 1.40026850192757901e125 < y.im
Initial program 39.4
\[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
Taylor expanded around 0 15.3
\[\leadsto \color{blue}{-1 \cdot \frac{x.re}{y.im}}\]
Simplified15.3
\[\leadsto \color{blue}{\frac{-x.re}{y.im}}\]
Simplified15.3
\[\leadsto \color{blue}{\frac{-x.re}{y.im}}\]
if -1.1437132202364462e93 < y.im < -2.56523675246114059e-141 or 1.57118426773254431e-128 < y.im < 1.40026850192757901e125
Initial program 15.8
\[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
- Using strategy
rm Applied add-sqr-sqrt_binary64_75915.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}}}\]
Applied associate-/r*_binary64_68115.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}}}\]
Simplified15.8
\[\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}}\]
Simplified15.8
\[\leadsto \color{blue}{\frac{\frac{y.re \cdot x.im - x.re \cdot y.im}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}\]
if -2.56523675246114059e-141 < y.im < 1.57118426773254431e-128
Initial program 23.2
\[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
Taylor expanded around inf 10.2
\[\leadsto \color{blue}{\frac{x.im}{y.re} - \frac{y.im \cdot x.re}{{y.re}^{2}}}\]
Simplified10.2
\[\leadsto \color{blue}{\frac{x.im}{y.re} - \frac{x.re \cdot y.im}{{y.re}^{2}}}\]
Simplified10.2
\[\leadsto \color{blue}{\frac{x.im}{y.re} - \frac{x.re \cdot y.im}{{y.re}^{2}}}\]
- Recombined 3 regimes into one program.
Final simplification14.2
\[\leadsto \begin{array}{l}
\mathbf{if}\;y.im \leq -1.1437132202364462 \cdot 10^{+93}:\\
\;\;\;\;\frac{-x.re}{y.im}\\
\mathbf{elif}\;y.im \leq -2.5652367524611406 \cdot 10^{-141}:\\
\;\;\;\;\frac{\frac{y.re \cdot x.im - y.im \cdot x.re}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\mathbf{elif}\;y.im \leq 1.5711842677325443 \cdot 10^{-128}:\\
\;\;\;\;\frac{x.im}{y.re} - \frac{y.im \cdot x.re}{{y.re}^{2}}\\
\mathbf{elif}\;y.im \leq 1.400268501927579 \cdot 10^{+125}:\\
\;\;\;\;\frac{\frac{y.re \cdot x.im - y.im \cdot x.re}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-x.re}{y.im}\\
\end{array}\]
Reproduce
herbie shell --seed 2021042
(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))))