Average Error: 0.0 → 0.0
Time: 10.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{\frac{\cos y}{e^{x}} + e^{x} \cdot \cos y}{2}\]
\Re(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))
\frac{\frac{\cos y}{e^{x}} + e^{x} \cdot \cos y}{2}
double f(double x, double y) {
        double r618361 = x;
        double r618362 = exp(r618361);
        double r618363 = -r618361;
        double r618364 = exp(r618363);
        double r618365 = r618362 + r618364;
        double r618366 = 2.0;
        double r618367 = r618365 / r618366;
        double r618368 = y;
        double r618369 = cos(r618368);
        double r618370 = r618367 * r618369;
        double r618371 = r618362 - r618364;
        double r618372 = r618371 / r618366;
        double r618373 = sin(r618368);
        double r618374 = r618372 * r618373;
        double r618375 = /* ERROR: no complex support in C */;
        double r618376 = /* ERROR: no complex support in C */;
        return r618376;
}

double f(double x, double y) {
        double r618377 = y;
        double r618378 = cos(r618377);
        double r618379 = x;
        double r618380 = exp(r618379);
        double r618381 = r618378 / r618380;
        double r618382 = r618380 * r618378;
        double r618383 = r618381 + r618382;
        double r618384 = 2.0;
        double r618385 = r618383 / r618384;
        return r618385;
}

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{\mathsf{fma}\left(\left(\cos y\right), \left(e^{x}\right), \left(\frac{\cos y}{e^{x}}\right)\right)}{2}}\]
  3. Using strategy rm
  4. Applied fma-udef0.0

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

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

Reproduce

herbie shell --seed 2019121 +o rules:numerics
(FPCore (x y)
  :name "Euler formula real part (p55)"
  (re (complex (* (/ (+ (exp x) (exp (- x))) 2) (cos y)) (* (/ (- (exp x) (exp (- x))) 2) (sin y)))))