Average Error: 0.0 → 0.0
Time: 4.2s
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 r19215 = x;
        double r19216 = exp(r19215);
        double r19217 = -r19215;
        double r19218 = exp(r19217);
        double r19219 = r19216 + r19218;
        double r19220 = 2.0;
        double r19221 = r19219 / r19220;
        double r19222 = y;
        double r19223 = cos(r19222);
        double r19224 = r19221 * r19223;
        double r19225 = r19216 - r19218;
        double r19226 = r19225 / r19220;
        double r19227 = sin(r19222);
        double r19228 = r19226 * r19227;
        double r19229 = /* ERROR: no complex support in C */;
        double r19230 = /* ERROR: no complex support in C */;
        return r19230;
}

double f(double x, double y) {
        double r19231 = x;
        double r19232 = exp(r19231);
        double r19233 = -r19231;
        double r19234 = exp(r19233);
        double r19235 = r19232 + r19234;
        double r19236 = 2.0;
        double r19237 = r19235 / r19236;
        double r19238 = y;
        double r19239 = cos(r19238);
        double r19240 = r19237 * r19239;
        return r19240;
}

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