\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:\\
\;\;\;\;0.5 \cdot \left(\sin y \cdot \left(e^{x} - e^{-x}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\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\\
\end{array}double f(double x, double y) {
double r53938 = x;
double r53939 = exp(r53938);
double r53940 = -r53938;
double r53941 = exp(r53940);
double r53942 = r53939 + r53941;
double r53943 = 2.0;
double r53944 = r53942 / r53943;
double r53945 = y;
double r53946 = cos(r53945);
double r53947 = r53944 * r53946;
double r53948 = r53939 - r53941;
double r53949 = r53948 / r53943;
double r53950 = sin(r53945);
double r53951 = r53949 * r53950;
double r53952 = /* ERROR: no complex support in C */;
double r53953 = /* ERROR: no complex support in C */;
return r53953;
}
double f(double x, double y) {
double r53954 = x;
double r53955 = -0.015295351353249335;
bool r53956 = r53954 <= r53955;
double r53957 = 0.5;
double r53958 = y;
double r53959 = sin(r53958);
double r53960 = exp(r53954);
double r53961 = -r53954;
double r53962 = exp(r53961);
double r53963 = r53960 - r53962;
double r53964 = r53959 * r53963;
double r53965 = r53957 * r53964;
double r53966 = 0.3333333333333333;
double r53967 = 3.0;
double r53968 = pow(r53954, r53967);
double r53969 = 0.016666666666666666;
double r53970 = 5.0;
double r53971 = pow(r53954, r53970);
double r53972 = 2.0;
double r53973 = r53972 * r53954;
double r53974 = fma(r53969, r53971, r53973);
double r53975 = fma(r53966, r53968, r53974);
double r53976 = 2.0;
double r53977 = r53975 / r53976;
double r53978 = r53977 * r53959;
double r53979 = r53956 ? r53965 : r53978;
return r53979;
}



Bits error versus x



Bits error versus y
if x < -0.015295351353249335Initial program 1.6
Simplified1.6
Taylor expanded around inf 1.6
if -0.015295351353249335 < x Initial program 43.2
Simplified43.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)))))