Average Error: 0.0 → 0.0
Time: 5.3s
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 r50355 = x;
        double r50356 = exp(r50355);
        double r50357 = -r50355;
        double r50358 = exp(r50357);
        double r50359 = r50356 + r50358;
        double r50360 = 2.0;
        double r50361 = r50359 / r50360;
        double r50362 = y;
        double r50363 = cos(r50362);
        double r50364 = r50361 * r50363;
        double r50365 = r50356 - r50358;
        double r50366 = r50365 / r50360;
        double r50367 = sin(r50362);
        double r50368 = r50366 * r50367;
        double r50369 = /* ERROR: no complex support in C */;
        double r50370 = /* ERROR: no complex support in C */;
        return r50370;
}

double f(double x, double y) {
        double r50371 = x;
        double r50372 = exp(r50371);
        double r50373 = -r50371;
        double r50374 = exp(r50373);
        double r50375 = r50372 + r50374;
        double r50376 = 2.0;
        double r50377 = r50375 / r50376;
        double r50378 = y;
        double r50379 = cos(r50378);
        double r50380 = r50377 * r50379;
        return r50380;
}

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 2020020 +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)))))