\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:\\
\;\;\;\;\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\\
\mathbf{else}:\\
\;\;\;\;\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\frac{1}{3} \cdot {x}^{3} + \left(\frac{1}{60} \cdot {x}^{5} + 2 \cdot x\right)}{2} \cdot \sin y i\right))\\
\end{array}double f(double x, double y) {
double r39675 = x;
double r39676 = exp(r39675);
double r39677 = -r39675;
double r39678 = exp(r39677);
double r39679 = r39676 + r39678;
double r39680 = 2.0;
double r39681 = r39679 / r39680;
double r39682 = y;
double r39683 = cos(r39682);
double r39684 = r39681 * r39683;
double r39685 = r39676 - r39678;
double r39686 = r39685 / r39680;
double r39687 = sin(r39682);
double r39688 = r39686 * r39687;
double r39689 = /* ERROR: no complex support in C */;
double r39690 = /* ERROR: no complex support in C */;
return r39690;
}
double f(double x, double y) {
double r39691 = x;
double r39692 = -0.015295351353249335;
bool r39693 = r39691 <= r39692;
double r39694 = exp(r39691);
double r39695 = -r39691;
double r39696 = exp(r39695);
double r39697 = r39694 + r39696;
double r39698 = 2.0;
double r39699 = r39697 / r39698;
double r39700 = y;
double r39701 = cos(r39700);
double r39702 = r39699 * r39701;
double r39703 = r39694 - r39696;
double r39704 = r39703 / r39698;
double r39705 = sin(r39700);
double r39706 = r39704 * r39705;
double r39707 = /* ERROR: no complex support in C */;
double r39708 = /* ERROR: no complex support in C */;
double r39709 = 0.3333333333333333;
double r39710 = 3.0;
double r39711 = pow(r39691, r39710);
double r39712 = r39709 * r39711;
double r39713 = 0.016666666666666666;
double r39714 = 5.0;
double r39715 = pow(r39691, r39714);
double r39716 = r39713 * r39715;
double r39717 = 2.0;
double r39718 = r39717 * r39691;
double r39719 = r39716 + r39718;
double r39720 = r39712 + r39719;
double r39721 = r39720 / r39698;
double r39722 = r39721 * r39705;
double r39723 = /* ERROR: no complex support in C */;
double r39724 = /* ERROR: no complex support in C */;
double r39725 = r39693 ? r39708 : r39724;
return r39725;
}



Bits error versus x



Bits error versus y
if x < -0.015295351353249335Initial program 1.6
if -0.015295351353249335 < x Initial program 43.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)))))