\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(\frac{\cos y \cdot \left(e^{x} + e^{-x}\right)}{2}\right)\right) + \sin y \cdot \frac{e^{x} - e^{-x}}{2} i\right))double f(double x, double y) {
double r45545 = x;
double r45546 = exp(r45545);
double r45547 = -r45545;
double r45548 = exp(r45547);
double r45549 = r45546 + r45548;
double r45550 = 2.0;
double r45551 = r45549 / r45550;
double r45552 = y;
double r45553 = cos(r45552);
double r45554 = r45551 * r45553;
double r45555 = r45546 - r45548;
double r45556 = r45555 / r45550;
double r45557 = sin(r45552);
double r45558 = r45556 * r45557;
double r45559 = /* ERROR: no complex support in C */;
double r45560 = /* ERROR: no complex support in C */;
return r45560;
}
double f(double x, double y) {
double r45561 = y;
double r45562 = cos(r45561);
double r45563 = x;
double r45564 = exp(r45563);
double r45565 = -r45563;
double r45566 = exp(r45565);
double r45567 = r45564 + r45566;
double r45568 = r45562 * r45567;
double r45569 = 2.0;
double r45570 = r45568 / r45569;
double r45571 = log1p(r45570);
double r45572 = expm1(r45571);
double r45573 = sin(r45561);
double r45574 = r45564 - r45566;
double r45575 = r45574 / r45569;
double r45576 = r45573 * r45575;
double r45577 = /* ERROR: no complex support in C */;
double r45578 = /* ERROR: no complex support in C */;
return r45578;
}



Bits error versus x



Bits error versus y
Initial program 0.0
rmApplied expm1-log1p-u0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019195 +o rules:numerics
(FPCore (x y)
:name "Euler formula real part (p55)"
(re (complex (* (/ (+ (exp x) (exp (- x))) 2.0) (cos y)) (* (/ (- (exp x) (exp (- x))) 2.0) (sin y)))))