Average Error: 0.0 → 0.0
Time: 10.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))\]
\[\Re(\left(\frac{e^{\log \left(e^{x} + e^{-x}\right)}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]
\Re(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))
\Re(\left(\frac{e^{\log \left(e^{x} + e^{-x}\right)}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))
double f(double x, double y) {
        double r28882 = x;
        double r28883 = exp(r28882);
        double r28884 = -r28882;
        double r28885 = exp(r28884);
        double r28886 = r28883 + r28885;
        double r28887 = 2.0;
        double r28888 = r28886 / r28887;
        double r28889 = y;
        double r28890 = cos(r28889);
        double r28891 = r28888 * r28890;
        double r28892 = r28883 - r28885;
        double r28893 = r28892 / r28887;
        double r28894 = sin(r28889);
        double r28895 = r28893 * r28894;
        double r28896 = /* ERROR: no complex support in C */;
        double r28897 = /* ERROR: no complex support in C */;
        return r28897;
}

double f(double x, double y) {
        double r28898 = x;
        double r28899 = exp(r28898);
        double r28900 = -r28898;
        double r28901 = exp(r28900);
        double r28902 = r28899 + r28901;
        double r28903 = log(r28902);
        double r28904 = exp(r28903);
        double r28905 = 2.0;
        double r28906 = r28904 / r28905;
        double r28907 = y;
        double r28908 = cos(r28907);
        double r28909 = r28906 * r28908;
        double r28910 = r28899 - r28901;
        double r28911 = r28910 / r28905;
        double r28912 = sin(r28907);
        double r28913 = r28911 * r28912;
        double r28914 = /* ERROR: no complex support in C */;
        double r28915 = /* ERROR: no complex support in C */;
        return r28915;
}

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. Using strategy rm
  3. Applied add-exp-log0.0

    \[\leadsto \Re(\left(\frac{\color{blue}{e^{\log \left(e^{x} + e^{-x}\right)}}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]
  4. Final simplification0.0

    \[\leadsto \Re(\left(\frac{e^{\log \left(e^{x} + e^{-x}\right)}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]

Reproduce

herbie shell --seed 2019198 
(FPCore (x y)
  :name "Euler formula real part (p55)"
  (re (complex (* (/ (+ (exp x) (exp (- x))) 2.0) (cos y)) (* (/ (- (exp x) (exp (- x))) 2.0) (sin y)))))