\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\begin{array}{l}
\mathbf{if}\;x \le -0.015295351353249335:\\
\;\;\;\;\frac{e^{x} - e^{-x}}{2} \cdot \sin y\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{3} \cdot {x}^{3} + \left(\frac{1}{60} \cdot {x}^{5} + 2 \cdot x\right)}{2} \cdot \sin y\\
\end{array}double f(double x, double y) {
double r42485 = x;
double r42486 = exp(r42485);
double r42487 = -r42485;
double r42488 = exp(r42487);
double r42489 = r42486 + r42488;
double r42490 = 2.0;
double r42491 = r42489 / r42490;
double r42492 = y;
double r42493 = cos(r42492);
double r42494 = r42491 * r42493;
double r42495 = r42486 - r42488;
double r42496 = r42495 / r42490;
double r42497 = sin(r42492);
double r42498 = r42496 * r42497;
double r42499 = /* ERROR: no complex support in C */;
double r42500 = /* ERROR: no complex support in C */;
return r42500;
}
double f(double x, double y) {
double r42501 = x;
double r42502 = -0.015295351353249335;
bool r42503 = r42501 <= r42502;
double r42504 = exp(r42501);
double r42505 = -r42501;
double r42506 = exp(r42505);
double r42507 = r42504 - r42506;
double r42508 = 2.0;
double r42509 = r42507 / r42508;
double r42510 = y;
double r42511 = sin(r42510);
double r42512 = r42509 * r42511;
double r42513 = 0.3333333333333333;
double r42514 = 3.0;
double r42515 = pow(r42501, r42514);
double r42516 = r42513 * r42515;
double r42517 = 0.016666666666666666;
double r42518 = 5.0;
double r42519 = pow(r42501, r42518);
double r42520 = r42517 * r42519;
double r42521 = 2.0;
double r42522 = r42521 * r42501;
double r42523 = r42520 + r42522;
double r42524 = r42516 + r42523;
double r42525 = r42524 / r42508;
double r42526 = r42525 * r42511;
double r42527 = r42503 ? r42512 : r42526;
return r42527;
}



Bits error versus x



Bits error versus y
if x < -0.015295351353249335Initial program 1.6
Simplified1.6
if -0.015295351353249335 < x Initial program 43.2
Simplified43.2
Taylor expanded around 0 0.4
Final simplification0.4
herbie shell --seed 2020047
(FPCore (x y)
:name "Euler formula imaginary part (p55)"
:precision binary64
(im (complex (* (/ (+ (exp x) (exp (- x))) 2) (cos y)) (* (/ (- (exp x) (exp (- x))) 2) (sin y)))))