\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 46.924791671462984:\\
\;\;\;\;\sqrt[3]{\sqrt{\left(1 \cdot {x}^{3} + 1\right) - 1.5 \cdot {x}^{2}} \cdot \sqrt{\left(1 \cdot {x}^{3} + 1\right) - 1.5 \cdot {x}^{2}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1 + \frac{1}{\varepsilon}}{e^{\left(1 - \varepsilon\right) \cdot x}}}{2} - \frac{\frac{\frac{1}{\varepsilon} - 1}{e^{x \cdot \left(\varepsilon + 1\right)}}}{2}\\
\end{array}double f(double x, double eps) {
double r34128 = 1.0;
double r34129 = eps;
double r34130 = r34128 / r34129;
double r34131 = r34128 + r34130;
double r34132 = r34128 - r34129;
double r34133 = x;
double r34134 = r34132 * r34133;
double r34135 = -r34134;
double r34136 = exp(r34135);
double r34137 = r34131 * r34136;
double r34138 = r34130 - r34128;
double r34139 = r34128 + r34129;
double r34140 = r34139 * r34133;
double r34141 = -r34140;
double r34142 = exp(r34141);
double r34143 = r34138 * r34142;
double r34144 = r34137 - r34143;
double r34145 = 2.0;
double r34146 = r34144 / r34145;
return r34146;
}
double f(double x, double eps) {
double r34147 = x;
double r34148 = 46.924791671462984;
bool r34149 = r34147 <= r34148;
double r34150 = 1.0;
double r34151 = 3.0;
double r34152 = pow(r34147, r34151);
double r34153 = r34150 * r34152;
double r34154 = r34153 + r34150;
double r34155 = 1.5;
double r34156 = 2.0;
double r34157 = pow(r34147, r34156);
double r34158 = r34155 * r34157;
double r34159 = r34154 - r34158;
double r34160 = sqrt(r34159);
double r34161 = r34160 * r34160;
double r34162 = cbrt(r34161);
double r34163 = eps;
double r34164 = r34150 / r34163;
double r34165 = r34150 + r34164;
double r34166 = r34150 - r34163;
double r34167 = r34166 * r34147;
double r34168 = exp(r34167);
double r34169 = r34165 / r34168;
double r34170 = 2.0;
double r34171 = r34169 / r34170;
double r34172 = r34164 - r34150;
double r34173 = r34163 + r34150;
double r34174 = r34147 * r34173;
double r34175 = exp(r34174);
double r34176 = r34172 / r34175;
double r34177 = r34176 / r34170;
double r34178 = r34171 - r34177;
double r34179 = r34149 ? r34162 : r34178;
return r34179;
}



Bits error versus x



Bits error versus eps
Results
if x < 46.924791671462984Initial program 38.9
Simplified38.9
Taylor expanded around 0 1.4
rmApplied add-cbrt-cube1.4
Simplified1.4
Taylor expanded around 0 1.4
rmApplied add-sqr-sqrt1.4
if 46.924791671462984 < x Initial program 0.2
Simplified0.2
Taylor expanded around 0 0.2
Simplified0.2
Final simplification1.1
herbie shell --seed 2020059
(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))