Average Error: 0.0 → 0.0
Time: 5.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))\]
\[\Re(\left(\frac{\mathsf{fma}\left(\sqrt{e^{x}}, \sqrt{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{\mathsf{fma}\left(\sqrt{e^{x}}, \sqrt{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 r45050 = x;
        double r45051 = exp(r45050);
        double r45052 = -r45050;
        double r45053 = exp(r45052);
        double r45054 = r45051 + r45053;
        double r45055 = 2.0;
        double r45056 = r45054 / r45055;
        double r45057 = y;
        double r45058 = cos(r45057);
        double r45059 = r45056 * r45058;
        double r45060 = r45051 - r45053;
        double r45061 = r45060 / r45055;
        double r45062 = sin(r45057);
        double r45063 = r45061 * r45062;
        double r45064 = /* ERROR: no complex support in C */;
        double r45065 = /* ERROR: no complex support in C */;
        return r45065;
}

double f(double x, double y) {
        double r45066 = x;
        double r45067 = exp(r45066);
        double r45068 = sqrt(r45067);
        double r45069 = -r45066;
        double r45070 = exp(r45069);
        double r45071 = fma(r45068, r45068, r45070);
        double r45072 = 2.0;
        double r45073 = r45071 / r45072;
        double r45074 = y;
        double r45075 = cos(r45074);
        double r45076 = r45073 * r45075;
        double r45077 = r45067 - r45070;
        double r45078 = r45077 / r45072;
        double r45079 = sin(r45074);
        double r45080 = r45078 * r45079;
        double r45081 = /* ERROR: no complex support in C */;
        double r45082 = /* ERROR: no complex support in C */;
        return r45082;
}

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-sqr-sqrt0.0

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

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

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

Reproduce

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