\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\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 ydouble f(double x, double y) {
double r49300 = x;
double r49301 = exp(r49300);
double r49302 = -r49300;
double r49303 = exp(r49302);
double r49304 = r49301 + r49303;
double r49305 = 2.0;
double r49306 = r49304 / r49305;
double r49307 = y;
double r49308 = cos(r49307);
double r49309 = r49306 * r49308;
double r49310 = r49301 - r49303;
double r49311 = r49310 / r49305;
double r49312 = sin(r49307);
double r49313 = r49311 * r49312;
double r49314 = /* ERROR: no complex support in C */;
double r49315 = /* ERROR: no complex support in C */;
return r49315;
}
double f(double x, double y) {
double r49316 = 0.3333333333333333;
double r49317 = x;
double r49318 = 3.0;
double r49319 = pow(r49317, r49318);
double r49320 = 0.016666666666666666;
double r49321 = 5.0;
double r49322 = pow(r49317, r49321);
double r49323 = 2.0;
double r49324 = r49323 * r49317;
double r49325 = fma(r49320, r49322, r49324);
double r49326 = fma(r49316, r49319, r49325);
double r49327 = 2.0;
double r49328 = r49326 / r49327;
double r49329 = y;
double r49330 = sin(r49329);
double r49331 = r49328 * r49330;
return r49331;
}



Bits error versus x



Bits error versus y
Initial program 43.4
Simplified43.4
Taylor expanded around 0 0.9
Simplified0.9
Final simplification0.9
herbie shell --seed 2020059 +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)))))