\frac{e^{x} - e^{-x}}{2}\begin{array}{l}
\mathbf{if}\;x \le -0.01288229977934218090096507580710749607533:\\
\;\;\;\;\frac{\frac{\left(\left|e^{-x}\right| + \left|e^{x}\right|\right) \cdot \left(\left|e^{x}\right| - \left|e^{-x}\right|\right)}{e^{x} + e^{-x}}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\frac{1}{3} \cdot {x}^{3} + \frac{1}{60} \cdot {x}^{5}\right) + 2 \cdot x}{2}\\
\end{array}double f(double x) {
double r50240 = x;
double r50241 = exp(r50240);
double r50242 = -r50240;
double r50243 = exp(r50242);
double r50244 = r50241 - r50243;
double r50245 = 2.0;
double r50246 = r50244 / r50245;
return r50246;
}
double f(double x) {
double r50247 = x;
double r50248 = -0.012882299779342181;
bool r50249 = r50247 <= r50248;
double r50250 = -r50247;
double r50251 = exp(r50250);
double r50252 = fabs(r50251);
double r50253 = exp(r50247);
double r50254 = fabs(r50253);
double r50255 = r50252 + r50254;
double r50256 = r50254 - r50252;
double r50257 = r50255 * r50256;
double r50258 = r50253 + r50251;
double r50259 = r50257 / r50258;
double r50260 = 2.0;
double r50261 = r50259 / r50260;
double r50262 = 0.3333333333333333;
double r50263 = 3.0;
double r50264 = pow(r50247, r50263);
double r50265 = r50262 * r50264;
double r50266 = 0.016666666666666666;
double r50267 = 5.0;
double r50268 = pow(r50247, r50267);
double r50269 = r50266 * r50268;
double r50270 = r50265 + r50269;
double r50271 = 2.0;
double r50272 = r50271 * r50247;
double r50273 = r50270 + r50272;
double r50274 = r50273 / r50260;
double r50275 = r50249 ? r50261 : r50274;
return r50275;
}



Bits error versus x
Results
if x < -0.012882299779342181Initial program 0.8
rmApplied flip--5.2
Simplified5.1
rmApplied add-sqr-sqrt5.4
Applied add-sqr-sqrt5.5
Applied difference-of-squares5.4
Simplified5.4
Simplified5.2
if -0.012882299779342181 < x Initial program 58.6
Taylor expanded around 0 0.3
rmApplied associate-+r+0.3
Final simplification0.3
herbie shell --seed 2019323
(FPCore (x)
:name "Hyperbolic sine"
:precision binary64
(/ (- (exp x) (exp (- x))) 2))