\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.01175618612580518231036652565535405301489:\\
\;\;\;\;\Im(\left(\cos y \cdot \frac{e^{x} + e^{-x}}{2} + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\\
\mathbf{else}:\\
\;\;\;\;\Im(\left(\cos y \cdot \frac{e^{x} + e^{-x}}{2} + \frac{\mathsf{fma}\left({x}^{5}, \frac{1}{60}, \left(2 + \frac{1}{3} \cdot \left(x \cdot x\right)\right) \cdot x\right)}{2} \cdot \sin y i\right))\\
\end{array}double f(double x, double y) {
double r2337629 = x;
double r2337630 = exp(r2337629);
double r2337631 = -r2337629;
double r2337632 = exp(r2337631);
double r2337633 = r2337630 + r2337632;
double r2337634 = 2.0;
double r2337635 = r2337633 / r2337634;
double r2337636 = y;
double r2337637 = cos(r2337636);
double r2337638 = r2337635 * r2337637;
double r2337639 = r2337630 - r2337632;
double r2337640 = r2337639 / r2337634;
double r2337641 = sin(r2337636);
double r2337642 = r2337640 * r2337641;
double r2337643 = /* ERROR: no complex support in C */;
double r2337644 = /* ERROR: no complex support in C */;
return r2337644;
}
double f(double x, double y) {
double r2337645 = x;
double r2337646 = -0.011756186125805182;
bool r2337647 = r2337645 <= r2337646;
double r2337648 = y;
double r2337649 = cos(r2337648);
double r2337650 = exp(r2337645);
double r2337651 = -r2337645;
double r2337652 = exp(r2337651);
double r2337653 = r2337650 + r2337652;
double r2337654 = 2.0;
double r2337655 = r2337653 / r2337654;
double r2337656 = r2337649 * r2337655;
double r2337657 = r2337650 - r2337652;
double r2337658 = r2337657 / r2337654;
double r2337659 = sin(r2337648);
double r2337660 = r2337658 * r2337659;
double r2337661 = /* ERROR: no complex support in C */;
double r2337662 = /* ERROR: no complex support in C */;
double r2337663 = 5.0;
double r2337664 = pow(r2337645, r2337663);
double r2337665 = 0.016666666666666666;
double r2337666 = 2.0;
double r2337667 = 0.3333333333333333;
double r2337668 = r2337645 * r2337645;
double r2337669 = r2337667 * r2337668;
double r2337670 = r2337666 + r2337669;
double r2337671 = r2337670 * r2337645;
double r2337672 = fma(r2337664, r2337665, r2337671);
double r2337673 = r2337672 / r2337654;
double r2337674 = r2337673 * r2337659;
double r2337675 = /* ERROR: no complex support in C */;
double r2337676 = /* ERROR: no complex support in C */;
double r2337677 = r2337647 ? r2337662 : r2337676;
return r2337677;
}



Bits error versus x



Bits error versus y
if x < -0.011756186125805182Initial program 3.0
if -0.011756186125805182 < x Initial program 43.8
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019200 +o rules:numerics
(FPCore (x y)
:name "Euler formula imaginary part (p55)"
(im (complex (* (/ (+ (exp x) (exp (- x))) 2.0) (cos y)) (* (/ (- (exp x) (exp (- x))) 2.0) (sin y)))))