\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \mathsf{fma}\left(\sin y, 0.1666666666666666574148081281236954964697 \cdot {x}^{3}, \sin y \cdot \mathsf{fma}\left(x, 1, 0.008333333333333333217685101601546193705872 \cdot {x}^{5}\right)\right) i\right))double f(double x, double y) {
double r56470 = x;
double r56471 = exp(r56470);
double r56472 = -r56470;
double r56473 = exp(r56472);
double r56474 = r56471 + r56473;
double r56475 = 2.0;
double r56476 = r56474 / r56475;
double r56477 = y;
double r56478 = cos(r56477);
double r56479 = r56476 * r56478;
double r56480 = r56471 - r56473;
double r56481 = r56480 / r56475;
double r56482 = sin(r56477);
double r56483 = r56481 * r56482;
double r56484 = /* ERROR: no complex support in C */;
double r56485 = /* ERROR: no complex support in C */;
return r56485;
}
double f(double x, double y) {
double r56486 = x;
double r56487 = exp(r56486);
double r56488 = -r56486;
double r56489 = exp(r56488);
double r56490 = r56487 + r56489;
double r56491 = 2.0;
double r56492 = r56490 / r56491;
double r56493 = y;
double r56494 = cos(r56493);
double r56495 = r56492 * r56494;
double r56496 = sin(r56493);
double r56497 = 0.16666666666666666;
double r56498 = 3.0;
double r56499 = pow(r56486, r56498);
double r56500 = r56497 * r56499;
double r56501 = 1.0;
double r56502 = 0.008333333333333333;
double r56503 = 5.0;
double r56504 = pow(r56486, r56503);
double r56505 = r56502 * r56504;
double r56506 = fma(r56486, r56501, r56505);
double r56507 = r56496 * r56506;
double r56508 = fma(r56496, r56500, r56507);
double r56509 = /* ERROR: no complex support in C */;
double r56510 = /* ERROR: no complex support in C */;
return r56510;
}



Bits error versus x



Bits error versus y
Initial program 44.2
Taylor expanded around 0 0.8
Simplified0.8
rmApplied pow10.8
Applied pow10.8
Applied pow-prod-down0.8
Simplified0.9
Taylor expanded around inf 0.8
Simplified0.8
Final simplification0.8
herbie shell --seed 2019208 +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)))))