Average Error: 25.8 → 17.9
Time: 14.7s
Precision: binary64
Cost: 27272
\[\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
↓
\[\begin{array}{l}
\mathbf{if}\;y.im \leq -3.6836303645104744 \cdot 10^{+137} \lor \neg \left(y.im \leq 4.0463340212107907 \cdot 10^{+55}\right):\\
\;\;\;\;\frac{x.im}{y.im}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{y.re \cdot x.re + y.im \cdot x.im}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\end{array}\]
\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}↓
\begin{array}{l}
\mathbf{if}\;y.im \leq -3.6836303645104744 \cdot 10^{+137} \lor \neg \left(y.im \leq 4.0463340212107907 \cdot 10^{+55}\right):\\
\;\;\;\;\frac{x.im}{y.im}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{y.re \cdot x.re + y.im \cdot x.im}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\end{array}(FPCore (x.re x.im y.re y.im)
:precision binary64
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))
↓
(FPCore (x.re x.im y.re y.im)
:precision binary64
(if (or (<= y.im -3.6836303645104744e+137)
(not (<= y.im 4.0463340212107907e+55)))
(/ x.im y.im)
(/
(/
(+ (* y.re x.re) (* y.im x.im))
(sqrt (+ (pow y.re 2.0) (pow y.im 2.0))))
(sqrt (+ (* y.re y.re) (* y.im y.im))))))double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
return ((x_46_re * y_46_re) + (x_46_im * 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.6836303645104744e+137) || !(y_46_im <= 4.0463340212107907e+55)) {
tmp = x_46_im / y_46_im;
} else {
tmp = (((y_46_re * x_46_re) + (y_46_im * x_46_im)) / 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));
}
return tmp;
}
Try it out
Enter valid numbers for all inputs
Alternatives
| Alternative 1 |
|---|
| Error | 26.4 |
|---|
| Cost | 79424 |
|---|
\[\frac{\sqrt[3]{y.re \cdot x.re + y.im \cdot x.im} \cdot \sqrt[3]{y.re \cdot x.re + y.im \cdot x.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.re + y.im \cdot x.im}}{\sqrt[3]{{y.re}^{2} + {y.im}^{2}}}\]
| Alternative 2 |
|---|
| Error | 45.0 |
|---|
| Cost | 72512 |
|---|
\[\frac{\sqrt{y.re \cdot x.re + y.im \cdot x.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.re + y.im \cdot x.im}}{\sqrt[3]{{y.re}^{2} + {y.im}^{2}}}\]
| Alternative 3 |
|---|
| Error | 25.9 |
|---|
| Cost | 72128 |
|---|
\[\frac{1}{\sqrt{{y.re}^{2} + {y.im}^{2}}} \cdot \frac{y.re \cdot x.re + y.im \cdot x.im}{\sqrt{\sqrt{{y.re}^{2} + {y.im}^{2}}} \cdot \sqrt{\sqrt{{y.re}^{2} + {y.im}^{2}}}}\]
| Alternative 4 |
|---|
| Error | 26.4 |
|---|
| Cost | 60352 |
|---|
\[\frac{1}{\sqrt[3]{\frac{{y.re}^{2} + {y.im}^{2}}{y.re \cdot x.re + y.im \cdot x.im}} \cdot \left(\sqrt[3]{\frac{{y.re}^{2} + {y.im}^{2}}{y.re \cdot x.re + y.im \cdot x.im}} \cdot \sqrt[3]{\frac{{y.re}^{2} + {y.im}^{2}}{y.re \cdot x.re + y.im \cdot x.im}}\right)}\]
| Alternative 5 |
|---|
| Error | 26.2 |
|---|
| Cost | 60224 |
|---|
\[\sqrt[3]{\frac{y.re \cdot x.re + y.im \cdot x.im}{{y.re}^{2} + {y.im}^{2}}} \cdot \left(\sqrt[3]{\frac{y.re \cdot x.re + y.im \cdot x.im}{{y.re}^{2} + {y.im}^{2}}} \cdot \sqrt[3]{\frac{y.re \cdot x.re + y.im \cdot x.im}{{y.re}^{2} + {y.im}^{2}}}\right)\]
| Alternative 6 |
|---|
| Error | 26.2 |
|---|
| Cost | 59840 |
|---|
\[\frac{\sqrt[3]{y.re \cdot x.re + y.im \cdot x.im} \cdot \sqrt[3]{y.re \cdot x.re + y.im \cdot x.im}}{\sqrt{{y.re}^{2} + {y.im}^{2}}} \cdot \frac{\sqrt[3]{y.re \cdot x.re + y.im \cdot x.im}}{\sqrt{{y.re}^{2} + {y.im}^{2}}}\]
| Alternative 7 |
|---|
| Error | 26.3 |
|---|
| Cost | 59328 |
|---|
\[\frac{1}{\left(\sqrt[3]{{y.re}^{2} + {y.im}^{2}} \cdot \sqrt[3]{{y.re}^{2} + {y.im}^{2}}\right) \cdot \frac{\sqrt[3]{{y.re}^{2} + {y.im}^{2}}}{y.re \cdot x.re + y.im \cdot x.im}}\]
| Alternative 8 |
|---|
| Error | 26.3 |
|---|
| 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.re + y.im \cdot x.im}{\sqrt[3]{{y.re}^{2} + {y.im}^{2}}}\]
| Alternative 9 |
|---|
| Error | 44.8 |
|---|
| Cost | 52928 |
|---|
\[\frac{\sqrt{y.re \cdot x.re + y.im \cdot x.im}}{\sqrt{{y.re}^{2} + {y.im}^{2}}} \cdot \frac{\sqrt{y.re \cdot x.re + y.im \cdot x.im}}{\sqrt{{y.re}^{2} + {y.im}^{2}}}\]
| Alternative 10 |
|---|
| Error | 51.7 |
|---|
| Cost | 52672 |
|---|
\[\frac{1}{\sqrt{{y.re}^{2} + {y.im}^{2}}} \cdot \frac{y.re \cdot x.re + y.im \cdot x.im}{\sqrt{\sqrt{{y.re}^{2} + {y.im}^{2}}} \cdot \sqrt{y.re}}\]
| Alternative 11 |
|---|
| Error | 26.3 |
|---|
| Cost | 46528 |
|---|
\[\frac{\frac{y.re \cdot x.re + y.im \cdot x.im}{\sqrt[3]{{y.re}^{2} + {y.im}^{2}} \cdot \sqrt[3]{{y.re}^{2} + {y.im}^{2}}}}{\sqrt[3]{y.re \cdot y.re + y.im \cdot y.im}}\]
| Alternative 12 |
|---|
| Error | 40.0 |
|---|
| Cost | 40128 |
|---|
\[\sqrt{\frac{y.re \cdot x.re + y.im \cdot x.im}{{y.re}^{2} + {y.im}^{2}}} \cdot \sqrt{\frac{y.re \cdot x.re + y.im \cdot x.im}{{y.re}^{2} + {y.im}^{2}}}\]
| Alternative 13 |
|---|
| Error | 25.8 |
|---|
| Cost | 39744 |
|---|
\[\frac{1}{\sqrt{{y.re}^{2} + {y.im}^{2}}} \cdot \frac{y.re \cdot x.re + y.im \cdot x.im}{\sqrt{{y.re}^{2} + {y.im}^{2}}}\]
| Alternative 14 |
|---|
| Error | 26.3 |
|---|
| Cost | 33856 |
|---|
\[\left(\sqrt[3]{y.re \cdot x.re + y.im \cdot x.im} \cdot \sqrt[3]{y.re \cdot x.re + y.im \cdot x.im}\right) \cdot \frac{\sqrt[3]{y.re \cdot x.re + y.im \cdot x.im}}{{y.re}^{2} + {y.im}^{2}}\]
| Alternative 15 |
|---|
| Error | 44.8 |
|---|
| Cost | 26944 |
|---|
\[\sqrt{y.re \cdot x.re + y.im \cdot x.im} \cdot \frac{\sqrt{y.re \cdot x.re + y.im \cdot x.im}}{{y.re}^{2} + {y.im}^{2}}\]
| Alternative 16 |
|---|
| Error | 25.7 |
|---|
| Cost | 26944 |
|---|
\[\frac{\frac{y.re \cdot x.re + y.im \cdot x.im}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
| Alternative 17 |
|---|
| Error | 40.9 |
|---|
| Cost | 26496 |
|---|
\[\sqrt[3]{{\left(\frac{y.re \cdot x.re + y.im \cdot x.im}{{y.re}^{2} + {y.im}^{2}}\right)}^{3}}\]
| Alternative 18 |
|---|
| Error | 41.0 |
|---|
| Cost | 26432 |
|---|
\[e^{\log \left(\frac{y.re \cdot x.re + y.im \cdot x.im}{{y.re}^{2} + {y.im}^{2}}\right)}\]
| Alternative 19 |
|---|
| Error | 44.2 |
|---|
| Cost | 20992 |
|---|
\[\frac{1}{\left(\frac{y.re}{x.re} + \frac{{y.im}^{2}}{y.re} \cdot \frac{{x.im}^{2}}{{x.re}^{3}}\right) + \frac{y.im}{x.re} \cdot \left(\frac{y.im}{y.re} - \frac{x.im}{x.re}\right)}\]
| Alternative 20 |
|---|
| Error | 38.9 |
|---|
| Cost | 20992 |
|---|
\[\frac{1}{\frac{y.re}{y.im} \cdot \left(\frac{y.re}{x.im} + \frac{y.re \cdot {x.re}^{2}}{{x.im}^{3}}\right) + \left(\frac{y.im}{x.im} - \frac{y.re \cdot x.re}{{x.im}^{2}}\right)}\]
| Alternative 21 |
|---|
| Error | 47.4 |
|---|
| Cost | 20352 |
|---|
\[\frac{1}{\sqrt{{y.re}^{2} + {y.im}^{2}}} \cdot \frac{y.re \cdot x.re + y.im \cdot x.im}{-y.im}\]
| Alternative 22 |
|---|
| Error | 46.7 |
|---|
| Cost | 20352 |
|---|
\[\frac{1}{-y.im} \cdot \frac{y.re \cdot x.re + y.im \cdot x.im}{\sqrt{{y.re}^{2} + {y.im}^{2}}}\]
| Alternative 23 |
|---|
| Error | 54.7 |
|---|
| Cost | 15168 |
|---|
\[\frac{y.re \cdot x.re + y.im \cdot x.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 24 |
|---|
| Error | 51.8 |
|---|
| Cost | 14656 |
|---|
\[\frac{\frac{{y.re}^{2} \cdot \left(x.re \cdot x.re\right) - {y.im}^{2} \cdot \left(x.im \cdot x.im\right)}{y.re \cdot x.re - y.im \cdot x.im}}{y.re \cdot y.re + y.im \cdot y.im}\]
| Alternative 25 |
|---|
| Error | 41.5 |
|---|
| Cost | 14656 |
|---|
\[\frac{\left(y.re \cdot x.re\right) \cdot \left(y.re \cdot x.re\right) - \left(y.im \cdot x.im\right) \cdot \left(y.im \cdot x.im\right)}{\left({y.re}^{2} + {y.im}^{2}\right) \cdot \left(y.re \cdot x.re - y.im \cdot x.im\right)}\]
| Alternative 26 |
|---|
| Error | 44.8 |
|---|
| Cost | 14272 |
|---|
\[\frac{\sqrt{y.re \cdot x.re + y.im \cdot x.im} \cdot \sqrt{y.re \cdot x.re + y.im \cdot x.im}}{y.re \cdot y.re + y.im \cdot y.im}\]
| Alternative 27 |
|---|
| Error | 48.7 |
|---|
| Cost | 14144 |
|---|
\[\frac{y.re \cdot x.re + y.im \cdot x.im}{{y.re}^{4} - {y.im}^{4}} \cdot \left(y.re \cdot y.re - y.im \cdot y.im\right)\]
| Alternative 28 |
|---|
| Error | 45.5 |
|---|
| Cost | 13824 |
|---|
\[\frac{\sqrt[3]{{\left(y.re \cdot x.re + y.im \cdot x.im\right)}^{3}}}{y.re \cdot y.re + y.im \cdot y.im}\]
| Alternative 29 |
|---|
| Error | 26.0 |
|---|
| Cost | 13760 |
|---|
\[\left(y.re \cdot x.re + y.im \cdot x.im\right) \cdot \frac{1}{{y.re}^{2} + {y.im}^{2}}\]
| Alternative 30 |
|---|
| Error | 25.9 |
|---|
| Cost | 13760 |
|---|
\[\frac{1}{\frac{{y.re}^{2} + {y.im}^{2}}{y.re \cdot x.re + y.im \cdot x.im}}\]
| Alternative 31 |
|---|
| Error | 39.1 |
|---|
| Cost | 13504 |
|---|
\[\frac{1}{\frac{{y.re}^{2} + {y.im}^{2}}{y.im \cdot x.im}}\]
| Alternative 32 |
|---|
| Error | 39.5 |
|---|
| Cost | 13504 |
|---|
\[\frac{1}{\frac{{y.re}^{2} + {y.im}^{2}}{y.re \cdot x.re}}\]
| Alternative 33 |
|---|
| Error | 39.0 |
|---|
| Cost | 13376 |
|---|
\[\frac{y.im \cdot x.im}{{y.re}^{2} + {y.im}^{2}}\]
| Alternative 34 |
|---|
| Error | 39.4 |
|---|
| Cost | 13376 |
|---|
\[\frac{y.re \cdot x.re}{{y.re}^{2} + {y.im}^{2}}\]
| Alternative 35 |
|---|
| Error | 25.8 |
|---|
| Cost | 960 |
|---|
\[\frac{y.re \cdot x.re + y.im \cdot x.im}{y.re \cdot y.re + y.im \cdot y.im}\]
| Alternative 36 |
|---|
| Error | 39.4 |
|---|
| Cost | 704 |
|---|
\[\frac{y.re \cdot x.re}{y.re \cdot y.re + y.im \cdot y.im}\]
| Alternative 37 |
|---|
| Error | 39.0 |
|---|
| Cost | 704 |
|---|
\[\frac{y.im \cdot x.im}{y.re \cdot y.re + y.im \cdot y.im}\]
| Alternative 38 |
|---|
| Error | 37.9 |
|---|
| Cost | 320 |
|---|
\[\frac{1}{\frac{y.re}{x.re}}\]
| Alternative 39 |
|---|
| Error | 37.1 |
|---|
| Cost | 320 |
|---|
\[\frac{1}{\frac{y.im}{x.im}}\]
| Alternative 40 |
|---|
| Error | 37.8 |
|---|
| Cost | 192 |
|---|
\[\frac{x.re}{y.re}\]
| Alternative 41 |
|---|
| Error | 36.9 |
|---|
| Cost | 192 |
|---|
\[\frac{x.im}{y.im}\]
| Alternative 42 |
|---|
| Error | 61.6 |
|---|
| Cost | 64 |
|---|
\[1\]
| Alternative 43 |
|---|
| Error | 52.3 |
|---|
| Cost | 64 |
|---|
\[0\]
| Alternative 44 |
|---|
| Error | 61.6 |
|---|
| Cost | 64 |
|---|
\[-1\]
Error

Derivation
- Split input into 2 regimes
if y.im < -3.6836303645104744e137 or 4.0463340212107907e55 < y.im
Initial program 38.6
\[\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
Taylor expanded around 0 17.3
\[\leadsto \color{blue}{\frac{x.im}{y.im}}\]
Simplified17.3
\[\leadsto \color{blue}{\frac{x.im}{y.im}}\]
if -3.6836303645104744e137 < y.im < 4.0463340212107907e55
Initial program 18.4
\[\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
- Using strategy
rm Applied add-sqr-sqrt_binary64_78218.4
\[\leadsto \frac{x.re \cdot y.re + x.im \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_70418.3
\[\leadsto \color{blue}{\frac{\frac{x.re \cdot y.re + x.im \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}}}\]
Simplified18.3
\[\leadsto \frac{\color{blue}{\frac{x.re \cdot y.re + x.im \cdot y.im}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
Simplified18.3
\[\leadsto \color{blue}{\frac{\frac{y.re \cdot x.re + y.im \cdot x.im}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}\]
- Recombined 2 regimes into one program.
Final simplification17.9
\[\leadsto \begin{array}{l}
\mathbf{if}\;y.im \leq -3.6836303645104744 \cdot 10^{+137} \lor \neg \left(y.im \leq 4.0463340212107907 \cdot 10^{+55}\right):\\
\;\;\;\;\frac{x.im}{y.im}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{y.re \cdot x.re + y.im \cdot x.im}{\sqrt{{y.re}^{2} + {y.im}^{2}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\end{array}\]
Reproduce
herbie shell --seed 2021022
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, real part"
:precision binary64
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))