\frac{e^{x} - e^{-x}}{2}\begin{array}{l}
\mathbf{if}\;x \le 0.0154935820765723566:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{x} + \left(-e^{-x}\right)}{2}\\
\end{array}double f(double x) {
double r68133 = x;
double r68134 = exp(r68133);
double r68135 = -r68133;
double r68136 = exp(r68135);
double r68137 = r68134 - r68136;
double r68138 = 2.0;
double r68139 = r68137 / r68138;
return r68139;
}
double f(double x) {
double r68140 = x;
double r68141 = 0.015493582076572357;
bool r68142 = r68140 <= r68141;
double r68143 = 0.3333333333333333;
double r68144 = 3.0;
double r68145 = pow(r68140, r68144);
double r68146 = 0.016666666666666666;
double r68147 = 5.0;
double r68148 = pow(r68140, r68147);
double r68149 = 2.0;
double r68150 = r68149 * r68140;
double r68151 = fma(r68146, r68148, r68150);
double r68152 = fma(r68143, r68145, r68151);
double r68153 = 2.0;
double r68154 = r68152 / r68153;
double r68155 = exp(r68140);
double r68156 = -r68140;
double r68157 = exp(r68156);
double r68158 = -r68157;
double r68159 = r68155 + r68158;
double r68160 = r68159 / r68153;
double r68161 = r68142 ? r68154 : r68160;
return r68161;
}



Bits error versus x
if x < 0.015493582076572357Initial program 58.5
Taylor expanded around 0 0.4
Simplified0.4
if 0.015493582076572357 < x Initial program 0.6
rmApplied add-sqr-sqrt1.1
Applied fma-neg1.0
rmApplied fma-udef1.1
Simplified0.6
Final simplification0.4
herbie shell --seed 2020035 +o rules:numerics
(FPCore (x)
:name "Hyperbolic sine"
:precision binary64
(/ (- (exp x) (exp (- x))) 2))