| Alternative 1 | |
|---|---|
| Accuracy | 56.5% |
| Cost | 20096 |
\[\begin{array}{l}
t_0 := \frac{x}{e^{x}}\\
\frac{t_0 + \left(t_0 + 2 \cdot e^{-x}\right)}{2}
\end{array}
\]
(FPCore (x eps) :precision binary64 (/ (- (* (+ 1.0 (/ 1.0 eps)) (exp (- (* (- 1.0 eps) x)))) (* (- (/ 1.0 eps) 1.0) (exp (- (* (+ 1.0 eps) x))))) 2.0))
(FPCore (x eps)
:precision binary64
(if (<= x 430.0)
(/
(+
(fma
(+
(* (+ eps 1.0) (+ -1.0 (/ 1.0 eps)))
(* (- 1.0 eps) (+ -1.0 (/ -1.0 eps))))
x
2.0)
(* eps (* eps (* x x))))
2.0)
0.0))double code(double x, double eps) {
return (((1.0 + (1.0 / eps)) * exp(-((1.0 - eps) * x))) - (((1.0 / eps) - 1.0) * exp(-((1.0 + eps) * x)))) / 2.0;
}
double code(double x, double eps) {
double tmp;
if (x <= 430.0) {
tmp = (fma((((eps + 1.0) * (-1.0 + (1.0 / eps))) + ((1.0 - eps) * (-1.0 + (-1.0 / eps)))), x, 2.0) + (eps * (eps * (x * x)))) / 2.0;
} else {
tmp = 0.0;
}
return tmp;
}
function code(x, eps) return Float64(Float64(Float64(Float64(1.0 + Float64(1.0 / eps)) * exp(Float64(-Float64(Float64(1.0 - eps) * x)))) - Float64(Float64(Float64(1.0 / eps) - 1.0) * exp(Float64(-Float64(Float64(1.0 + eps) * x))))) / 2.0) end
function code(x, eps) tmp = 0.0 if (x <= 430.0) tmp = Float64(Float64(fma(Float64(Float64(Float64(eps + 1.0) * Float64(-1.0 + Float64(1.0 / eps))) + Float64(Float64(1.0 - eps) * Float64(-1.0 + Float64(-1.0 / eps)))), x, 2.0) + Float64(eps * Float64(eps * Float64(x * x)))) / 2.0); else tmp = 0.0; end return tmp end
code[x_, eps_] := N[(N[(N[(N[(1.0 + N[(1.0 / eps), $MachinePrecision]), $MachinePrecision] * N[Exp[(-N[(N[(1.0 - eps), $MachinePrecision] * x), $MachinePrecision])], $MachinePrecision]), $MachinePrecision] - N[(N[(N[(1.0 / eps), $MachinePrecision] - 1.0), $MachinePrecision] * N[Exp[(-N[(N[(1.0 + eps), $MachinePrecision] * x), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]
code[x_, eps_] := If[LessEqual[x, 430.0], N[(N[(N[(N[(N[(N[(eps + 1.0), $MachinePrecision] * N[(-1.0 + N[(1.0 / eps), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(1.0 - eps), $MachinePrecision] * N[(-1.0 + N[(-1.0 / eps), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * x + 2.0), $MachinePrecision] + N[(eps * N[(eps * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision], 0.0]
\frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot e^{-\left(1 - \varepsilon\right) \cdot x} - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}
\begin{array}{l}
\mathbf{if}\;x \leq 430:\\
\;\;\;\;\frac{\mathsf{fma}\left(\left(\varepsilon + 1\right) \cdot \left(-1 + \frac{1}{\varepsilon}\right) + \left(1 - \varepsilon\right) \cdot \left(-1 + \frac{-1}{\varepsilon}\right), x, 2\right) + \varepsilon \cdot \left(\varepsilon \cdot \left(x \cdot x\right)\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}
if x < 430Initial program 23.0%
Simplified23.0%
[Start]23.0 | \[ \frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot e^{-\left(1 - \varepsilon\right) \cdot x} - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}
\] |
|---|---|
div-sub [=>]23.0 | \[ \color{blue}{\frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot e^{-\left(1 - \varepsilon\right) \cdot x}}{2} - \frac{\left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}}
\] |
+-rgt-identity [<=]23.0 | \[ \frac{\color{blue}{\left(1 + \frac{1}{\varepsilon}\right) \cdot e^{-\left(1 - \varepsilon\right) \cdot x} + 0}}{2} - \frac{\left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}
\] |
div-sub [<=]23.0 | \[ \color{blue}{\frac{\left(\left(1 + \frac{1}{\varepsilon}\right) \cdot e^{-\left(1 - \varepsilon\right) \cdot x} + 0\right) - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}}
\] |
Taylor expanded in x around 0 55.8%
Simplified55.8%
[Start]55.8 | \[ \frac{\left(-1 \cdot \left(\left(\frac{1}{\varepsilon} + 1\right) \cdot \left(1 - \varepsilon\right)\right) - -1 \cdot \left(\left(\frac{1}{\varepsilon} - 1\right) \cdot \left(1 + \varepsilon\right)\right)\right) \cdot x + \left(2 + \left(0.5 \cdot \left(\left(\frac{1}{\varepsilon} + 1\right) \cdot {\left(1 - \varepsilon\right)}^{2}\right) - 0.5 \cdot \left(\left(\frac{1}{\varepsilon} - 1\right) \cdot {\left(1 + \varepsilon\right)}^{2}\right)\right) \cdot {x}^{2}\right)}{2}
\] |
|---|---|
associate-+r+ [=>]55.8 | \[ \frac{\color{blue}{\left(\left(-1 \cdot \left(\left(\frac{1}{\varepsilon} + 1\right) \cdot \left(1 - \varepsilon\right)\right) - -1 \cdot \left(\left(\frac{1}{\varepsilon} - 1\right) \cdot \left(1 + \varepsilon\right)\right)\right) \cdot x + 2\right) + \left(0.5 \cdot \left(\left(\frac{1}{\varepsilon} + 1\right) \cdot {\left(1 - \varepsilon\right)}^{2}\right) - 0.5 \cdot \left(\left(\frac{1}{\varepsilon} - 1\right) \cdot {\left(1 + \varepsilon\right)}^{2}\right)\right) \cdot {x}^{2}}}{2}
\] |
Taylor expanded in eps around inf 55.8%
Simplified61.5%
[Start]55.8 | \[ \frac{\mathsf{fma}\left(-1 \cdot \left(\left(1 - \varepsilon\right) \cdot \left(1 + \frac{1}{\varepsilon}\right) - \left(\varepsilon + 1\right) \cdot \left(-1 + \frac{1}{\varepsilon}\right)\right), x, 2\right) + {\varepsilon}^{2} \cdot {x}^{2}}{2}
\] |
|---|---|
unpow2 [=>]55.8 | \[ \frac{\mathsf{fma}\left(-1 \cdot \left(\left(1 - \varepsilon\right) \cdot \left(1 + \frac{1}{\varepsilon}\right) - \left(\varepsilon + 1\right) \cdot \left(-1 + \frac{1}{\varepsilon}\right)\right), x, 2\right) + \color{blue}{\left(\varepsilon \cdot \varepsilon\right)} \cdot {x}^{2}}{2}
\] |
associate-*l* [=>]61.5 | \[ \frac{\mathsf{fma}\left(-1 \cdot \left(\left(1 - \varepsilon\right) \cdot \left(1 + \frac{1}{\varepsilon}\right) - \left(\varepsilon + 1\right) \cdot \left(-1 + \frac{1}{\varepsilon}\right)\right), x, 2\right) + \color{blue}{\varepsilon \cdot \left(\varepsilon \cdot {x}^{2}\right)}}{2}
\] |
unpow2 [=>]61.5 | \[ \frac{\mathsf{fma}\left(-1 \cdot \left(\left(1 - \varepsilon\right) \cdot \left(1 + \frac{1}{\varepsilon}\right) - \left(\varepsilon + 1\right) \cdot \left(-1 + \frac{1}{\varepsilon}\right)\right), x, 2\right) + \varepsilon \cdot \left(\varepsilon \cdot \color{blue}{\left(x \cdot x\right)}\right)}{2}
\] |
if 430 < x Initial program 45.5%
Simplified45.5%
[Start]45.5 | \[ \frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot e^{-\left(1 - \varepsilon\right) \cdot x} - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}
\] |
|---|
Taylor expanded in eps around 0 46.3%
Simplified46.3%
[Start]46.3 | \[ \frac{\frac{e^{-1 \cdot x} - \frac{1}{e^{x}}}{\varepsilon}}{2}
\] |
|---|---|
div-sub [=>]46.3 | \[ \frac{\color{blue}{\frac{e^{-1 \cdot x}}{\varepsilon} - \frac{\frac{1}{e^{x}}}{\varepsilon}}}{2}
\] |
rec-exp [=>]46.3 | \[ \frac{\frac{e^{-1 \cdot x}}{\varepsilon} - \frac{\color{blue}{e^{-x}}}{\varepsilon}}{2}
\] |
mul-1-neg [<=]46.3 | \[ \frac{\frac{e^{-1 \cdot x}}{\varepsilon} - \frac{e^{\color{blue}{-1 \cdot x}}}{\varepsilon}}{2}
\] |
+-inverses [=>]46.3 | \[ \frac{\color{blue}{0}}{2}
\] |
Final simplification57.0%
| Alternative 1 | |
|---|---|
| Accuracy | 56.5% |
| Cost | 20096 |
| Alternative 2 | |
|---|---|
| Accuracy | 56.5% |
| Cost | 13760 |
| Alternative 3 | |
|---|---|
| Accuracy | 55.6% |
| Cost | 13632 |
| Alternative 4 | |
|---|---|
| Accuracy | 56.5% |
| Cost | 196 |
| Alternative 5 | |
|---|---|
| Accuracy | 16.2% |
| Cost | 64 |
herbie shell --seed 2023157
(FPCore (x eps)
:name "NMSE Section 6.1 mentioned, A"
:precision binary64
(/ (- (* (+ 1.0 (/ 1.0 eps)) (exp (- (* (- 1.0 eps) x)))) (* (- (/ 1.0 eps) 1.0) (exp (- (* (+ 1.0 eps) x))))) 2.0))