\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 3.79043542849065522529920941679858858976 \cdot 10^{-16}:\\
\;\;\;\;\mathsf{fma}\left(1.387778780781445675529539585113525390625 \cdot 10^{-17}, \frac{{\left(\sqrt[3]{x} \cdot \left(2 \cdot \log \left(\sqrt[3]{e^{\sqrt[3]{x}}}\right) + \log \left(\sqrt[3]{e^{\sqrt[3]{x}}}\right)\right)\right)}^{3}}{\frac{\varepsilon}{x}}, 1 - 0.5 \cdot {x}^{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{e^{-\mathsf{fma}\left(x, \varepsilon, 1 \cdot x\right)}}{2}, 1 - \frac{1}{\varepsilon}, \frac{1 + \frac{1}{\varepsilon}}{2 \cdot e^{\left(1 - \varepsilon\right) \cdot x}}\right)\\
\end{array}double f(double x, double eps) {
double r58159 = 1.0;
double r58160 = eps;
double r58161 = r58159 / r58160;
double r58162 = r58159 + r58161;
double r58163 = r58159 - r58160;
double r58164 = x;
double r58165 = r58163 * r58164;
double r58166 = -r58165;
double r58167 = exp(r58166);
double r58168 = r58162 * r58167;
double r58169 = r58161 - r58159;
double r58170 = r58159 + r58160;
double r58171 = r58170 * r58164;
double r58172 = -r58171;
double r58173 = exp(r58172);
double r58174 = r58169 * r58173;
double r58175 = r58168 - r58174;
double r58176 = 2.0;
double r58177 = r58175 / r58176;
return r58177;
}
double f(double x, double eps) {
double r58178 = x;
double r58179 = 3.790435428490655e-16;
bool r58180 = r58178 <= r58179;
double r58181 = 1.3877787807814457e-17;
double r58182 = cbrt(r58178);
double r58183 = 2.0;
double r58184 = exp(r58182);
double r58185 = cbrt(r58184);
double r58186 = log(r58185);
double r58187 = r58183 * r58186;
double r58188 = r58187 + r58186;
double r58189 = r58182 * r58188;
double r58190 = 3.0;
double r58191 = pow(r58189, r58190);
double r58192 = eps;
double r58193 = r58192 / r58178;
double r58194 = r58191 / r58193;
double r58195 = 1.0;
double r58196 = 0.5;
double r58197 = pow(r58178, r58183);
double r58198 = r58196 * r58197;
double r58199 = r58195 - r58198;
double r58200 = fma(r58181, r58194, r58199);
double r58201 = r58195 * r58178;
double r58202 = fma(r58178, r58192, r58201);
double r58203 = -r58202;
double r58204 = exp(r58203);
double r58205 = 2.0;
double r58206 = r58204 / r58205;
double r58207 = r58195 / r58192;
double r58208 = r58195 - r58207;
double r58209 = r58195 + r58207;
double r58210 = r58195 - r58192;
double r58211 = r58210 * r58178;
double r58212 = exp(r58211);
double r58213 = r58205 * r58212;
double r58214 = r58209 / r58213;
double r58215 = fma(r58206, r58208, r58214);
double r58216 = r58180 ? r58200 : r58215;
return r58216;
}



Bits error versus x



Bits error versus eps
if x < 3.790435428490655e-16Initial program 38.4
Simplified38.5
Taylor expanded around 0 6.2
Simplified6.2
rmApplied add-cube-cbrt6.2
Applied unpow-prod-down6.2
Applied associate-/l*6.2
Simplified6.2
rmApplied add-log-exp4.6
rmApplied add-cube-cbrt4.4
Applied log-prod4.4
Simplified4.4
if 3.790435428490655e-16 < x Initial program 3.9
Simplified3.9
Taylor expanded around 0 3.9
Simplified3.9
Final simplification4.3
herbie shell --seed 2019362 +o rules:numerics
(FPCore (x eps)
:name "NMSE Section 6.1 mentioned, A"
:precision binary64
(/ (- (* (+ 1 (/ 1 eps)) (exp (- (* (- 1 eps) x)))) (* (- (/ 1 eps) 1) (exp (- (* (+ 1 eps) x))))) 2))