| Alternative 1 | |
|---|---|
| Accuracy | 79.1% |
| Cost | 39756 |

(FPCore (x n) :precision binary64 (- (pow (+ x 1.0) (/ 1.0 n)) (pow x (/ 1.0 n))))
(FPCore (x n)
:precision binary64
(let* ((t_0 (/ (log x) n))
(t_1
(-
(fma -0.16666666666666666 (pow t_0 3.0) (* -0.5 (pow t_0 2.0)))
t_0)))
(if (<= x 9.6e-147)
t_1
(if (<= x 6e-93)
(* 2.0 (log (sqrt (exp (- (exp (/ (log1p x) n)) (pow x (/ 1.0 n)))))))
(if (<= x 0.32) t_1 (* (pow x (pow n -1.0)) (/ (pow n -1.0) x)))))))double code(double x, double n) {
return pow((x + 1.0), (1.0 / n)) - pow(x, (1.0 / n));
}
double code(double x, double n) {
double t_0 = log(x) / n;
double t_1 = fma(-0.16666666666666666, pow(t_0, 3.0), (-0.5 * pow(t_0, 2.0))) - t_0;
double tmp;
if (x <= 9.6e-147) {
tmp = t_1;
} else if (x <= 6e-93) {
tmp = 2.0 * log(sqrt(exp((exp((log1p(x) / n)) - pow(x, (1.0 / n))))));
} else if (x <= 0.32) {
tmp = t_1;
} else {
tmp = pow(x, pow(n, -1.0)) * (pow(n, -1.0) / x);
}
return tmp;
}
function code(x, n) return Float64((Float64(x + 1.0) ^ Float64(1.0 / n)) - (x ^ Float64(1.0 / n))) end
function code(x, n) t_0 = Float64(log(x) / n) t_1 = Float64(fma(-0.16666666666666666, (t_0 ^ 3.0), Float64(-0.5 * (t_0 ^ 2.0))) - t_0) tmp = 0.0 if (x <= 9.6e-147) tmp = t_1; elseif (x <= 6e-93) tmp = Float64(2.0 * log(sqrt(exp(Float64(exp(Float64(log1p(x) / n)) - (x ^ Float64(1.0 / n))))))); elseif (x <= 0.32) tmp = t_1; else tmp = Float64((x ^ (n ^ -1.0)) * Float64((n ^ -1.0) / x)); end return tmp end
code[x_, n_] := N[(N[Power[N[(x + 1.0), $MachinePrecision], N[(1.0 / n), $MachinePrecision]], $MachinePrecision] - N[Power[x, N[(1.0 / n), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
code[x_, n_] := Block[{t$95$0 = N[(N[Log[x], $MachinePrecision] / n), $MachinePrecision]}, Block[{t$95$1 = N[(N[(-0.16666666666666666 * N[Power[t$95$0, 3.0], $MachinePrecision] + N[(-0.5 * N[Power[t$95$0, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision]}, If[LessEqual[x, 9.6e-147], t$95$1, If[LessEqual[x, 6e-93], N[(2.0 * N[Log[N[Sqrt[N[Exp[N[(N[Exp[N[(N[Log[1 + x], $MachinePrecision] / n), $MachinePrecision]], $MachinePrecision] - N[Power[x, N[(1.0 / n), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 0.32], t$95$1, N[(N[Power[x, N[Power[n, -1.0], $MachinePrecision]], $MachinePrecision] * N[(N[Power[n, -1.0], $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision]]]]]]
{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}
\begin{array}{l}
t_0 := \frac{\log x}{n}\\
t_1 := \mathsf{fma}\left(-0.16666666666666666, {t_0}^{3}, -0.5 \cdot {t_0}^{2}\right) - t_0\\
\mathbf{if}\;x \leq 9.6 \cdot 10^{-147}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;x \leq 6 \cdot 10^{-93}:\\
\;\;\;\;2 \cdot \log \left(\sqrt{e^{e^{\frac{\mathsf{log1p}\left(x\right)}{n}} - {x}^{\left(\frac{1}{n}\right)}}}\right)\\
\mathbf{elif}\;x \leq 0.32:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;{x}^{\left({n}^{-1}\right)} \cdot \frac{{n}^{-1}}{x}\\
\end{array}
Herbie found 20 alternatives:
| Alternative | Accuracy | Speedup |
|---|
if x < 9.59999999999999994e-147 or 6.0000000000000003e-93 < x < 0.320000000000000007Initial program 42.6%
Taylor expanded in x around 0 41.8%
Simplified41.8%
[Start]41.8% | \[ 1 - e^{\frac{\log x}{n}}
\] |
|---|---|
*-rgt-identity [<=]41.8% | \[ 1 - e^{\frac{\color{blue}{\log x \cdot 1}}{n}}
\] |
associate-*r/ [<=]41.8% | \[ 1 - e^{\color{blue}{\log x \cdot \frac{1}{n}}}
\] |
unpow-1 [<=]41.8% | \[ 1 - e^{\log x \cdot \color{blue}{{n}^{-1}}}
\] |
exp-to-pow [=>]41.8% | \[ 1 - \color{blue}{{x}^{\left({n}^{-1}\right)}}
\] |
unpow-1 [=>]41.8% | \[ 1 - {x}^{\color{blue}{\left(\frac{1}{n}\right)}}
\] |
Taylor expanded in n around inf 76.6%
Simplified76.6%
[Start]76.6% | \[ -1 \cdot \frac{\log x}{n} + \left(-0.5 \cdot \frac{{\log x}^{2}}{{n}^{2}} + -0.16666666666666666 \cdot \frac{{\log x}^{3}}{{n}^{3}}\right)
\] |
|---|---|
neg-mul-1 [<=]76.6% | \[ \color{blue}{\left(-\frac{\log x}{n}\right)} + \left(-0.5 \cdot \frac{{\log x}^{2}}{{n}^{2}} + -0.16666666666666666 \cdot \frac{{\log x}^{3}}{{n}^{3}}\right)
\] |
+-commutative [=>]76.6% | \[ \color{blue}{\left(-0.5 \cdot \frac{{\log x}^{2}}{{n}^{2}} + -0.16666666666666666 \cdot \frac{{\log x}^{3}}{{n}^{3}}\right) + \left(-\frac{\log x}{n}\right)}
\] |
unsub-neg [=>]76.6% | \[ \color{blue}{\left(-0.5 \cdot \frac{{\log x}^{2}}{{n}^{2}} + -0.16666666666666666 \cdot \frac{{\log x}^{3}}{{n}^{3}}\right) - \frac{\log x}{n}}
\] |
if 9.59999999999999994e-147 < x < 6.0000000000000003e-93Initial program 53.6%
Applied egg-rr79.4%
[Start]53.6% | \[ {\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}
\] |
|---|---|
add-log-exp [=>]53.9% | \[ \color{blue}{\log \left(e^{{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}}\right)}
\] |
add-sqr-sqrt [=>]53.9% | \[ \log \color{blue}{\left(\sqrt{e^{{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}}} \cdot \sqrt{e^{{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}}}\right)}
\] |
log-prod [=>]53.9% | \[ \color{blue}{\log \left(\sqrt{e^{{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}}}\right) + \log \left(\sqrt{e^{{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}}}\right)}
\] |
pow-to-exp [=>]53.9% | \[ \log \left(\sqrt{e^{\color{blue}{e^{\log \left(x + 1\right) \cdot \frac{1}{n}}} - {x}^{\left(\frac{1}{n}\right)}}}\right) + \log \left(\sqrt{e^{{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}}}\right)
\] |
un-div-inv [=>]53.9% | \[ \log \left(\sqrt{e^{e^{\color{blue}{\frac{\log \left(x + 1\right)}{n}}} - {x}^{\left(\frac{1}{n}\right)}}}\right) + \log \left(\sqrt{e^{{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}}}\right)
\] |
+-commutative [=>]53.9% | \[ \log \left(\sqrt{e^{e^{\frac{\log \color{blue}{\left(1 + x\right)}}{n}} - {x}^{\left(\frac{1}{n}\right)}}}\right) + \log \left(\sqrt{e^{{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}}}\right)
\] |
log1p-udef [<=]79.4% | \[ \log \left(\sqrt{e^{e^{\frac{\color{blue}{\mathsf{log1p}\left(x\right)}}{n}} - {x}^{\left(\frac{1}{n}\right)}}}\right) + \log \left(\sqrt{e^{{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}}}\right)
\] |
inv-pow [=>]79.4% | \[ \log \left(\sqrt{e^{e^{\frac{\mathsf{log1p}\left(x\right)}{n}} - {x}^{\color{blue}{\left({n}^{-1}\right)}}}}\right) + \log \left(\sqrt{e^{{\left(x + 1\right)}^{\left(\frac{1}{n}\right)} - {x}^{\left(\frac{1}{n}\right)}}}\right)
\] |
Simplified79.4%
[Start]79.4% | \[ \log \left(\sqrt{e^{e^{\frac{\mathsf{log1p}\left(x\right)}{n}} - {x}^{\left({n}^{-1}\right)}}}\right) + \log \left(\sqrt{e^{e^{\frac{\mathsf{log1p}\left(x\right)}{n}} - {x}^{\left({n}^{-1}\right)}}}\right)
\] |
|---|---|
count-2 [=>]79.4% | \[ \color{blue}{2 \cdot \log \left(\sqrt{e^{e^{\frac{\mathsf{log1p}\left(x\right)}{n}} - {x}^{\left({n}^{-1}\right)}}}\right)}
\] |
rem-square-sqrt [<=]79.4% | \[ 2 \cdot \log \left(\sqrt{e^{e^{\frac{\mathsf{log1p}\left(x\right)}{n}} - \color{blue}{\sqrt{{x}^{\left({n}^{-1}\right)}} \cdot \sqrt{{x}^{\left({n}^{-1}\right)}}}}}\right)
\] |
rem-square-sqrt [<=]79.4% | \[ 2 \cdot \log \left(\sqrt{e^{\color{blue}{\sqrt{e^{\frac{\mathsf{log1p}\left(x\right)}{n}}} \cdot \sqrt{e^{\frac{\mathsf{log1p}\left(x\right)}{n}}}} - \sqrt{{x}^{\left({n}^{-1}\right)}} \cdot \sqrt{{x}^{\left({n}^{-1}\right)}}}}\right)
\] |
difference-of-squares [=>]79.4% | \[ 2 \cdot \log \left(\sqrt{e^{\color{blue}{\left(\sqrt{e^{\frac{\mathsf{log1p}\left(x\right)}{n}}} + \sqrt{{x}^{\left({n}^{-1}\right)}}\right) \cdot \left(\sqrt{e^{\frac{\mathsf{log1p}\left(x\right)}{n}}} - \sqrt{{x}^{\left({n}^{-1}\right)}}\right)}}}\right)
\] |
if 0.320000000000000007 < x Initial program 65.5%
Taylor expanded in x around inf 96.7%
Simplified96.7%
[Start]96.7% | \[ \frac{e^{-1 \cdot \frac{\log \left(\frac{1}{x}\right)}{n}}}{n \cdot x}
\] |
|---|---|
log-rec [=>]96.7% | \[ \frac{e^{-1 \cdot \frac{\color{blue}{-\log x}}{n}}}{n \cdot x}
\] |
mul-1-neg [<=]96.7% | \[ \frac{e^{-1 \cdot \frac{\color{blue}{-1 \cdot \log x}}{n}}}{n \cdot x}
\] |
mul-1-neg [=>]96.7% | \[ \frac{e^{-1 \cdot \frac{\color{blue}{-\log x}}{n}}}{n \cdot x}
\] |
distribute-frac-neg [=>]96.7% | \[ \frac{e^{-1 \cdot \color{blue}{\left(-\frac{\log x}{n}\right)}}}{n \cdot x}
\] |
neg-mul-1 [<=]96.7% | \[ \frac{e^{\color{blue}{-\left(-\frac{\log x}{n}\right)}}}{n \cdot x}
\] |
remove-double-neg [=>]96.7% | \[ \frac{e^{\color{blue}{\frac{\log x}{n}}}}{n \cdot x}
\] |
*-rgt-identity [<=]96.7% | \[ \frac{e^{\frac{\color{blue}{\log x \cdot 1}}{n}}}{n \cdot x}
\] |
associate-*r/ [<=]96.7% | \[ \frac{e^{\color{blue}{\log x \cdot \frac{1}{n}}}}{n \cdot x}
\] |
unpow-1 [<=]96.7% | \[ \frac{e^{\log x \cdot \color{blue}{{n}^{-1}}}}{n \cdot x}
\] |
exp-to-pow [=>]96.7% | \[ \frac{\color{blue}{{x}^{\left({n}^{-1}\right)}}}{n \cdot x}
\] |
unpow-1 [=>]96.7% | \[ \frac{{x}^{\color{blue}{\left(\frac{1}{n}\right)}}}{n \cdot x}
\] |
*-commutative [=>]96.7% | \[ \frac{{x}^{\left(\frac{1}{n}\right)}}{\color{blue}{x \cdot n}}
\] |
Applied egg-rr98.1%
[Start]96.7% | \[ \frac{{x}^{\left(\frac{1}{n}\right)}}{x \cdot n}
\] |
|---|---|
div-inv [=>]96.7% | \[ \color{blue}{{x}^{\left(\frac{1}{n}\right)} \cdot \frac{1}{x \cdot n}}
\] |
inv-pow [=>]96.7% | \[ {x}^{\color{blue}{\left({n}^{-1}\right)}} \cdot \frac{1}{x \cdot n}
\] |
*-commutative [=>]96.7% | \[ {x}^{\left({n}^{-1}\right)} \cdot \frac{1}{\color{blue}{n \cdot x}}
\] |
associate-/r* [=>]98.1% | \[ {x}^{\left({n}^{-1}\right)} \cdot \color{blue}{\frac{\frac{1}{n}}{x}}
\] |
inv-pow [=>]98.1% | \[ {x}^{\left({n}^{-1}\right)} \cdot \frac{\color{blue}{{n}^{-1}}}{x}
\] |
Final simplification86.5%
| Alternative 1 | |
|---|---|
| Accuracy | 79.1% |
| Cost | 39756 |
| Alternative 2 | |
|---|---|
| Accuracy | 87.5% |
| Cost | 125444 |
| Alternative 3 | |
|---|---|
| Accuracy | 87.5% |
| Cost | 78980 |
| Alternative 4 | |
|---|---|
| Accuracy | 87.5% |
| Cost | 46409 |
| Alternative 5 | |
|---|---|
| Accuracy | 87.3% |
| Cost | 19977 |
| Alternative 6 | |
|---|---|
| Accuracy | 80.8% |
| Cost | 8976 |
| Alternative 7 | |
|---|---|
| Accuracy | 80.0% |
| Cost | 8724 |
| Alternative 8 | |
|---|---|
| Accuracy | 78.3% |
| Cost | 8080 |
| Alternative 9 | |
|---|---|
| Accuracy | 78.3% |
| Cost | 8080 |
| Alternative 10 | |
|---|---|
| Accuracy | 78.5% |
| Cost | 8080 |
| Alternative 11 | |
|---|---|
| Accuracy | 78.5% |
| Cost | 8080 |
| Alternative 12 | |
|---|---|
| Accuracy | 78.3% |
| Cost | 7888 |
| Alternative 13 | |
|---|---|
| Accuracy | 58.6% |
| Cost | 7644 |
| Alternative 14 | |
|---|---|
| Accuracy | 64.8% |
| Cost | 7113 |
| Alternative 15 | |
|---|---|
| Accuracy | 60.2% |
| Cost | 6852 |
| Alternative 16 | |
|---|---|
| Accuracy | 59.9% |
| Cost | 6788 |
| Alternative 17 | |
|---|---|
| Accuracy | 44.7% |
| Cost | 452 |
| Alternative 18 | |
|---|---|
| Accuracy | 39.9% |
| Cost | 320 |
| Alternative 19 | |
|---|---|
| Accuracy | 40.5% |
| Cost | 320 |
| Alternative 20 | |
|---|---|
| Accuracy | 40.5% |
| Cost | 320 |
herbie shell --seed 2023171
(FPCore (x n)
:name "2nthrt (problem 3.4.6)"
:precision binary64
(- (pow (+ x 1.0) (/ 1.0 n)) (pow x (/ 1.0 n))))