\frac{e^{x} - e^{-x}}{2}\begin{array}{l}
\mathbf{if}\;x \le -0.01288229977934218090096507580710749607533:\\
\;\;\;\;\frac{\frac{{\left(e^{x}\right)}^{2} - {\left(e^{-2}\right)}^{x}}{{\left(e^{x}\right)}^{2} - {\left(e^{-2}\right)}^{x}} \cdot \left(e^{x} - e^{-x}\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}{2}\\
\end{array}double f(double x) {
double r55079 = x;
double r55080 = exp(r55079);
double r55081 = -r55079;
double r55082 = exp(r55081);
double r55083 = r55080 - r55082;
double r55084 = 2.0;
double r55085 = r55083 / r55084;
return r55085;
}
double f(double x) {
double r55086 = x;
double r55087 = -0.012882299779342181;
bool r55088 = r55086 <= r55087;
double r55089 = exp(r55086);
double r55090 = 2.0;
double r55091 = pow(r55089, r55090);
double r55092 = -2.0;
double r55093 = exp(r55092);
double r55094 = pow(r55093, r55086);
double r55095 = r55091 - r55094;
double r55096 = r55095 / r55095;
double r55097 = -r55086;
double r55098 = exp(r55097);
double r55099 = r55089 - r55098;
double r55100 = r55096 * r55099;
double r55101 = 2.0;
double r55102 = r55100 / r55101;
double r55103 = 0.3333333333333333;
double r55104 = 3.0;
double r55105 = pow(r55086, r55104);
double r55106 = 0.016666666666666666;
double r55107 = 5.0;
double r55108 = pow(r55086, r55107);
double r55109 = r55090 * r55086;
double r55110 = fma(r55106, r55108, r55109);
double r55111 = fma(r55103, r55105, r55110);
double r55112 = r55111 / r55101;
double r55113 = r55088 ? r55102 : r55112;
return r55113;
}



Bits error versus x
if x < -0.012882299779342181Initial program 0.8
rmApplied flip--5.2
Simplified5.1
rmApplied flip-+5.1
Applied associate-/r/5.1
Simplified5.2
if -0.012882299779342181 < x Initial program 58.6
Taylor expanded around 0 0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019323 +o rules:numerics
(FPCore (x)
:name "Hyperbolic sine"
:precision binary64
(/ (- (exp x) (exp (- x))) 2))