\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 \le 162.5604579277316474872350227087736129761:\\
\;\;\;\;\frac{\mathsf{fma}\left({x}^{3}, 0.6666666666666667406815349750104360282421, 2\right) - 1 \cdot \left(x \cdot x\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\frac{1}{\varepsilon} + 1\right) \cdot e^{\left(1 - \varepsilon\right) \cdot \left(-x\right)} - \sqrt[3]{e^{x \cdot \left(-\left(\varepsilon + 1\right)\right)} \cdot \left(\frac{1}{\varepsilon} - 1\right)} \cdot \left(\sqrt[3]{e^{x \cdot \left(-\left(\varepsilon + 1\right)\right)} \cdot \left(\frac{1}{\varepsilon} - 1\right)} \cdot \sqrt[3]{e^{x \cdot \left(-\left(\varepsilon + 1\right)\right)} \cdot \left(\frac{1}{\varepsilon} - 1\right)}\right)}{2}\\
\end{array}double f(double x, double eps) {
double r43182 = 1.0;
double r43183 = eps;
double r43184 = r43182 / r43183;
double r43185 = r43182 + r43184;
double r43186 = r43182 - r43183;
double r43187 = x;
double r43188 = r43186 * r43187;
double r43189 = -r43188;
double r43190 = exp(r43189);
double r43191 = r43185 * r43190;
double r43192 = r43184 - r43182;
double r43193 = r43182 + r43183;
double r43194 = r43193 * r43187;
double r43195 = -r43194;
double r43196 = exp(r43195);
double r43197 = r43192 * r43196;
double r43198 = r43191 - r43197;
double r43199 = 2.0;
double r43200 = r43198 / r43199;
return r43200;
}
double f(double x, double eps) {
double r43201 = x;
double r43202 = 162.56045792773165;
bool r43203 = r43201 <= r43202;
double r43204 = 3.0;
double r43205 = pow(r43201, r43204);
double r43206 = 0.6666666666666667;
double r43207 = 2.0;
double r43208 = fma(r43205, r43206, r43207);
double r43209 = 1.0;
double r43210 = r43201 * r43201;
double r43211 = r43209 * r43210;
double r43212 = r43208 - r43211;
double r43213 = r43212 / r43207;
double r43214 = eps;
double r43215 = r43209 / r43214;
double r43216 = r43215 + r43209;
double r43217 = r43209 - r43214;
double r43218 = -r43201;
double r43219 = r43217 * r43218;
double r43220 = exp(r43219);
double r43221 = r43216 * r43220;
double r43222 = r43214 + r43209;
double r43223 = -r43222;
double r43224 = r43201 * r43223;
double r43225 = exp(r43224);
double r43226 = r43215 - r43209;
double r43227 = r43225 * r43226;
double r43228 = cbrt(r43227);
double r43229 = r43228 * r43228;
double r43230 = r43228 * r43229;
double r43231 = r43221 - r43230;
double r43232 = r43231 / r43207;
double r43233 = r43203 ? r43213 : r43232;
return r43233;
}



Bits error versus x



Bits error versus eps
if x < 162.56045792773165Initial program 39.1
Taylor expanded around 0 1.4
Simplified1.4
if 162.56045792773165 < x Initial program 0.1
rmApplied add-cube-cbrt0.1
Simplified0.1
Simplified0.1
Final simplification1.1
herbie shell --seed 2019194 +o rules:numerics
(FPCore (x eps)
:name "NMSE Section 6.1 mentioned, A"
(/ (- (* (+ 1.0 (/ 1.0 eps)) (exp (- (* (- 1.0 eps) x)))) (* (- (/ 1.0 eps) 1.0) (exp (- (* (+ 1.0 eps) x))))) 2.0))