| Alternative 1 | |
|---|---|
| Error | 0.3 |
| Cost | 1860 |
(FPCore (x) :precision binary64 (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))
(FPCore (x) :precision binary64 (if (<= (- (/ x (+ x 1.0)) (/ (+ x 1.0) (+ x -1.0))) 5e-10) (/ (+ -3.0 (/ -1.0 x)) x) (- (log1p (expm1 (/ (- -1.0 x) (+ x -1.0)))) (/ x (- -1.0 x)))))
double code(double x) {
return (x / (x + 1.0)) - ((x + 1.0) / (x - 1.0));
}
double code(double x) {
double tmp;
if (((x / (x + 1.0)) - ((x + 1.0) / (x + -1.0))) <= 5e-10) {
tmp = (-3.0 + (-1.0 / x)) / x;
} else {
tmp = log1p(expm1(((-1.0 - x) / (x + -1.0)))) - (x / (-1.0 - x));
}
return tmp;
}
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 / (x + 1.0)) - ((x + 1.0) / (x + -1.0))) <= 5e-10) {
tmp = (-3.0 + (-1.0 / x)) / x;
} else {
tmp = Math.log1p(Math.expm1(((-1.0 - x) / (x + -1.0)))) - (x / (-1.0 - x));
}
return tmp;
}
def code(x): return (x / (x + 1.0)) - ((x + 1.0) / (x - 1.0))
def code(x): tmp = 0 if ((x / (x + 1.0)) - ((x + 1.0) / (x + -1.0))) <= 5e-10: tmp = (-3.0 + (-1.0 / x)) / x else: tmp = math.log1p(math.expm1(((-1.0 - x) / (x + -1.0)))) - (x / (-1.0 - 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 (Float64(Float64(x / Float64(x + 1.0)) - Float64(Float64(x + 1.0) / Float64(x + -1.0))) <= 5e-10) tmp = Float64(Float64(-3.0 + Float64(-1.0 / x)) / x); else tmp = Float64(log1p(expm1(Float64(Float64(-1.0 - x) / Float64(x + -1.0)))) - Float64(x / Float64(-1.0 - x))); 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[N[(N[(x / N[(x + 1.0), $MachinePrecision]), $MachinePrecision] - N[(N[(x + 1.0), $MachinePrecision] / N[(x + -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 5e-10], N[(N[(-3.0 + N[(-1.0 / x), $MachinePrecision]), $MachinePrecision] / x), $MachinePrecision], N[(N[Log[1 + N[(Exp[N[(N[(-1.0 - x), $MachinePrecision] / N[(x + -1.0), $MachinePrecision]), $MachinePrecision]] - 1), $MachinePrecision]], $MachinePrecision] - N[(x / N[(-1.0 - x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
\mathbf{if}\;\frac{x}{x + 1} - \frac{x + 1}{x + -1} \leq 5 \cdot 10^{-10}:\\
\;\;\;\;\frac{-3 + \frac{-1}{x}}{x}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{-1 - x}{x + -1}\right)\right) - \frac{x}{-1 - x}\\
\end{array}
Results
if (-.f64 (/.f64 x (+.f64 x 1)) (/.f64 (+.f64 x 1) (-.f64 x 1))) < 5.00000000000000031e-10Initial program 59.3
Simplified59.3
[Start]59.3 | \[ \frac{x}{x + 1} - \frac{x + 1}{x - 1}
\] |
|---|---|
sub-neg [=>]59.3 | \[ \color{blue}{\frac{x}{x + 1} + \left(-\frac{x + 1}{x - 1}\right)}
\] |
+-commutative [=>]59.3 | \[ \color{blue}{\left(-\frac{x + 1}{x - 1}\right) + \frac{x}{x + 1}}
\] |
remove-double-neg [<=]59.3 | \[ \left(-\frac{x + 1}{x - 1}\right) + \color{blue}{\left(-\left(-\frac{x}{x + 1}\right)\right)}
\] |
sub-neg [<=]59.3 | \[ \color{blue}{\left(-\frac{x + 1}{x - 1}\right) - \left(-\frac{x}{x + 1}\right)}
\] |
distribute-neg-frac [=>]59.3 | \[ \color{blue}{\frac{-\left(x + 1\right)}{x - 1}} - \left(-\frac{x}{x + 1}\right)
\] |
neg-sub0 [=>]59.3 | \[ \frac{\color{blue}{0 - \left(x + 1\right)}}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
+-commutative [=>]59.3 | \[ \frac{0 - \color{blue}{\left(1 + x\right)}}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
associate--r+ [=>]59.3 | \[ \frac{\color{blue}{\left(0 - 1\right) - x}}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
metadata-eval [=>]59.3 | \[ \frac{\color{blue}{-1} - x}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
sub-neg [=>]59.3 | \[ \frac{-1 - x}{\color{blue}{x + \left(-1\right)}} - \left(-\frac{x}{x + 1}\right)
\] |
metadata-eval [=>]59.3 | \[ \frac{-1 - x}{x + \color{blue}{-1}} - \left(-\frac{x}{x + 1}\right)
\] |
/-rgt-identity [<=]59.3 | \[ \frac{-1 - x}{x + -1} - \color{blue}{\frac{-\frac{x}{x + 1}}{1}}
\] |
neg-mul-1 [=>]59.3 | \[ \frac{-1 - x}{x + -1} - \frac{\color{blue}{-1 \cdot \frac{x}{x + 1}}}{1}
\] |
metadata-eval [<=]59.3 | \[ \frac{-1 - x}{x + -1} - \frac{\color{blue}{\left(-1\right)} \cdot \frac{x}{x + 1}}{1}
\] |
*-commutative [=>]59.3 | \[ \frac{-1 - x}{x + -1} - \frac{\color{blue}{\frac{x}{x + 1} \cdot \left(-1\right)}}{1}
\] |
associate-/l* [=>]59.3 | \[ \frac{-1 - x}{x + -1} - \color{blue}{\frac{\frac{x}{x + 1}}{\frac{1}{-1}}}
\] |
metadata-eval [=>]59.3 | \[ \frac{-1 - x}{x + -1} - \frac{\frac{x}{x + 1}}{\frac{1}{\color{blue}{-1}}}
\] |
metadata-eval [=>]59.3 | \[ \frac{-1 - x}{x + -1} - \frac{\frac{x}{x + 1}}{\color{blue}{-1}}
\] |
metadata-eval [<=]59.3 | \[ \frac{-1 - x}{x + -1} - \frac{\frac{x}{x + 1}}{\color{blue}{-1}}
\] |
associate-/l/ [=>]59.3 | \[ \frac{-1 - x}{x + -1} - \color{blue}{\frac{x}{\left(-1\right) \cdot \left(x + 1\right)}}
\] |
metadata-eval [=>]59.3 | \[ \frac{-1 - x}{x + -1} - \frac{x}{\color{blue}{-1} \cdot \left(x + 1\right)}
\] |
neg-mul-1 [<=]59.3 | \[ \frac{-1 - x}{x + -1} - \frac{x}{\color{blue}{-\left(x + 1\right)}}
\] |
Taylor expanded in x around inf 0.7
Simplified0.4
[Start]0.7 | \[ -\left(\frac{1}{{x}^{2}} + 3 \cdot \frac{1}{x}\right)
\] |
|---|---|
distribute-neg-in [=>]0.7 | \[ \color{blue}{\left(-\frac{1}{{x}^{2}}\right) + \left(-3 \cdot \frac{1}{x}\right)}
\] |
unpow2 [=>]0.7 | \[ \left(-\frac{1}{\color{blue}{x \cdot x}}\right) + \left(-3 \cdot \frac{1}{x}\right)
\] |
distribute-neg-frac [=>]0.7 | \[ \color{blue}{\frac{-1}{x \cdot x}} + \left(-3 \cdot \frac{1}{x}\right)
\] |
metadata-eval [=>]0.7 | \[ \frac{\color{blue}{-1}}{x \cdot x} + \left(-3 \cdot \frac{1}{x}\right)
\] |
associate-*r/ [=>]0.4 | \[ \frac{-1}{x \cdot x} + \left(-\color{blue}{\frac{3 \cdot 1}{x}}\right)
\] |
metadata-eval [=>]0.4 | \[ \frac{-1}{x \cdot x} + \left(-\frac{\color{blue}{3}}{x}\right)
\] |
distribute-neg-frac [=>]0.4 | \[ \frac{-1}{x \cdot x} + \color{blue}{\frac{-3}{x}}
\] |
metadata-eval [=>]0.4 | \[ \frac{-1}{x \cdot x} + \frac{\color{blue}{-3}}{x}
\] |
Applied egg-rr43.4
Simplified0.4
[Start]43.4 | \[ \frac{x + \left(x \cdot x\right) \cdot 3}{-{x}^{3}}
\] |
|---|---|
*-commutative [=>]43.4 | \[ \frac{x + \color{blue}{3 \cdot \left(x \cdot x\right)}}{-{x}^{3}}
\] |
metadata-eval [<=]43.4 | \[ \frac{x + \color{blue}{\left(--3\right)} \cdot \left(x \cdot x\right)}{-{x}^{3}}
\] |
distribute-lft-neg-in [<=]43.4 | \[ \frac{x + \color{blue}{\left(--3 \cdot \left(x \cdot x\right)\right)}}{-{x}^{3}}
\] |
distribute-rgt-neg-out [<=]43.4 | \[ \frac{x + \color{blue}{-3 \cdot \left(-x \cdot x\right)}}{-{x}^{3}}
\] |
distribute-rgt-neg-out [<=]43.4 | \[ \frac{x + -3 \cdot \color{blue}{\left(x \cdot \left(-x\right)\right)}}{-{x}^{3}}
\] |
*-lft-identity [<=]43.4 | \[ \frac{\color{blue}{1 \cdot x} + -3 \cdot \left(x \cdot \left(-x\right)\right)}{-{x}^{3}}
\] |
metadata-eval [<=]43.4 | \[ \frac{\color{blue}{\left(-1 \cdot -1\right)} \cdot x + -3 \cdot \left(x \cdot \left(-x\right)\right)}{-{x}^{3}}
\] |
associate-*r* [<=]43.4 | \[ \frac{\color{blue}{-1 \cdot \left(-1 \cdot x\right)} + -3 \cdot \left(x \cdot \left(-x\right)\right)}{-{x}^{3}}
\] |
neg-mul-1 [<=]43.4 | \[ \frac{-1 \cdot \color{blue}{\left(-x\right)} + -3 \cdot \left(x \cdot \left(-x\right)\right)}{-{x}^{3}}
\] |
associate-*r* [=>]43.4 | \[ \frac{-1 \cdot \left(-x\right) + \color{blue}{\left(-3 \cdot x\right) \cdot \left(-x\right)}}{-{x}^{3}}
\] |
*-commutative [<=]43.4 | \[ \frac{-1 \cdot \left(-x\right) + \color{blue}{\left(x \cdot -3\right)} \cdot \left(-x\right)}{-{x}^{3}}
\] |
distribute-rgt-out [=>]43.4 | \[ \frac{\color{blue}{\left(-x\right) \cdot \left(-1 + x \cdot -3\right)}}{-{x}^{3}}
\] |
+-commutative [<=]43.4 | \[ \frac{\left(-x\right) \cdot \color{blue}{\left(x \cdot -3 + -1\right)}}{-{x}^{3}}
\] |
distribute-lft-neg-in [<=]43.4 | \[ \frac{\color{blue}{-x \cdot \left(x \cdot -3 + -1\right)}}{-{x}^{3}}
\] |
distribute-neg-frac [<=]43.4 | \[ \color{blue}{-\frac{x \cdot \left(x \cdot -3 + -1\right)}{-{x}^{3}}}
\] |
cube-neg [<=]43.4 | \[ -\frac{x \cdot \left(x \cdot -3 + -1\right)}{\color{blue}{{\left(-x\right)}^{3}}}
\] |
unpow3 [=>]43.5 | \[ -\frac{x \cdot \left(x \cdot -3 + -1\right)}{\color{blue}{\left(\left(-x\right) \cdot \left(-x\right)\right) \cdot \left(-x\right)}}
\] |
associate-/r* [=>]32.9 | \[ -\color{blue}{\frac{\frac{x \cdot \left(x \cdot -3 + -1\right)}{\left(-x\right) \cdot \left(-x\right)}}{-x}}
\] |
Taylor expanded in x around 0 0.7
Simplified0.4
[Start]0.7 | \[ -\left(\frac{1}{{x}^{2}} + 3 \cdot \frac{1}{x}\right)
\] |
|---|---|
unpow2 [=>]0.7 | \[ -\left(\frac{1}{\color{blue}{x \cdot x}} + 3 \cdot \frac{1}{x}\right)
\] |
associate-/r* [=>]0.7 | \[ -\left(\color{blue}{\frac{\frac{1}{x}}{x}} + 3 \cdot \frac{1}{x}\right)
\] |
metadata-eval [<=]0.7 | \[ -\left(\frac{\frac{\color{blue}{-1 \cdot -1}}{x}}{x} + 3 \cdot \frac{1}{x}\right)
\] |
associate-*r/ [<=]0.7 | \[ -\left(\frac{\color{blue}{-1 \cdot \frac{-1}{x}}}{x} + 3 \cdot \frac{1}{x}\right)
\] |
associate-*l/ [<=]0.7 | \[ -\left(\color{blue}{\frac{-1}{x} \cdot \frac{-1}{x}} + 3 \cdot \frac{1}{x}\right)
\] |
associate-*r/ [=>]0.4 | \[ -\left(\frac{-1}{x} \cdot \frac{-1}{x} + \color{blue}{\frac{3 \cdot 1}{x}}\right)
\] |
metadata-eval [=>]0.4 | \[ -\left(\frac{-1}{x} \cdot \frac{-1}{x} + \frac{\color{blue}{3}}{x}\right)
\] |
metadata-eval [<=]0.4 | \[ -\left(\frac{-1}{x} \cdot \frac{-1}{x} + \frac{\color{blue}{-3 \cdot -1}}{x}\right)
\] |
associate-*r/ [<=]0.7 | \[ -\left(\frac{-1}{x} \cdot \frac{-1}{x} + \color{blue}{-3 \cdot \frac{-1}{x}}\right)
\] |
distribute-rgt-in [<=]0.7 | \[ -\color{blue}{\frac{-1}{x} \cdot \left(\frac{-1}{x} + -3\right)}
\] |
+-commutative [<=]0.7 | \[ -\frac{-1}{x} \cdot \color{blue}{\left(-3 + \frac{-1}{x}\right)}
\] |
associate-*l/ [=>]0.4 | \[ -\color{blue}{\frac{-1 \cdot \left(-3 + \frac{-1}{x}\right)}{x}}
\] |
distribute-lft-in [=>]0.4 | \[ -\frac{\color{blue}{-1 \cdot -3 + -1 \cdot \frac{-1}{x}}}{x}
\] |
metadata-eval [=>]0.4 | \[ -\frac{\color{blue}{3} + -1 \cdot \frac{-1}{x}}{x}
\] |
associate-*r/ [=>]0.4 | \[ -\frac{3 + \color{blue}{\frac{-1 \cdot -1}{x}}}{x}
\] |
metadata-eval [=>]0.4 | \[ -\frac{3 + \frac{\color{blue}{1}}{x}}{x}
\] |
if 5.00000000000000031e-10 < (-.f64 (/.f64 x (+.f64 x 1)) (/.f64 (+.f64 x 1) (-.f64 x 1))) Initial program 0.2
Simplified0.2
[Start]0.2 | \[ \frac{x}{x + 1} - \frac{x + 1}{x - 1}
\] |
|---|---|
sub-neg [=>]0.2 | \[ \color{blue}{\frac{x}{x + 1} + \left(-\frac{x + 1}{x - 1}\right)}
\] |
+-commutative [=>]0.2 | \[ \color{blue}{\left(-\frac{x + 1}{x - 1}\right) + \frac{x}{x + 1}}
\] |
remove-double-neg [<=]0.2 | \[ \left(-\frac{x + 1}{x - 1}\right) + \color{blue}{\left(-\left(-\frac{x}{x + 1}\right)\right)}
\] |
sub-neg [<=]0.2 | \[ \color{blue}{\left(-\frac{x + 1}{x - 1}\right) - \left(-\frac{x}{x + 1}\right)}
\] |
distribute-neg-frac [=>]0.2 | \[ \color{blue}{\frac{-\left(x + 1\right)}{x - 1}} - \left(-\frac{x}{x + 1}\right)
\] |
neg-sub0 [=>]0.2 | \[ \frac{\color{blue}{0 - \left(x + 1\right)}}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
+-commutative [=>]0.2 | \[ \frac{0 - \color{blue}{\left(1 + x\right)}}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
associate--r+ [=>]0.2 | \[ \frac{\color{blue}{\left(0 - 1\right) - x}}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
metadata-eval [=>]0.2 | \[ \frac{\color{blue}{-1} - x}{x - 1} - \left(-\frac{x}{x + 1}\right)
\] |
sub-neg [=>]0.2 | \[ \frac{-1 - x}{\color{blue}{x + \left(-1\right)}} - \left(-\frac{x}{x + 1}\right)
\] |
metadata-eval [=>]0.2 | \[ \frac{-1 - x}{x + \color{blue}{-1}} - \left(-\frac{x}{x + 1}\right)
\] |
/-rgt-identity [<=]0.2 | \[ \frac{-1 - x}{x + -1} - \color{blue}{\frac{-\frac{x}{x + 1}}{1}}
\] |
neg-mul-1 [=>]0.2 | \[ \frac{-1 - x}{x + -1} - \frac{\color{blue}{-1 \cdot \frac{x}{x + 1}}}{1}
\] |
metadata-eval [<=]0.2 | \[ \frac{-1 - x}{x + -1} - \frac{\color{blue}{\left(-1\right)} \cdot \frac{x}{x + 1}}{1}
\] |
*-commutative [=>]0.2 | \[ \frac{-1 - x}{x + -1} - \frac{\color{blue}{\frac{x}{x + 1} \cdot \left(-1\right)}}{1}
\] |
associate-/l* [=>]0.2 | \[ \frac{-1 - x}{x + -1} - \color{blue}{\frac{\frac{x}{x + 1}}{\frac{1}{-1}}}
\] |
metadata-eval [=>]0.2 | \[ \frac{-1 - x}{x + -1} - \frac{\frac{x}{x + 1}}{\frac{1}{\color{blue}{-1}}}
\] |
metadata-eval [=>]0.2 | \[ \frac{-1 - x}{x + -1} - \frac{\frac{x}{x + 1}}{\color{blue}{-1}}
\] |
metadata-eval [<=]0.2 | \[ \frac{-1 - x}{x + -1} - \frac{\frac{x}{x + 1}}{\color{blue}{-1}}
\] |
associate-/l/ [=>]0.2 | \[ \frac{-1 - x}{x + -1} - \color{blue}{\frac{x}{\left(-1\right) \cdot \left(x + 1\right)}}
\] |
metadata-eval [=>]0.2 | \[ \frac{-1 - x}{x + -1} - \frac{x}{\color{blue}{-1} \cdot \left(x + 1\right)}
\] |
neg-mul-1 [<=]0.2 | \[ \frac{-1 - x}{x + -1} - \frac{x}{\color{blue}{-\left(x + 1\right)}}
\] |
Applied egg-rr0.2
Final simplification0.3
| Alternative 1 | |
|---|---|
| Error | 0.3 |
| Cost | 1860 |
| Alternative 2 | |
|---|---|
| Error | 0.3 |
| Cost | 1732 |
| Alternative 3 | |
|---|---|
| Error | 0.7 |
| Cost | 713 |
| Alternative 4 | |
|---|---|
| Error | 1.0 |
| Cost | 584 |
| Alternative 5 | |
|---|---|
| Error | 1.4 |
| Cost | 456 |
| Alternative 6 | |
|---|---|
| Error | 31.5 |
| Cost | 64 |
herbie shell --seed 2023073
(FPCore (x)
:name "Asymptote C"
:precision binary64
(- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))