\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\frac{\frac{1}{3} \cdot {x}^{3} + \left(\frac{1}{60} \cdot {x}^{5} + 2 \cdot x\right)}{2} \cdot \sin ydouble f(double x, double y) {
double r50814 = x;
double r50815 = exp(r50814);
double r50816 = -r50814;
double r50817 = exp(r50816);
double r50818 = r50815 + r50817;
double r50819 = 2.0;
double r50820 = r50818 / r50819;
double r50821 = y;
double r50822 = cos(r50821);
double r50823 = r50820 * r50822;
double r50824 = r50815 - r50817;
double r50825 = r50824 / r50819;
double r50826 = sin(r50821);
double r50827 = r50825 * r50826;
double r50828 = /* ERROR: no complex support in C */;
double r50829 = /* ERROR: no complex support in C */;
return r50829;
}
double f(double x, double y) {
double r50830 = 0.3333333333333333;
double r50831 = x;
double r50832 = 3.0;
double r50833 = pow(r50831, r50832);
double r50834 = r50830 * r50833;
double r50835 = 0.016666666666666666;
double r50836 = 5.0;
double r50837 = pow(r50831, r50836);
double r50838 = r50835 * r50837;
double r50839 = 2.0;
double r50840 = r50839 * r50831;
double r50841 = r50838 + r50840;
double r50842 = r50834 + r50841;
double r50843 = 2.0;
double r50844 = r50842 / r50843;
double r50845 = y;
double r50846 = sin(r50845);
double r50847 = r50844 * r50846;
return r50847;
}



Bits error versus x



Bits error versus y
Initial program 43.9
Simplified43.9
Taylor expanded around 0 0.8
Final simplification0.8
herbie shell --seed 2019291
(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)))))