Average Error: 0.0 → 0.0
Time: 3.4s
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 r20032 = x;
        double r20033 = exp(r20032);
        double r20034 = -r20032;
        double r20035 = exp(r20034);
        double r20036 = r20033 + r20035;
        double r20037 = 2.0;
        double r20038 = r20036 / r20037;
        double r20039 = y;
        double r20040 = cos(r20039);
        double r20041 = r20038 * r20040;
        double r20042 = r20033 - r20035;
        double r20043 = r20042 / r20037;
        double r20044 = sin(r20039);
        double r20045 = r20043 * r20044;
        double r20046 = /* ERROR: no complex support in C */;
        double r20047 = /* ERROR: no complex support in C */;
        return r20047;
}

double f(double x, double y) {
        double r20048 = x;
        double r20049 = exp(r20048);
        double r20050 = -r20048;
        double r20051 = exp(r20050);
        double r20052 = r20049 + r20051;
        double r20053 = 2.0;
        double r20054 = r20052 / r20053;
        double r20055 = y;
        double r20056 = cos(r20055);
        double r20057 = r20054 * r20056;
        return r20057;
}

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