Average Error: 0.0 → 0.0
Time: 13.5s
Precision: 64
\[\Re(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]
\[\cos y \cdot \mathsf{fma}\left(\frac{1}{2}, e^{x}, \frac{\frac{1}{2}}{e^{x}}\right)\]
\Re(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))
\cos y \cdot \mathsf{fma}\left(\frac{1}{2}, e^{x}, \frac{\frac{1}{2}}{e^{x}}\right)
double f(double x, double y) {
        double r748170 = x;
        double r748171 = exp(r748170);
        double r748172 = -r748170;
        double r748173 = exp(r748172);
        double r748174 = r748171 + r748173;
        double r748175 = 2.0;
        double r748176 = r748174 / r748175;
        double r748177 = y;
        double r748178 = cos(r748177);
        double r748179 = r748176 * r748178;
        double r748180 = r748171 - r748173;
        double r748181 = r748180 / r748175;
        double r748182 = sin(r748177);
        double r748183 = r748181 * r748182;
        double r748184 = /* ERROR: no complex support in C */;
        double r748185 = /* ERROR: no complex support in C */;
        return r748185;
}

double f(double x, double y) {
        double r748186 = y;
        double r748187 = cos(r748186);
        double r748188 = 0.5;
        double r748189 = x;
        double r748190 = exp(r748189);
        double r748191 = r748188 / r748190;
        double r748192 = fma(r748188, r748190, r748191);
        double r748193 = r748187 * r748192;
        return r748193;
}

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}{\mathsf{fma}\left(\frac{1}{2}, e^{x}, \frac{\frac{1}{2}}{e^{x}}\right) \cdot \cos y}\]
  3. Final simplification0.0

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

Reproduce

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