\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 r42439 = x;
double r42440 = exp(r42439);
double r42441 = -r42439;
double r42442 = exp(r42441);
double r42443 = r42440 + r42442;
double r42444 = 2.0;
double r42445 = r42443 / r42444;
double r42446 = y;
double r42447 = cos(r42446);
double r42448 = r42445 * r42447;
double r42449 = r42440 - r42442;
double r42450 = r42449 / r42444;
double r42451 = sin(r42446);
double r42452 = r42450 * r42451;
double r42453 = /* ERROR: no complex support in C */;
double r42454 = /* ERROR: no complex support in C */;
return r42454;
}
double f(double x, double y) {
double r42455 = 0.3333333333333333;
double r42456 = x;
double r42457 = 3.0;
double r42458 = pow(r42456, r42457);
double r42459 = 0.016666666666666666;
double r42460 = 5.0;
double r42461 = pow(r42456, r42460);
double r42462 = 2.0;
double r42463 = r42462 * r42456;
double r42464 = fma(r42459, r42461, r42463);
double r42465 = fma(r42455, r42458, r42464);
double r42466 = 2.0;
double r42467 = r42465 / r42466;
double r42468 = y;
double r42469 = sin(r42468);
double r42470 = r42467 * r42469;
return r42470;
}



Bits error versus x



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