Average Error: 0.0 → 0.0
Time: 5.1s
Precision: 64
\[\Re(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]
\[\frac{e^{x} + e^{-x}}{2} \cdot \cos y\]
\Re(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))
\frac{e^{x} + e^{-x}}{2} \cdot \cos y
double f(double x, double y) {
        double r38364 = x;
        double r38365 = exp(r38364);
        double r38366 = -r38364;
        double r38367 = exp(r38366);
        double r38368 = r38365 + r38367;
        double r38369 = 2.0;
        double r38370 = r38368 / r38369;
        double r38371 = y;
        double r38372 = cos(r38371);
        double r38373 = r38370 * r38372;
        double r38374 = r38365 - r38367;
        double r38375 = r38374 / r38369;
        double r38376 = sin(r38371);
        double r38377 = r38375 * r38376;
        double r38378 = /* ERROR: no complex support in C */;
        double r38379 = /* ERROR: no complex support in C */;
        return r38379;
}

double f(double x, double y) {
        double r38380 = x;
        double r38381 = exp(r38380);
        double r38382 = -r38380;
        double r38383 = exp(r38382);
        double r38384 = r38381 + r38383;
        double r38385 = 2.0;
        double r38386 = r38384 / r38385;
        double r38387 = y;
        double r38388 = cos(r38387);
        double r38389 = r38386 * r38388;
        return r38389;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 0.0

    \[\Re(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]
  2. Simplified0.0

    \[\leadsto \color{blue}{\frac{e^{x} + e^{-x}}{2} \cdot \cos y}\]
  3. Final simplification0.0

    \[\leadsto \frac{e^{x} + e^{-x}}{2} \cdot \cos y\]

Reproduce

herbie shell --seed 2020033 +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)))))