\frac{e^{x} - e^{-x}}{2}\begin{array}{l}
\mathbf{if}\;x \le -0.01560020149348755567897395479803890339099:\\
\;\;\;\;\frac{\frac{e^{x}}{e^{-2 \cdot x} + 1} - \frac{e^{-x}}{{\left(e^{x}\right)}^{2} + 1}}{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 r39433 = x;
double r39434 = exp(r39433);
double r39435 = -r39433;
double r39436 = exp(r39435);
double r39437 = r39434 - r39436;
double r39438 = 2.0;
double r39439 = r39437 / r39438;
return r39439;
}
double f(double x) {
double r39440 = x;
double r39441 = -0.015600201493487556;
bool r39442 = r39440 <= r39441;
double r39443 = exp(r39440);
double r39444 = -2.0;
double r39445 = r39444 * r39440;
double r39446 = exp(r39445);
double r39447 = 1.0;
double r39448 = r39446 + r39447;
double r39449 = r39443 / r39448;
double r39450 = -r39440;
double r39451 = exp(r39450);
double r39452 = 2.0;
double r39453 = pow(r39443, r39452);
double r39454 = r39453 + r39447;
double r39455 = r39451 / r39454;
double r39456 = r39449 - r39455;
double r39457 = 2.0;
double r39458 = r39456 / r39457;
double r39459 = 0.3333333333333333;
double r39460 = 3.0;
double r39461 = pow(r39440, r39460);
double r39462 = r39459 * r39461;
double r39463 = 0.016666666666666666;
double r39464 = 5.0;
double r39465 = pow(r39440, r39464);
double r39466 = r39463 * r39465;
double r39467 = r39462 + r39466;
double r39468 = r39452 * r39440;
double r39469 = r39467 + r39468;
double r39470 = r39469 / r39457;
double r39471 = r39442 ? r39458 : r39470;
return r39471;
}



Bits error versus x
Results
if x < -0.015600201493487556Initial program 0.7
rmApplied flip--5.3
Simplified5.2
rmApplied div-sub5.2
Simplified5.4
Simplified0.5
if -0.015600201493487556 < x Initial program 58.5
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))