\[\frac{e^{x} - e^{-x}}{e^{x} + e^{-x}}
\]
↓
\[\begin{array}{l}
t_0 := e^{-x}\\
\mathbf{if}\;\frac{e^{x} - t_0}{e^{x} + t_0} \leq 2 \cdot 10^{-6}:\\
\;\;\;\;\mathsf{fma}\left({x}^{3}, -0.3333333333333333, 0.13333333333333333 \cdot {x}^{5}\right) + x\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{x}}{t_0 + e^{x}} - \frac{1}{\mathsf{fma}\left(e^{x}, e^{x}, 1\right)}\\
\end{array}
\]
(FPCore (x)
:precision binary64
(/ (- (exp x) (exp (- x))) (+ (exp x) (exp (- x)))))
↓
(FPCore (x)
:precision binary64
(let* ((t_0 (exp (- x))))
(if (<= (/ (- (exp x) t_0) (+ (exp x) t_0)) 2e-6)
(+
(fma (pow x 3.0) -0.3333333333333333 (* 0.13333333333333333 (pow x 5.0)))
x)
(- (/ (exp x) (+ t_0 (exp x))) (/ 1.0 (fma (exp x) (exp x) 1.0))))))double code(double x) {
return (exp(x) - exp(-x)) / (exp(x) + exp(-x));
}
↓
double code(double x) {
double t_0 = exp(-x);
double tmp;
if (((exp(x) - t_0) / (exp(x) + t_0)) <= 2e-6) {
tmp = fma(pow(x, 3.0), -0.3333333333333333, (0.13333333333333333 * pow(x, 5.0))) + x;
} else {
tmp = (exp(x) / (t_0 + exp(x))) - (1.0 / fma(exp(x), exp(x), 1.0));
}
return tmp;
}
function code(x)
return Float64(Float64(exp(x) - exp(Float64(-x))) / Float64(exp(x) + exp(Float64(-x))))
end
↓
function code(x)
t_0 = exp(Float64(-x))
tmp = 0.0
if (Float64(Float64(exp(x) - t_0) / Float64(exp(x) + t_0)) <= 2e-6)
tmp = Float64(fma((x ^ 3.0), -0.3333333333333333, Float64(0.13333333333333333 * (x ^ 5.0))) + x);
else
tmp = Float64(Float64(exp(x) / Float64(t_0 + exp(x))) - Float64(1.0 / fma(exp(x), exp(x), 1.0)));
end
return tmp
end
code[x_] := N[(N[(N[Exp[x], $MachinePrecision] - N[Exp[(-x)], $MachinePrecision]), $MachinePrecision] / N[(N[Exp[x], $MachinePrecision] + N[Exp[(-x)], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
↓
code[x_] := Block[{t$95$0 = N[Exp[(-x)], $MachinePrecision]}, If[LessEqual[N[(N[(N[Exp[x], $MachinePrecision] - t$95$0), $MachinePrecision] / N[(N[Exp[x], $MachinePrecision] + t$95$0), $MachinePrecision]), $MachinePrecision], 2e-6], N[(N[(N[Power[x, 3.0], $MachinePrecision] * -0.3333333333333333 + N[(0.13333333333333333 * N[Power[x, 5.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + x), $MachinePrecision], N[(N[(N[Exp[x], $MachinePrecision] / N[(t$95$0 + N[Exp[x], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(1.0 / N[(N[Exp[x], $MachinePrecision] * N[Exp[x], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\frac{e^{x} - e^{-x}}{e^{x} + e^{-x}}
↓
\begin{array}{l}
t_0 := e^{-x}\\
\mathbf{if}\;\frac{e^{x} - t_0}{e^{x} + t_0} \leq 2 \cdot 10^{-6}:\\
\;\;\;\;\mathsf{fma}\left({x}^{3}, -0.3333333333333333, 0.13333333333333333 \cdot {x}^{5}\right) + x\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{x}}{t_0 + e^{x}} - \frac{1}{\mathsf{fma}\left(e^{x}, e^{x}, 1\right)}\\
\end{array}
Alternatives
| Alternative 1 |
|---|
| Error | 0.7 |
|---|
| Cost | 52676 |
|---|
\[\begin{array}{l}
t_0 := e^{-x}\\
t_1 := e^{x} + t_0\\
\mathbf{if}\;\frac{e^{x} - t_0}{t_1} \leq 1:\\
\;\;\;\;\frac{\frac{-\mathsf{expm1}\left(-\left(x + x\right)\right)}{t_0}}{t_1}\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{x}}{2} - \frac{1}{\mathsf{fma}\left(e^{x}, e^{x}, 1\right)}\\
\end{array}
\]
| Alternative 2 |
|---|
| Error | 1.0 |
|---|
| Cost | 26308 |
|---|
\[\begin{array}{l}
\mathbf{if}\;x \leq -2.6:\\
\;\;\;\;\frac{e^{x}}{2} - \frac{1}{\mathsf{fma}\left(e^{x}, e^{x}, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot x + \left(\sqrt[3]{0.3333333333333333} \cdot \left(x \cdot \left(x \cdot \left(x \cdot \sqrt[3]{0.1111111111111111}\right)\right)\right) + 0.016666666666666666 \cdot {x}^{5}\right)}{2 + \left(0.08333333333333333 \cdot \left(x \cdot x\right) + 1\right) \cdot \left(x \cdot x\right)}\\
\end{array}
\]
| Alternative 3 |
|---|
| Error | 1.8 |
|---|
| Cost | 21248 |
|---|
\[\frac{2 \cdot x + \left(\sqrt[3]{0.3333333333333333} \cdot \left(x \cdot \left(x \cdot \left(x \cdot \sqrt[3]{0.1111111111111111}\right)\right)\right) + 0.016666666666666666 \cdot {x}^{5}\right)}{2 + \left(0.08333333333333333 \cdot \left(x \cdot x\right) + 1\right) \cdot \left(x \cdot x\right)}
\]
| Alternative 4 |
|---|
| Error | 1.8 |
|---|
| Cost | 8320 |
|---|
\[\frac{2 \cdot x + \left(\left(x \cdot x\right) \cdot \left(0.3333333333333333 \cdot x\right) + 0.016666666666666666 \cdot {x}^{5}\right)}{2 + \left(0.08333333333333333 \cdot \left(x \cdot x\right) + 1\right) \cdot \left(x \cdot x\right)}
\]
| Alternative 5 |
|---|
| Error | 1.9 |
|---|
| Cost | 1600 |
|---|
\[\frac{2 \cdot x + \left(x \cdot x\right) \cdot \left(0.3333333333333333 \cdot x\right)}{2 + \left(0.08333333333333333 \cdot \left(x \cdot x\right) + 1\right) \cdot \left(x \cdot x\right)}
\]
| Alternative 6 |
|---|
| Error | 2.3 |
|---|
| Cost | 576 |
|---|
\[\frac{x + x}{2 + x \cdot x}
\]
| Alternative 7 |
|---|
| Error | 2.4 |
|---|
| Cost | 64 |
|---|
\[x
\]