Average Error: 0.0 → 0.0
Time: 9.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{\mathsf{fma}\left(\left(\cos y\right), \left(e^{x}\right), \left(\frac{\cos y}{e^{x}}\right)\right)}{2}\]
\Re(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))
\frac{\mathsf{fma}\left(\left(\cos y\right), \left(e^{x}\right), \left(\frac{\cos y}{e^{x}}\right)\right)}{2}
double f(double x, double y) {
        double r141471 = x;
        double r141472 = exp(r141471);
        double r141473 = -r141471;
        double r141474 = exp(r141473);
        double r141475 = r141472 + r141474;
        double r141476 = 2.0;
        double r141477 = r141475 / r141476;
        double r141478 = y;
        double r141479 = cos(r141478);
        double r141480 = r141477 * r141479;
        double r141481 = r141472 - r141474;
        double r141482 = r141481 / r141476;
        double r141483 = sin(r141478);
        double r141484 = r141482 * r141483;
        double r141485 = /* ERROR: no complex support in C */;
        double r141486 = /* ERROR: no complex support in C */;
        return r141486;
}

double f(double x, double y) {
        double r141487 = y;
        double r141488 = cos(r141487);
        double r141489 = x;
        double r141490 = exp(r141489);
        double r141491 = r141488 / r141490;
        double r141492 = fma(r141488, r141490, r141491);
        double r141493 = 2.0;
        double r141494 = r141492 / r141493;
        return r141494;
}

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. Final simplification0.0

    \[\leadsto \frac{\mathsf{fma}\left(\left(\cos y\right), \left(e^{x}\right), \left(\frac{\cos y}{e^{x}}\right)\right)}{2}\]

Reproduce

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