\Re(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\Re(\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\mathsf{fma}\left(0.5, \cos y \cdot e^{x}, 0.5 \cdot \left(\cos y \cdot e^{-x}\right)\right)\right)\right) + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))double f(double x, double y) {
double r38673 = x;
double r38674 = exp(r38673);
double r38675 = -r38673;
double r38676 = exp(r38675);
double r38677 = r38674 + r38676;
double r38678 = 2.0;
double r38679 = r38677 / r38678;
double r38680 = y;
double r38681 = cos(r38680);
double r38682 = r38679 * r38681;
double r38683 = r38674 - r38676;
double r38684 = r38683 / r38678;
double r38685 = sin(r38680);
double r38686 = r38684 * r38685;
double r38687 = /* ERROR: no complex support in C */;
double r38688 = /* ERROR: no complex support in C */;
return r38688;
}
double f(double x, double y) {
double r38689 = 0.5;
double r38690 = y;
double r38691 = cos(r38690);
double r38692 = x;
double r38693 = exp(r38692);
double r38694 = r38691 * r38693;
double r38695 = -r38692;
double r38696 = exp(r38695);
double r38697 = r38691 * r38696;
double r38698 = r38689 * r38697;
double r38699 = fma(r38689, r38694, r38698);
double r38700 = log1p(r38699);
double r38701 = expm1(r38700);
double r38702 = r38693 - r38696;
double r38703 = 2.0;
double r38704 = r38702 / r38703;
double r38705 = sin(r38690);
double r38706 = r38704 * r38705;
double r38707 = /* ERROR: no complex support in C */;
double r38708 = /* ERROR: no complex support in C */;
return r38708;
}



Bits error versus x



Bits error versus y
Initial program 0.0
rmApplied expm1-log1p-u0.3
Taylor expanded around inf 0.7
Simplified0.3
Final simplification0.3
herbie shell --seed 2020057 +o rules:numerics
(FPCore (x y)
:name "Euler formula real part (p55)"
:precision binary64
(re (complex (* (/ (+ (exp x) (exp (- x))) 2) (cos y)) (* (/ (- (exp x) (exp (- x))) 2) (sin y)))))