\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.0166569179939537911:\\
\;\;\;\;\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\mathsf{fma}\left(\sqrt{e^{x}}, \sqrt{e^{x}}, -e^{-x}\right)}{2} \cdot \sin y i\right))\\
\mathbf{else}:\\
\;\;\;\;\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}{2} \cdot \sin y i\right))\\
\end{array}double f(double x, double y) {
double r42629 = x;
double r42630 = exp(r42629);
double r42631 = -r42629;
double r42632 = exp(r42631);
double r42633 = r42630 + r42632;
double r42634 = 2.0;
double r42635 = r42633 / r42634;
double r42636 = y;
double r42637 = cos(r42636);
double r42638 = r42635 * r42637;
double r42639 = r42630 - r42632;
double r42640 = r42639 / r42634;
double r42641 = sin(r42636);
double r42642 = r42640 * r42641;
double r42643 = /* ERROR: no complex support in C */;
double r42644 = /* ERROR: no complex support in C */;
return r42644;
}
double f(double x, double y) {
double r42645 = x;
double r42646 = -0.01665691799395379;
bool r42647 = r42645 <= r42646;
double r42648 = exp(r42645);
double r42649 = -r42645;
double r42650 = exp(r42649);
double r42651 = r42648 + r42650;
double r42652 = 2.0;
double r42653 = r42651 / r42652;
double r42654 = y;
double r42655 = cos(r42654);
double r42656 = r42653 * r42655;
double r42657 = sqrt(r42648);
double r42658 = -r42650;
double r42659 = fma(r42657, r42657, r42658);
double r42660 = r42659 / r42652;
double r42661 = sin(r42654);
double r42662 = r42660 * r42661;
double r42663 = /* ERROR: no complex support in C */;
double r42664 = /* ERROR: no complex support in C */;
double r42665 = 0.3333333333333333;
double r42666 = 3.0;
double r42667 = pow(r42645, r42666);
double r42668 = 0.016666666666666666;
double r42669 = 5.0;
double r42670 = pow(r42645, r42669);
double r42671 = 2.0;
double r42672 = r42671 * r42645;
double r42673 = fma(r42668, r42670, r42672);
double r42674 = fma(r42665, r42667, r42673);
double r42675 = r42674 / r42652;
double r42676 = r42675 * r42661;
double r42677 = /* ERROR: no complex support in C */;
double r42678 = /* ERROR: no complex support in C */;
double r42679 = r42647 ? r42664 : r42678;
return r42679;
}



Bits error versus x



Bits error versus y
if x < -0.01665691799395379Initial program 1.5
rmApplied add-sqr-sqrt1.6
Applied fma-neg1.7
if -0.01665691799395379 < x Initial program 43.2
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020047 +o rules:numerics
(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)))))