Average Error: 0.0 → 0.0
Time: 4.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{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 r31768 = x;
        double r31769 = exp(r31768);
        double r31770 = -r31768;
        double r31771 = exp(r31770);
        double r31772 = r31769 + r31771;
        double r31773 = 2.0;
        double r31774 = r31772 / r31773;
        double r31775 = y;
        double r31776 = cos(r31775);
        double r31777 = r31774 * r31776;
        double r31778 = r31769 - r31771;
        double r31779 = r31778 / r31773;
        double r31780 = sin(r31775);
        double r31781 = r31779 * r31780;
        double r31782 = /* ERROR: no complex support in C */;
        double r31783 = /* ERROR: no complex support in C */;
        return r31783;
}

double f(double x, double y) {
        double r31784 = x;
        double r31785 = exp(r31784);
        double r31786 = -r31784;
        double r31787 = exp(r31786);
        double r31788 = r31785 + r31787;
        double r31789 = 2.0;
        double r31790 = r31788 / r31789;
        double r31791 = y;
        double r31792 = cos(r31791);
        double r31793 = r31790 * r31792;
        return r31793;
}

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