\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 273.9633798024049156083492562174797058105:\\
\;\;\;\;\frac{\mathsf{fma}\left({x}^{3}, 0.6666666666666667406815349750104360282421, 2 - 1 \cdot {x}^{2}\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot e^{-\left(1 - \varepsilon\right) \cdot x} - 1 \cdot \left(\frac{e^{-\left(x \cdot \varepsilon + 1 \cdot x\right)}}{\varepsilon} - \frac{1}{e^{\mathsf{fma}\left(x, \varepsilon, 1 \cdot x\right)}}\right)}{2}\\
\end{array}double f(double x, double eps) {
double r45149 = 1.0;
double r45150 = eps;
double r45151 = r45149 / r45150;
double r45152 = r45149 + r45151;
double r45153 = r45149 - r45150;
double r45154 = x;
double r45155 = r45153 * r45154;
double r45156 = -r45155;
double r45157 = exp(r45156);
double r45158 = r45152 * r45157;
double r45159 = r45151 - r45149;
double r45160 = r45149 + r45150;
double r45161 = r45160 * r45154;
double r45162 = -r45161;
double r45163 = exp(r45162);
double r45164 = r45159 * r45163;
double r45165 = r45158 - r45164;
double r45166 = 2.0;
double r45167 = r45165 / r45166;
return r45167;
}
double f(double x, double eps) {
double r45168 = x;
double r45169 = 273.9633798024049;
bool r45170 = r45168 <= r45169;
double r45171 = 3.0;
double r45172 = pow(r45168, r45171);
double r45173 = 0.6666666666666667;
double r45174 = 2.0;
double r45175 = 1.0;
double r45176 = 2.0;
double r45177 = pow(r45168, r45176);
double r45178 = r45175 * r45177;
double r45179 = r45174 - r45178;
double r45180 = fma(r45172, r45173, r45179);
double r45181 = r45180 / r45174;
double r45182 = eps;
double r45183 = r45175 / r45182;
double r45184 = r45175 + r45183;
double r45185 = r45175 - r45182;
double r45186 = r45185 * r45168;
double r45187 = -r45186;
double r45188 = exp(r45187);
double r45189 = r45184 * r45188;
double r45190 = r45168 * r45182;
double r45191 = r45175 * r45168;
double r45192 = r45190 + r45191;
double r45193 = -r45192;
double r45194 = exp(r45193);
double r45195 = r45194 / r45182;
double r45196 = 1.0;
double r45197 = fma(r45168, r45182, r45191);
double r45198 = exp(r45197);
double r45199 = r45196 / r45198;
double r45200 = r45195 - r45199;
double r45201 = r45175 * r45200;
double r45202 = r45189 - r45201;
double r45203 = r45202 / r45174;
double r45204 = r45170 ? r45181 : r45203;
return r45204;
}



Bits error versus x



Bits error versus eps
if x < 273.9633798024049Initial program 39.1
Taylor expanded around 0 1.4
Simplified1.4
if 273.9633798024049 < x Initial program 0.1
Taylor expanded around inf 0.1
Simplified0.1
Final simplification1.1
herbie shell --seed 2019353 +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))