\[\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}
\]
↓
\[\begin{array}{l}
t_0 := \mathsf{expm1}\left(a \cdot \varepsilon\right)\\
t_1 := \mathsf{expm1}\left(b \cdot \varepsilon\right)\\
t_2 := \mathsf{expm1}\left(\left(a + b\right) \cdot \varepsilon\right)\\
t_3 := \varepsilon \cdot t_2\\
t_4 := \frac{t_3}{t_1 \cdot t_0}\\
\mathbf{if}\;a \leq -9.5 \cdot 10^{-162}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;\varepsilon \ne 0:\\
\;\;\;\;\frac{\frac{t_2}{t_0}}{\frac{t_1}{\varepsilon}}\\
\mathbf{else}:\\
\;\;\;\;t_4\\
\end{array}\\
\mathbf{elif}\;a \leq 1.45 \cdot 10^{-57}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;t_2 \ne 0:\\
\;\;\;\;\frac{\frac{\varepsilon}{t_1}}{\mathsf{fma}\left(-0.5, \left(\varepsilon \cdot \varepsilon\right) \cdot a, \frac{a}{b}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{t_3}{t_0 \cdot t_1}\\
\end{array}\\
\mathbf{elif}\;\varepsilon \ne 0:\\
\;\;\;\;\frac{\frac{t_2}{\frac{t_0}{\varepsilon}}}{t_1}\\
\mathbf{else}:\\
\;\;\;\;t_4\\
\end{array}
\]
double code(double a, double b, double eps) {
return (eps * (exp(((a + b) * eps)) - 1.0)) / ((exp((a * eps)) - 1.0) * (exp((b * eps)) - 1.0));
}
↓
double code(double a, double b, double eps) {
double t_0 = expm1((a * eps));
double t_1 = expm1((b * eps));
double t_2 = expm1(((a + b) * eps));
double t_3 = eps * t_2;
double t_4 = t_3 / (t_1 * t_0);
double tmp_1;
if (a <= -9.5e-162) {
double tmp_2;
if (eps != 0.0) {
tmp_2 = (t_2 / t_0) / (t_1 / eps);
} else {
tmp_2 = t_4;
}
tmp_1 = tmp_2;
} else if (a <= 1.45e-57) {
double tmp_3;
if (t_2 != 0.0) {
tmp_3 = (eps / t_1) / fma(-0.5, ((eps * eps) * a), (a / b));
} else {
tmp_3 = t_3 / (t_0 * t_1);
}
tmp_1 = tmp_3;
} else if (eps != 0.0) {
tmp_1 = (t_2 / (t_0 / eps)) / t_1;
} else {
tmp_1 = t_4;
}
return tmp_1;
}
function code(a, b, eps)
return Float64(Float64(eps * Float64(exp(Float64(Float64(a + b) * eps)) - 1.0)) / Float64(Float64(exp(Float64(a * eps)) - 1.0) * Float64(exp(Float64(b * eps)) - 1.0)))
end
↓
function code(a, b, eps)
t_0 = expm1(Float64(a * eps))
t_1 = expm1(Float64(b * eps))
t_2 = expm1(Float64(Float64(a + b) * eps))
t_3 = Float64(eps * t_2)
t_4 = Float64(t_3 / Float64(t_1 * t_0))
tmp_1 = 0.0
if (a <= -9.5e-162)
tmp_2 = 0.0
if (eps != 0.0)
tmp_2 = Float64(Float64(t_2 / t_0) / Float64(t_1 / eps));
else
tmp_2 = t_4;
end
tmp_1 = tmp_2;
elseif (a <= 1.45e-57)
tmp_3 = 0.0
if (t_2 != 0.0)
tmp_3 = Float64(Float64(eps / t_1) / fma(-0.5, Float64(Float64(eps * eps) * a), Float64(a / b)));
else
tmp_3 = Float64(t_3 / Float64(t_0 * t_1));
end
tmp_1 = tmp_3;
elseif (eps != 0.0)
tmp_1 = Float64(Float64(t_2 / Float64(t_0 / eps)) / t_1);
else
tmp_1 = t_4;
end
return tmp_1
end
code[a_, b_, eps_] := N[(N[(eps * N[(N[Exp[N[(N[(a + b), $MachinePrecision] * eps), $MachinePrecision]], $MachinePrecision] - 1.0), $MachinePrecision]), $MachinePrecision] / N[(N[(N[Exp[N[(a * eps), $MachinePrecision]], $MachinePrecision] - 1.0), $MachinePrecision] * N[(N[Exp[N[(b * eps), $MachinePrecision]], $MachinePrecision] - 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
↓
code[a_, b_, eps_] := Block[{t$95$0 = N[(Exp[N[(a * eps), $MachinePrecision]] - 1), $MachinePrecision]}, Block[{t$95$1 = N[(Exp[N[(b * eps), $MachinePrecision]] - 1), $MachinePrecision]}, Block[{t$95$2 = N[(Exp[N[(N[(a + b), $MachinePrecision] * eps), $MachinePrecision]] - 1), $MachinePrecision]}, Block[{t$95$3 = N[(eps * t$95$2), $MachinePrecision]}, Block[{t$95$4 = N[(t$95$3 / N[(t$95$1 * t$95$0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[a, -9.5e-162], If[Unequal[eps, 0.0], N[(N[(t$95$2 / t$95$0), $MachinePrecision] / N[(t$95$1 / eps), $MachinePrecision]), $MachinePrecision], t$95$4], If[LessEqual[a, 1.45e-57], If[Unequal[t$95$2, 0.0], N[(N[(eps / t$95$1), $MachinePrecision] / N[(-0.5 * N[(N[(eps * eps), $MachinePrecision] * a), $MachinePrecision] + N[(a / b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$3 / N[(t$95$0 * t$95$1), $MachinePrecision]), $MachinePrecision]], If[Unequal[eps, 0.0], N[(N[(t$95$2 / N[(t$95$0 / eps), $MachinePrecision]), $MachinePrecision] / t$95$1), $MachinePrecision], t$95$4]]]]]]]]
\frac{\varepsilon \cdot \left(e^{\left(a + b\right) \cdot \varepsilon} - 1\right)}{\left(e^{a \cdot \varepsilon} - 1\right) \cdot \left(e^{b \cdot \varepsilon} - 1\right)}
↓
\begin{array}{l}
t_0 := \mathsf{expm1}\left(a \cdot \varepsilon\right)\\
t_1 := \mathsf{expm1}\left(b \cdot \varepsilon\right)\\
t_2 := \mathsf{expm1}\left(\left(a + b\right) \cdot \varepsilon\right)\\
t_3 := \varepsilon \cdot t_2\\
t_4 := \frac{t_3}{t_1 \cdot t_0}\\
\mathbf{if}\;a \leq -9.5 \cdot 10^{-162}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;\varepsilon \ne 0:\\
\;\;\;\;\frac{\frac{t_2}{t_0}}{\frac{t_1}{\varepsilon}}\\
\mathbf{else}:\\
\;\;\;\;t_4\\
\end{array}\\
\mathbf{elif}\;a \leq 1.45 \cdot 10^{-57}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;t_2 \ne 0:\\
\;\;\;\;\frac{\frac{\varepsilon}{t_1}}{\mathsf{fma}\left(-0.5, \left(\varepsilon \cdot \varepsilon\right) \cdot a, \frac{a}{b}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{t_3}{t_0 \cdot t_1}\\
\end{array}\\
\mathbf{elif}\;\varepsilon \ne 0:\\
\;\;\;\;\frac{\frac{t_2}{\frac{t_0}{\varepsilon}}}{t_1}\\
\mathbf{else}:\\
\;\;\;\;t_4\\
\end{array}