Average Error: 0.0 → 0.0
Time: 5.0s
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{\mathsf{fma}\left(\sqrt{e^{x}}, \sqrt{e^{x}}, e^{-x}\right)}{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{\mathsf{fma}\left(\sqrt{e^{x}}, \sqrt{e^{x}}, e^{-x}\right)}{2} \cdot \cos y
double f(double x, double y) {
        double r29906 = x;
        double r29907 = exp(r29906);
        double r29908 = -r29906;
        double r29909 = exp(r29908);
        double r29910 = r29907 + r29909;
        double r29911 = 2.0;
        double r29912 = r29910 / r29911;
        double r29913 = y;
        double r29914 = cos(r29913);
        double r29915 = r29912 * r29914;
        double r29916 = r29907 - r29909;
        double r29917 = r29916 / r29911;
        double r29918 = sin(r29913);
        double r29919 = r29917 * r29918;
        double r29920 = /* ERROR: no complex support in C */;
        double r29921 = /* ERROR: no complex support in C */;
        return r29921;
}

double f(double x, double y) {
        double r29922 = x;
        double r29923 = exp(r29922);
        double r29924 = sqrt(r29923);
        double r29925 = -r29922;
        double r29926 = exp(r29925);
        double r29927 = fma(r29924, r29924, r29926);
        double r29928 = 2.0;
        double r29929 = r29927 / r29928;
        double r29930 = y;
        double r29931 = cos(r29930);
        double r29932 = r29929 * r29931;
        return r29932;
}

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. Using strategy rm
  4. Applied add-sqr-sqrt0.0

    \[\leadsto \frac{\color{blue}{\sqrt{e^{x}} \cdot \sqrt{e^{x}}} + e^{-x}}{2} \cdot \cos y\]
  5. Applied fma-def0.0

    \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\sqrt{e^{x}}, \sqrt{e^{x}}, e^{-x}\right)}}{2} \cdot \cos y\]
  6. Final simplification0.0

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

Reproduce

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