\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 178.4372176880553126920858630910515785217:\\
\;\;\;\;\frac{\sqrt[3]{{\left(\mathsf{fma}\left(0.6666666666666667406815349750104360282421, {x}^{3}, 2\right)\right)}^{3}} - 1 \cdot {x}^{2}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{1 \cdot \left(\frac{e^{x \cdot \left(\varepsilon - 1\right)}}{\varepsilon} + e^{x \cdot \left(\varepsilon - 1\right)}\right) - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}\\
\end{array}double f(double x, double eps) {
double r38105 = 1.0;
double r38106 = eps;
double r38107 = r38105 / r38106;
double r38108 = r38105 + r38107;
double r38109 = r38105 - r38106;
double r38110 = x;
double r38111 = r38109 * r38110;
double r38112 = -r38111;
double r38113 = exp(r38112);
double r38114 = r38108 * r38113;
double r38115 = r38107 - r38105;
double r38116 = r38105 + r38106;
double r38117 = r38116 * r38110;
double r38118 = -r38117;
double r38119 = exp(r38118);
double r38120 = r38115 * r38119;
double r38121 = r38114 - r38120;
double r38122 = 2.0;
double r38123 = r38121 / r38122;
return r38123;
}
double f(double x, double eps) {
double r38124 = x;
double r38125 = 178.4372176880553;
bool r38126 = r38124 <= r38125;
double r38127 = 0.6666666666666667;
double r38128 = 3.0;
double r38129 = pow(r38124, r38128);
double r38130 = 2.0;
double r38131 = fma(r38127, r38129, r38130);
double r38132 = pow(r38131, r38128);
double r38133 = cbrt(r38132);
double r38134 = 1.0;
double r38135 = 2.0;
double r38136 = pow(r38124, r38135);
double r38137 = r38134 * r38136;
double r38138 = r38133 - r38137;
double r38139 = r38138 / r38130;
double r38140 = eps;
double r38141 = r38140 - r38134;
double r38142 = r38124 * r38141;
double r38143 = exp(r38142);
double r38144 = r38143 / r38140;
double r38145 = r38144 + r38143;
double r38146 = r38134 * r38145;
double r38147 = r38134 / r38140;
double r38148 = r38147 - r38134;
double r38149 = r38134 + r38140;
double r38150 = r38149 * r38124;
double r38151 = -r38150;
double r38152 = exp(r38151);
double r38153 = r38148 * r38152;
double r38154 = r38146 - r38153;
double r38155 = r38154 / r38130;
double r38156 = r38126 ? r38139 : r38155;
return r38156;
}



Bits error versus x



Bits error versus eps
if x < 178.4372176880553Initial program 39.0
Taylor expanded around 0 1.3
Simplified1.3
rmApplied add-cbrt-cube1.3
Simplified1.3
if 178.4372176880553 < x Initial program 0.2
Taylor expanded around inf 0.2
Simplified0.2
Final simplification1.1
herbie shell --seed 2019350 +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))