| Alternative 1 | |
|---|---|
| Error | 0.04% |
| Cost | 1737 |
(FPCore (x) :precision binary64 (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))
(FPCore (x)
:precision binary64
(if (<= x -150000000.0)
(/ -3.0 x)
(if (<= x 2400.0)
(/
(- -1.0 (fma x (/ (+ x -1.0) (- -1.0 x)) x))
(/ (/ (+ x -1.0) (+ x -1.0)) (/ 1.0 (+ x -1.0))))
(+
(+ (+ (/ -3.0 x) (/ (/ -1.0 x) x)) (/ -3.0 (pow x 3.0)))
(/ -1.0 (pow x 4.0))))))double code(double x) {
return (x / (x + 1.0)) - ((x + 1.0) / (x - 1.0));
}
double code(double x) {
double tmp;
if (x <= -150000000.0) {
tmp = -3.0 / x;
} else if (x <= 2400.0) {
tmp = (-1.0 - fma(x, ((x + -1.0) / (-1.0 - x)), x)) / (((x + -1.0) / (x + -1.0)) / (1.0 / (x + -1.0)));
} else {
tmp = (((-3.0 / x) + ((-1.0 / x) / x)) + (-3.0 / pow(x, 3.0))) + (-1.0 / pow(x, 4.0));
}
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 <= -150000000.0) tmp = Float64(-3.0 / x); elseif (x <= 2400.0) tmp = Float64(Float64(-1.0 - fma(x, Float64(Float64(x + -1.0) / Float64(-1.0 - x)), x)) / Float64(Float64(Float64(x + -1.0) / Float64(x + -1.0)) / Float64(1.0 / Float64(x + -1.0)))); else tmp = Float64(Float64(Float64(Float64(-3.0 / x) + Float64(Float64(-1.0 / x) / x)) + Float64(-3.0 / (x ^ 3.0))) + Float64(-1.0 / (x ^ 4.0))); end return 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, -150000000.0], N[(-3.0 / x), $MachinePrecision], If[LessEqual[x, 2400.0], N[(N[(-1.0 - N[(x * N[(N[(x + -1.0), $MachinePrecision] / N[(-1.0 - x), $MachinePrecision]), $MachinePrecision] + x), $MachinePrecision]), $MachinePrecision] / N[(N[(N[(x + -1.0), $MachinePrecision] / N[(x + -1.0), $MachinePrecision]), $MachinePrecision] / N[(1.0 / N[(x + -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(N[(-3.0 / x), $MachinePrecision] + N[(N[(-1.0 / x), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision] + N[(-3.0 / N[Power[x, 3.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / N[Power[x, 4.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;x \leq -150000000:\\
\;\;\;\;\frac{-3}{x}\\
\mathbf{elif}\;x \leq 2400:\\
\;\;\;\;\frac{-1 - \mathsf{fma}\left(x, \frac{x + -1}{-1 - x}, x\right)}{\frac{\frac{x + -1}{x + -1}}{\frac{1}{x + -1}}}\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\frac{-3}{x} + \frac{\frac{-1}{x}}{x}\right) + \frac{-3}{{x}^{3}}\right) + \frac{-1}{{x}^{4}}\\
\end{array}
if x < -1.5e8Initial program 93.59
Simplified93.59
[Start]93.59 | \[ \frac{x}{x + 1} - \frac{x + 1}{x - 1}
\] |
|---|---|
sub-neg [=>]93.59 | \[ \color{blue}{\frac{x}{x + 1} + \left(-\frac{x + 1}{x - 1}\right)}
\] |
+-commutative [=>]93.59 | \[ \color{blue}{\left(-\frac{x + 1}{x - 1}\right) + \frac{x}{x + 1}}
\] |
remove-double-neg [<=]93.59 | \[ \left(-\frac{x + 1}{x - 1}\right) + \color{blue}{\left(-\left(-\frac{x}{x + 1}\right)\right)}
\] |
sub-neg [<=]93.59 | \[ \color{blue}{\left(-\frac{x + 1}{x - 1}\right) - \left(-\frac{x}{x + 1}\right)}
\] |
distribute-neg-frac [=>]93.59 | \[ \color{blue}{\frac{-\left(x + 1\right)}{x - 1}} - \left(-\frac{x}{x + 1}\right)
\] |
neg-sub0 [=>]93.59 | \[ \frac{\color{blue}{0 - \left(x + 1\right)}}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
+-commutative [=>]93.59 | \[ \frac{0 - \color{blue}{\left(1 + x\right)}}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
associate--r+ [=>]93.59 | \[ \frac{\color{blue}{\left(0 - 1\right) - x}}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
metadata-eval [=>]93.59 | \[ \frac{\color{blue}{-1} - x}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
sub-neg [=>]93.59 | \[ \frac{-1 - x}{\color{blue}{x + \left(-1\right)}} - \left(-\frac{x}{x + 1}\right)
\] |
metadata-eval [=>]93.59 | \[ \frac{-1 - x}{x + \color{blue}{-1}} - \left(-\frac{x}{x + 1}\right)
\] |
/-rgt-identity [<=]93.59 | \[ \frac{-1 - x}{x + -1} - \color{blue}{\frac{-\frac{x}{x + 1}}{1}}
\] |
neg-mul-1 [=>]93.59 | \[ \frac{-1 - x}{x + -1} - \frac{\color{blue}{-1 \cdot \frac{x}{x + 1}}}{1}
\] |
metadata-eval [<=]93.59 | \[ \frac{-1 - x}{x + -1} - \frac{\color{blue}{\left(-1\right)} \cdot \frac{x}{x + 1}}{1}
\] |
*-commutative [=>]93.59 | \[ \frac{-1 - x}{x + -1} - \frac{\color{blue}{\frac{x}{x + 1} \cdot \left(-1\right)}}{1}
\] |
associate-/l* [=>]93.59 | \[ \frac{-1 - x}{x + -1} - \color{blue}{\frac{\frac{x}{x + 1}}{\frac{1}{-1}}}
\] |
metadata-eval [=>]93.59 | \[ \frac{-1 - x}{x + -1} - \frac{\frac{x}{x + 1}}{\frac{1}{\color{blue}{-1}}}
\] |
metadata-eval [=>]93.59 | \[ \frac{-1 - x}{x + -1} - \frac{\frac{x}{x + 1}}{\color{blue}{-1}}
\] |
metadata-eval [<=]93.59 | \[ \frac{-1 - x}{x + -1} - \frac{\frac{x}{x + 1}}{\color{blue}{-1}}
\] |
associate-/l/ [=>]93.59 | \[ \frac{-1 - x}{x + -1} - \color{blue}{\frac{x}{\left(-1\right) \cdot \left(x + 1\right)}}
\] |
metadata-eval [=>]93.59 | \[ \frac{-1 - x}{x + -1} - \frac{x}{\color{blue}{-1} \cdot \left(x + 1\right)}
\] |
neg-mul-1 [<=]93.59 | \[ \frac{-1 - x}{x + -1} - \frac{x}{\color{blue}{-\left(x + 1\right)}}
\] |
Taylor expanded in x around inf 0.39
if -1.5e8 < x < 2400Initial program 0.36
Simplified0.36
[Start]0.36 | \[ \frac{x}{x + 1} - \frac{x + 1}{x - 1}
\] |
|---|---|
sub-neg [=>]0.36 | \[ \color{blue}{\frac{x}{x + 1} + \left(-\frac{x + 1}{x - 1}\right)}
\] |
+-commutative [=>]0.36 | \[ \color{blue}{\left(-\frac{x + 1}{x - 1}\right) + \frac{x}{x + 1}}
\] |
remove-double-neg [<=]0.36 | \[ \left(-\frac{x + 1}{x - 1}\right) + \color{blue}{\left(-\left(-\frac{x}{x + 1}\right)\right)}
\] |
sub-neg [<=]0.36 | \[ \color{blue}{\left(-\frac{x + 1}{x - 1}\right) - \left(-\frac{x}{x + 1}\right)}
\] |
distribute-neg-frac [=>]0.36 | \[ \color{blue}{\frac{-\left(x + 1\right)}{x - 1}} - \left(-\frac{x}{x + 1}\right)
\] |
neg-sub0 [=>]0.36 | \[ \frac{\color{blue}{0 - \left(x + 1\right)}}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
+-commutative [=>]0.36 | \[ \frac{0 - \color{blue}{\left(1 + x\right)}}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
associate--r+ [=>]0.36 | \[ \frac{\color{blue}{\left(0 - 1\right) - x}}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
metadata-eval [=>]0.36 | \[ \frac{\color{blue}{-1} - x}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
sub-neg [=>]0.36 | \[ \frac{-1 - x}{\color{blue}{x + \left(-1\right)}} - \left(-\frac{x}{x + 1}\right)
\] |
metadata-eval [=>]0.36 | \[ \frac{-1 - x}{x + \color{blue}{-1}} - \left(-\frac{x}{x + 1}\right)
\] |
/-rgt-identity [<=]0.36 | \[ \frac{-1 - x}{x + -1} - \color{blue}{\frac{-\frac{x}{x + 1}}{1}}
\] |
neg-mul-1 [=>]0.36 | \[ \frac{-1 - x}{x + -1} - \frac{\color{blue}{-1 \cdot \frac{x}{x + 1}}}{1}
\] |
metadata-eval [<=]0.36 | \[ \frac{-1 - x}{x + -1} - \frac{\color{blue}{\left(-1\right)} \cdot \frac{x}{x + 1}}{1}
\] |
*-commutative [=>]0.36 | \[ \frac{-1 - x}{x + -1} - \frac{\color{blue}{\frac{x}{x + 1} \cdot \left(-1\right)}}{1}
\] |
associate-/l* [=>]0.36 | \[ \frac{-1 - x}{x + -1} - \color{blue}{\frac{\frac{x}{x + 1}}{\frac{1}{-1}}}
\] |
metadata-eval [=>]0.36 | \[ \frac{-1 - x}{x + -1} - \frac{\frac{x}{x + 1}}{\frac{1}{\color{blue}{-1}}}
\] |
metadata-eval [=>]0.36 | \[ \frac{-1 - x}{x + -1} - \frac{\frac{x}{x + 1}}{\color{blue}{-1}}
\] |
metadata-eval [<=]0.36 | \[ \frac{-1 - x}{x + -1} - \frac{\frac{x}{x + 1}}{\color{blue}{-1}}
\] |
associate-/l/ [=>]0.36 | \[ \frac{-1 - x}{x + -1} - \color{blue}{\frac{x}{\left(-1\right) \cdot \left(x + 1\right)}}
\] |
metadata-eval [=>]0.36 | \[ \frac{-1 - x}{x + -1} - \frac{x}{\color{blue}{-1} \cdot \left(x + 1\right)}
\] |
neg-mul-1 [<=]0.36 | \[ \frac{-1 - x}{x + -1} - \frac{x}{\color{blue}{-\left(x + 1\right)}}
\] |
Applied egg-rr0.36
Simplified0.35
[Start]0.36 | \[ \frac{-1 - \left(x + \frac{-1 + x}{-1 - x} \cdot x\right)}{\frac{-1 + x}{-1 - x} \cdot \left(-1 - x\right)}
\] |
|---|---|
+-commutative [=>]0.36 | \[ \frac{-1 - \color{blue}{\left(\frac{-1 + x}{-1 - x} \cdot x + x\right)}}{\frac{-1 + x}{-1 - x} \cdot \left(-1 - x\right)}
\] |
*-commutative [=>]0.36 | \[ \frac{-1 - \left(\color{blue}{x \cdot \frac{-1 + x}{-1 - x}} + x\right)}{\frac{-1 + x}{-1 - x} \cdot \left(-1 - x\right)}
\] |
fma-def [=>]0.35 | \[ \frac{-1 - \color{blue}{\mathsf{fma}\left(x, \frac{-1 + x}{-1 - x}, x\right)}}{\frac{-1 + x}{-1 - x} \cdot \left(-1 - x\right)}
\] |
+-commutative [=>]0.35 | \[ \frac{-1 - \mathsf{fma}\left(x, \frac{\color{blue}{x + -1}}{-1 - x}, x\right)}{\frac{-1 + x}{-1 - x} \cdot \left(-1 - x\right)}
\] |
*-commutative [=>]0.35 | \[ \frac{-1 - \mathsf{fma}\left(x, \frac{x + -1}{-1 - x}, x\right)}{\color{blue}{\left(-1 - x\right) \cdot \frac{-1 + x}{-1 - x}}}
\] |
+-commutative [=>]0.35 | \[ \frac{-1 - \mathsf{fma}\left(x, \frac{x + -1}{-1 - x}, x\right)}{\left(-1 - x\right) \cdot \frac{\color{blue}{x + -1}}{-1 - x}}
\] |
Applied egg-rr0.35
if 2400 < x Initial program 92.52
Simplified92.52
[Start]92.52 | \[ \frac{x}{x + 1} - \frac{x + 1}{x - 1}
\] |
|---|---|
sub-neg [=>]92.52 | \[ \color{blue}{\frac{x}{x + 1} + \left(-\frac{x + 1}{x - 1}\right)}
\] |
+-commutative [=>]92.52 | \[ \color{blue}{\left(-\frac{x + 1}{x - 1}\right) + \frac{x}{x + 1}}
\] |
remove-double-neg [<=]92.52 | \[ \left(-\frac{x + 1}{x - 1}\right) + \color{blue}{\left(-\left(-\frac{x}{x + 1}\right)\right)}
\] |
sub-neg [<=]92.52 | \[ \color{blue}{\left(-\frac{x + 1}{x - 1}\right) - \left(-\frac{x}{x + 1}\right)}
\] |
distribute-neg-frac [=>]92.52 | \[ \color{blue}{\frac{-\left(x + 1\right)}{x - 1}} - \left(-\frac{x}{x + 1}\right)
\] |
neg-sub0 [=>]92.52 | \[ \frac{\color{blue}{0 - \left(x + 1\right)}}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
+-commutative [=>]92.52 | \[ \frac{0 - \color{blue}{\left(1 + x\right)}}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
associate--r+ [=>]92.52 | \[ \frac{\color{blue}{\left(0 - 1\right) - x}}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
metadata-eval [=>]92.52 | \[ \frac{\color{blue}{-1} - x}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
sub-neg [=>]92.52 | \[ \frac{-1 - x}{\color{blue}{x + \left(-1\right)}} - \left(-\frac{x}{x + 1}\right)
\] |
metadata-eval [=>]92.52 | \[ \frac{-1 - x}{x + \color{blue}{-1}} - \left(-\frac{x}{x + 1}\right)
\] |
/-rgt-identity [<=]92.52 | \[ \frac{-1 - x}{x + -1} - \color{blue}{\frac{-\frac{x}{x + 1}}{1}}
\] |
neg-mul-1 [=>]92.52 | \[ \frac{-1 - x}{x + -1} - \frac{\color{blue}{-1 \cdot \frac{x}{x + 1}}}{1}
\] |
metadata-eval [<=]92.52 | \[ \frac{-1 - x}{x + -1} - \frac{\color{blue}{\left(-1\right)} \cdot \frac{x}{x + 1}}{1}
\] |
*-commutative [=>]92.52 | \[ \frac{-1 - x}{x + -1} - \frac{\color{blue}{\frac{x}{x + 1} \cdot \left(-1\right)}}{1}
\] |
associate-/l* [=>]92.52 | \[ \frac{-1 - x}{x + -1} - \color{blue}{\frac{\frac{x}{x + 1}}{\frac{1}{-1}}}
\] |
metadata-eval [=>]92.52 | \[ \frac{-1 - x}{x + -1} - \frac{\frac{x}{x + 1}}{\frac{1}{\color{blue}{-1}}}
\] |
metadata-eval [=>]92.52 | \[ \frac{-1 - x}{x + -1} - \frac{\frac{x}{x + 1}}{\color{blue}{-1}}
\] |
metadata-eval [<=]92.52 | \[ \frac{-1 - x}{x + -1} - \frac{\frac{x}{x + 1}}{\color{blue}{-1}}
\] |
associate-/l/ [=>]92.52 | \[ \frac{-1 - x}{x + -1} - \color{blue}{\frac{x}{\left(-1\right) \cdot \left(x + 1\right)}}
\] |
metadata-eval [=>]92.52 | \[ \frac{-1 - x}{x + -1} - \frac{x}{\color{blue}{-1} \cdot \left(x + 1\right)}
\] |
neg-mul-1 [<=]92.52 | \[ \frac{-1 - x}{x + -1} - \frac{x}{\color{blue}{-\left(x + 1\right)}}
\] |
Taylor expanded in x around inf 0.5
Simplified0.05
[Start]0.5 | \[ -\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 [=>]0.5 | \[ \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)}
\] |
+-commutative [=>]0.5 | \[ \color{blue}{\left(-\left(\frac{1}{{x}^{2}} + \left(3 \cdot \frac{1}{{x}^{3}} + 3 \cdot \frac{1}{x}\right)\right)\right) + \left(-\frac{1}{{x}^{4}}\right)}
\] |
Final simplification0.28
| Alternative 1 | |
|---|---|
| Error | 0.04% |
| Cost | 1737 |
| Alternative 2 | |
|---|---|
| Error | 0.04% |
| Cost | 1225 |
| Alternative 3 | |
|---|---|
| Error | 0.29% |
| Cost | 1224 |
| Alternative 4 | |
|---|---|
| Error | 0.47% |
| Cost | 1097 |
| Alternative 5 | |
|---|---|
| Error | 1.33% |
| Cost | 840 |
| Alternative 6 | |
|---|---|
| Error | 1.22% |
| Cost | 840 |
| Alternative 7 | |
|---|---|
| Error | 1.11% |
| Cost | 840 |
| Alternative 8 | |
|---|---|
| Error | 1.48% |
| Cost | 712 |
| Alternative 9 | |
|---|---|
| Error | 1.46% |
| Cost | 584 |
| Alternative 10 | |
|---|---|
| Error | 2.02% |
| Cost | 456 |
| Alternative 11 | |
|---|---|
| Error | 97.27% |
| Cost | 64 |
| Alternative 12 | |
|---|---|
| Error | 90.05% |
| Cost | 64 |
| Alternative 13 | |
|---|---|
| Error | 49.85% |
| Cost | 64 |
herbie shell --seed 2023104
(FPCore (x)
:name "Asymptote C"
:precision binary64
(- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))