\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(\left(\left(e^{-x} + e^{x}\right) \cdot \cos y\right) \cdot 0.5 + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\\
\mathbf{else}:\\
\;\;\;\;\Im(\left(\cos y \cdot \frac{e^{-x} + e^{x}}{2} + \sin y \cdot \frac{\left(2 + \frac{1}{3} \cdot \left(x \cdot x\right)\right) \cdot x + \frac{1}{60} \cdot {x}^{5}}{2} i\right))\\
\end{array}double f(double x, double y) {
double r2402022 = x;
double r2402023 = exp(r2402022);
double r2402024 = -r2402022;
double r2402025 = exp(r2402024);
double r2402026 = r2402023 + r2402025;
double r2402027 = 2.0;
double r2402028 = r2402026 / r2402027;
double r2402029 = y;
double r2402030 = cos(r2402029);
double r2402031 = r2402028 * r2402030;
double r2402032 = r2402023 - r2402025;
double r2402033 = r2402032 / r2402027;
double r2402034 = sin(r2402029);
double r2402035 = r2402033 * r2402034;
double r2402036 = /* ERROR: no complex support in C */;
double r2402037 = /* ERROR: no complex support in C */;
return r2402037;
}
double f(double x, double y) {
double r2402038 = x;
double r2402039 = -0.011756186125805182;
bool r2402040 = r2402038 <= r2402039;
double r2402041 = -r2402038;
double r2402042 = exp(r2402041);
double r2402043 = exp(r2402038);
double r2402044 = r2402042 + r2402043;
double r2402045 = y;
double r2402046 = cos(r2402045);
double r2402047 = r2402044 * r2402046;
double r2402048 = 0.5;
double r2402049 = r2402047 * r2402048;
double r2402050 = r2402043 - r2402042;
double r2402051 = 2.0;
double r2402052 = r2402050 / r2402051;
double r2402053 = sin(r2402045);
double r2402054 = r2402052 * r2402053;
double r2402055 = /* ERROR: no complex support in C */;
double r2402056 = /* ERROR: no complex support in C */;
double r2402057 = r2402044 / r2402051;
double r2402058 = r2402046 * r2402057;
double r2402059 = 2.0;
double r2402060 = 0.3333333333333333;
double r2402061 = r2402038 * r2402038;
double r2402062 = r2402060 * r2402061;
double r2402063 = r2402059 + r2402062;
double r2402064 = r2402063 * r2402038;
double r2402065 = 0.016666666666666666;
double r2402066 = 5.0;
double r2402067 = pow(r2402038, r2402066);
double r2402068 = r2402065 * r2402067;
double r2402069 = r2402064 + r2402068;
double r2402070 = r2402069 / r2402051;
double r2402071 = r2402053 * r2402070;
double r2402072 = /* ERROR: no complex support in C */;
double r2402073 = /* ERROR: no complex support in C */;
double r2402074 = r2402040 ? r2402056 : r2402073;
return r2402074;
}



Bits error versus x



Bits error versus y
if x < -0.011756186125805182Initial program 3.0
Taylor expanded around inf 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
(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)))))