| Alternative 1 | |
|---|---|
| Accuracy | 99.8% |
| Cost | 13897 |
(FPCore (x) :precision binary64 (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))
(FPCore (x)
:precision binary64
(if (<= x -2100.0)
(- (/ -1.0 (pow x 4.0)) (+ (/ 3.0 x) (/ (+ x 3.0) (pow x 3.0))))
(if (<= x 440000.0)
(- (/ x (+ x 1.0)) (/ (+ x 1.0) (+ x -1.0)))
(- (/ -3.0 x) (/ (/ 1.0 x) x)))))double code(double x) {
return (x / (x + 1.0)) - ((x + 1.0) / (x - 1.0));
}
double code(double x) {
double tmp;
if (x <= -2100.0) {
tmp = (-1.0 / pow(x, 4.0)) - ((3.0 / x) + ((x + 3.0) / pow(x, 3.0)));
} else if (x <= 440000.0) {
tmp = (x / (x + 1.0)) - ((x + 1.0) / (x + -1.0));
} else {
tmp = (-3.0 / x) - ((1.0 / x) / x);
}
return tmp;
}
real(8) function code(x)
real(8), intent (in) :: x
code = (x / (x + 1.0d0)) - ((x + 1.0d0) / (x - 1.0d0))
end function
real(8) function code(x)
real(8), intent (in) :: x
real(8) :: tmp
if (x <= (-2100.0d0)) then
tmp = ((-1.0d0) / (x ** 4.0d0)) - ((3.0d0 / x) + ((x + 3.0d0) / (x ** 3.0d0)))
else if (x <= 440000.0d0) then
tmp = (x / (x + 1.0d0)) - ((x + 1.0d0) / (x + (-1.0d0)))
else
tmp = ((-3.0d0) / x) - ((1.0d0 / x) / x)
end if
code = tmp
end function
public static double code(double x) {
return (x / (x + 1.0)) - ((x + 1.0) / (x - 1.0));
}
public static double code(double x) {
double tmp;
if (x <= -2100.0) {
tmp = (-1.0 / Math.pow(x, 4.0)) - ((3.0 / x) + ((x + 3.0) / Math.pow(x, 3.0)));
} else if (x <= 440000.0) {
tmp = (x / (x + 1.0)) - ((x + 1.0) / (x + -1.0));
} else {
tmp = (-3.0 / x) - ((1.0 / x) / x);
}
return tmp;
}
def code(x): return (x / (x + 1.0)) - ((x + 1.0) / (x - 1.0))
def code(x): tmp = 0 if x <= -2100.0: tmp = (-1.0 / math.pow(x, 4.0)) - ((3.0 / x) + ((x + 3.0) / math.pow(x, 3.0))) elif x <= 440000.0: tmp = (x / (x + 1.0)) - ((x + 1.0) / (x + -1.0)) else: tmp = (-3.0 / x) - ((1.0 / x) / x) return tmp
function code(x) return Float64(Float64(x / Float64(x + 1.0)) - Float64(Float64(x + 1.0) / Float64(x - 1.0))) end
function code(x) tmp = 0.0 if (x <= -2100.0) tmp = Float64(Float64(-1.0 / (x ^ 4.0)) - Float64(Float64(3.0 / x) + Float64(Float64(x + 3.0) / (x ^ 3.0)))); elseif (x <= 440000.0) tmp = Float64(Float64(x / Float64(x + 1.0)) - Float64(Float64(x + 1.0) / Float64(x + -1.0))); else tmp = Float64(Float64(-3.0 / x) - Float64(Float64(1.0 / x) / x)); end return tmp end
function tmp = code(x) tmp = (x / (x + 1.0)) - ((x + 1.0) / (x - 1.0)); end
function tmp_2 = code(x) tmp = 0.0; if (x <= -2100.0) tmp = (-1.0 / (x ^ 4.0)) - ((3.0 / x) + ((x + 3.0) / (x ^ 3.0))); elseif (x <= 440000.0) tmp = (x / (x + 1.0)) - ((x + 1.0) / (x + -1.0)); else tmp = (-3.0 / x) - ((1.0 / x) / x); end tmp_2 = tmp; end
code[x_] := N[(N[(x / N[(x + 1.0), $MachinePrecision]), $MachinePrecision] - N[(N[(x + 1.0), $MachinePrecision] / N[(x - 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[x_] := If[LessEqual[x, -2100.0], N[(N[(-1.0 / N[Power[x, 4.0], $MachinePrecision]), $MachinePrecision] - N[(N[(3.0 / x), $MachinePrecision] + N[(N[(x + 3.0), $MachinePrecision] / N[Power[x, 3.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 440000.0], N[(N[(x / N[(x + 1.0), $MachinePrecision]), $MachinePrecision] - N[(N[(x + 1.0), $MachinePrecision] / N[(x + -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(-3.0 / x), $MachinePrecision] - N[(N[(1.0 / x), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision]]]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \leq -2100:\\
\;\;\;\;\frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \frac{x + 3}{{x}^{3}}\right)\\
\mathbf{elif}\;x \leq 440000:\\
\;\;\;\;\frac{x}{x + 1} - \frac{x + 1}{x + -1}\\
\mathbf{else}:\\
\;\;\;\;\frac{-3}{x} - \frac{\frac{1}{x}}{x}\\
\end{array}
Results
if x < -2100Initial program 7.9%
Applied egg-rr5.9%
[Start]7.9 | \[ \frac{x}{x + 1} - \frac{x + 1}{x - 1}
\] |
|---|---|
sub-neg [=>]7.9 | \[ \color{blue}{\frac{x}{x + 1} + \left(-\frac{x + 1}{x - 1}\right)}
\] |
+-commutative [=>]7.9 | \[ \color{blue}{\left(-\frac{x + 1}{x - 1}\right) + \frac{x}{x + 1}}
\] |
div-inv [=>]7.7 | \[ \left(-\color{blue}{\left(x + 1\right) \cdot \frac{1}{x - 1}}\right) + \frac{x}{x + 1}
\] |
distribute-rgt-neg-in [=>]7.7 | \[ \color{blue}{\left(x + 1\right) \cdot \left(-\frac{1}{x - 1}\right)} + \frac{x}{x + 1}
\] |
fma-def [=>]5.9 | \[ \color{blue}{\mathsf{fma}\left(x + 1, -\frac{1}{x - 1}, \frac{x}{x + 1}\right)}
\] |
sub-neg [=>]5.9 | \[ \mathsf{fma}\left(x + 1, -\frac{1}{\color{blue}{x + \left(-1\right)}}, \frac{x}{x + 1}\right)
\] |
metadata-eval [=>]5.9 | \[ \mathsf{fma}\left(x + 1, -\frac{1}{x + \color{blue}{-1}}, \frac{x}{x + 1}\right)
\] |
Taylor expanded in x around inf 99.3%
Simplified100.0%
[Start]99.3 | \[ -\left(\frac{1}{{x}^{4}} + \left(\frac{1}{{x}^{2}} + \left(3 \cdot \frac{1}{{x}^{3}} + 3 \cdot \frac{1}{x}\right)\right)\right)
\] |
|---|---|
distribute-neg-in [=>]99.3 | \[ \color{blue}{\left(-\frac{1}{{x}^{4}}\right) + \left(-\left(\frac{1}{{x}^{2}} + \left(3 \cdot \frac{1}{{x}^{3}} + 3 \cdot \frac{1}{x}\right)\right)\right)}
\] |
unsub-neg [=>]99.3 | \[ \color{blue}{\left(-\frac{1}{{x}^{4}}\right) - \left(\frac{1}{{x}^{2}} + \left(3 \cdot \frac{1}{{x}^{3}} + 3 \cdot \frac{1}{x}\right)\right)}
\] |
+-commutative [=>]99.3 | \[ \left(-\frac{1}{{x}^{4}}\right) - \color{blue}{\left(\left(3 \cdot \frac{1}{{x}^{3}} + 3 \cdot \frac{1}{x}\right) + \frac{1}{{x}^{2}}\right)}
\] |
+-commutative [=>]99.3 | \[ \left(-\frac{1}{{x}^{4}}\right) - \left(\color{blue}{\left(3 \cdot \frac{1}{x} + 3 \cdot \frac{1}{{x}^{3}}\right)} + \frac{1}{{x}^{2}}\right)
\] |
associate-+l+ [=>]99.3 | \[ \left(-\frac{1}{{x}^{4}}\right) - \color{blue}{\left(3 \cdot \frac{1}{x} + \left(3 \cdot \frac{1}{{x}^{3}} + \frac{1}{{x}^{2}}\right)\right)}
\] |
distribute-neg-frac [=>]99.3 | \[ \color{blue}{\frac{-1}{{x}^{4}}} - \left(3 \cdot \frac{1}{x} + \left(3 \cdot \frac{1}{{x}^{3}} + \frac{1}{{x}^{2}}\right)\right)
\] |
metadata-eval [=>]99.3 | \[ \frac{\color{blue}{-1}}{{x}^{4}} - \left(3 \cdot \frac{1}{x} + \left(3 \cdot \frac{1}{{x}^{3}} + \frac{1}{{x}^{2}}\right)\right)
\] |
associate-*r/ [=>]100.0 | \[ \frac{-1}{{x}^{4}} - \left(\color{blue}{\frac{3 \cdot 1}{x}} + \left(3 \cdot \frac{1}{{x}^{3}} + \frac{1}{{x}^{2}}\right)\right)
\] |
metadata-eval [=>]100.0 | \[ \frac{-1}{{x}^{4}} - \left(\frac{\color{blue}{3}}{x} + \left(3 \cdot \frac{1}{{x}^{3}} + \frac{1}{{x}^{2}}\right)\right)
\] |
+-commutative [=>]100.0 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \color{blue}{\left(\frac{1}{{x}^{2}} + 3 \cdot \frac{1}{{x}^{3}}\right)}\right)
\] |
unpow2 [=>]100.0 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \left(\frac{1}{\color{blue}{x \cdot x}} + 3 \cdot \frac{1}{{x}^{3}}\right)\right)
\] |
associate-*r/ [=>]100.0 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \left(\frac{1}{x \cdot x} + \color{blue}{\frac{3 \cdot 1}{{x}^{3}}}\right)\right)
\] |
metadata-eval [=>]100.0 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \left(\frac{1}{x \cdot x} + \frac{\color{blue}{3}}{{x}^{3}}\right)\right)
\] |
Applied egg-rr26.8%
[Start]100.0 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \left(\frac{1}{x \cdot x} + \frac{3}{{x}^{3}}\right)\right)
\] |
|---|---|
frac-add [=>]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \color{blue}{\frac{1 \cdot {x}^{3} + \left(x \cdot x\right) \cdot 3}{\left(x \cdot x\right) \cdot {x}^{3}}}\right)
\] |
div-inv [=>]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \color{blue}{\left(1 \cdot {x}^{3} + \left(x \cdot x\right) \cdot 3\right) \cdot \frac{1}{\left(x \cdot x\right) \cdot {x}^{3}}}\right)
\] |
*-un-lft-identity [<=]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \left(\color{blue}{{x}^{3}} + \left(x \cdot x\right) \cdot 3\right) \cdot \frac{1}{\left(x \cdot x\right) \cdot {x}^{3}}\right)
\] |
unpow3 [=>]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \left(\color{blue}{\left(x \cdot x\right) \cdot x} + \left(x \cdot x\right) \cdot 3\right) \cdot \frac{1}{\left(x \cdot x\right) \cdot {x}^{3}}\right)
\] |
distribute-lft-out [=>]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \color{blue}{\left(\left(x \cdot x\right) \cdot \left(x + 3\right)\right)} \cdot \frac{1}{\left(x \cdot x\right) \cdot {x}^{3}}\right)
\] |
pow2 [=>]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \left(\left(x \cdot x\right) \cdot \left(x + 3\right)\right) \cdot \frac{1}{\color{blue}{{x}^{2}} \cdot {x}^{3}}\right)
\] |
metadata-eval [<=]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \left(\left(x \cdot x\right) \cdot \left(x + 3\right)\right) \cdot \frac{1}{{x}^{\color{blue}{\left(\sqrt{4}\right)}} \cdot {x}^{3}}\right)
\] |
pow-prod-up [=>]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \left(\left(x \cdot x\right) \cdot \left(x + 3\right)\right) \cdot \frac{1}{\color{blue}{{x}^{\left(\sqrt{4} + 3\right)}}}\right)
\] |
metadata-eval [=>]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \left(\left(x \cdot x\right) \cdot \left(x + 3\right)\right) \cdot \frac{1}{{x}^{\left(\color{blue}{2} + 3\right)}}\right)
\] |
metadata-eval [=>]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \left(\left(x \cdot x\right) \cdot \left(x + 3\right)\right) \cdot \frac{1}{{x}^{\color{blue}{5}}}\right)
\] |
Simplified100.0%
[Start]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \left(\left(x \cdot x\right) \cdot \left(x + 3\right)\right) \cdot \frac{1}{{x}^{5}}\right)
\] |
|---|---|
associate-*r/ [=>]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \color{blue}{\frac{\left(\left(x \cdot x\right) \cdot \left(x + 3\right)\right) \cdot 1}{{x}^{5}}}\right)
\] |
*-rgt-identity [=>]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \frac{\color{blue}{\left(x \cdot x\right) \cdot \left(x + 3\right)}}{{x}^{5}}\right)
\] |
metadata-eval [<=]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \frac{\left(x \cdot x\right) \cdot \left(x + 3\right)}{{x}^{\color{blue}{\left(4 + 1\right)}}}\right)
\] |
pow-plus [<=]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \frac{\left(x \cdot x\right) \cdot \left(x + 3\right)}{\color{blue}{{x}^{4} \cdot x}}\right)
\] |
metadata-eval [<=]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \frac{\left(x \cdot x\right) \cdot \left(x + 3\right)}{{x}^{\color{blue}{\left(3 + 1\right)}} \cdot x}\right)
\] |
pow-plus [<=]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \frac{\left(x \cdot x\right) \cdot \left(x + 3\right)}{\color{blue}{\left({x}^{3} \cdot x\right)} \cdot x}\right)
\] |
associate-*r* [<=]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \frac{\left(x \cdot x\right) \cdot \left(x + 3\right)}{\color{blue}{{x}^{3} \cdot \left(x \cdot x\right)}}\right)
\] |
associate-/l/ [<=]26.8 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \color{blue}{\frac{\frac{\left(x \cdot x\right) \cdot \left(x + 3\right)}{x \cdot x}}{{x}^{3}}}\right)
\] |
associate-/l* [=>]39.3 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \frac{\color{blue}{\frac{x \cdot x}{\frac{x \cdot x}{x + 3}}}}{{x}^{3}}\right)
\] |
associate-/r/ [=>]39.3 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \frac{\color{blue}{\frac{x \cdot x}{x \cdot x} \cdot \left(x + 3\right)}}{{x}^{3}}\right)
\] |
*-inverses [=>]100.0 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \frac{\color{blue}{1} \cdot \left(x + 3\right)}{{x}^{3}}\right)
\] |
*-lft-identity [=>]100.0 | \[ \frac{-1}{{x}^{4}} - \left(\frac{3}{x} + \frac{\color{blue}{x + 3}}{{x}^{3}}\right)
\] |
if -2100 < x < 4.4e5Initial program 100.0%
if 4.4e5 < x Initial program 7.0%
Taylor expanded in x around inf 99.5%
Simplified100.0%
[Start]99.5 | \[ -\left(\frac{1}{{x}^{2}} + 3 \cdot \frac{1}{x}\right)
\] |
|---|---|
+-commutative [=>]99.5 | \[ -\color{blue}{\left(3 \cdot \frac{1}{x} + \frac{1}{{x}^{2}}\right)}
\] |
distribute-neg-in [=>]99.5 | \[ \color{blue}{\left(-3 \cdot \frac{1}{x}\right) + \left(-\frac{1}{{x}^{2}}\right)}
\] |
sub-neg [<=]99.5 | \[ \color{blue}{\left(-3 \cdot \frac{1}{x}\right) - \frac{1}{{x}^{2}}}
\] |
associate-*r/ [=>]100.0 | \[ \left(-\color{blue}{\frac{3 \cdot 1}{x}}\right) - \frac{1}{{x}^{2}}
\] |
metadata-eval [=>]100.0 | \[ \left(-\frac{\color{blue}{3}}{x}\right) - \frac{1}{{x}^{2}}
\] |
distribute-neg-frac [=>]100.0 | \[ \color{blue}{\frac{-3}{x}} - \frac{1}{{x}^{2}}
\] |
metadata-eval [=>]100.0 | \[ \frac{\color{blue}{-3}}{x} - \frac{1}{{x}^{2}}
\] |
unpow2 [=>]100.0 | \[ \frac{-3}{x} - \frac{1}{\color{blue}{x \cdot x}}
\] |
associate-/r* [=>]100.0 | \[ \frac{-3}{x} - \color{blue}{\frac{\frac{1}{x}}{x}}
\] |
Final simplification100.0%
| Alternative 1 | |
|---|---|
| Accuracy | 99.8% |
| Cost | 13897 |
| Alternative 2 | |
|---|---|
| Accuracy | 99.8% |
| Cost | 1097 |
| Alternative 3 | |
|---|---|
| Accuracy | 99.0% |
| Cost | 841 |
| Alternative 4 | |
|---|---|
| Accuracy | 99.0% |
| Cost | 841 |
| Alternative 5 | |
|---|---|
| Accuracy | 99.0% |
| Cost | 713 |
| Alternative 6 | |
|---|---|
| Accuracy | 98.5% |
| Cost | 584 |
| Alternative 7 | |
|---|---|
| Accuracy | 98.0% |
| Cost | 456 |
| Alternative 8 | |
|---|---|
| Accuracy | 50.0% |
| Cost | 64 |
herbie shell --seed 2023157
(FPCore (x)
:name "Asymptote C"
:precision binary64
(- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))