Average Error: 0.0 → 0.0
Time: 5.8s
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 r159 = x;
        double r160 = exp(r159);
        double r161 = -r159;
        double r162 = exp(r161);
        double r163 = r160 + r162;
        double r164 = 2.0;
        double r165 = r163 / r164;
        double r166 = y;
        double r167 = cos(r166);
        double r168 = r165 * r167;
        double r169 = r160 - r162;
        double r170 = r169 / r164;
        double r171 = sin(r166);
        double r172 = r170 * r171;
        double r173 = /* ERROR: no complex support in C */;
        double r174 = /* ERROR: no complex support in C */;
        return r174;
}

double f(double x, double y) {
        double r175 = x;
        double r176 = exp(r175);
        double r177 = sqrt(r176);
        double r178 = -r175;
        double r179 = exp(r178);
        double r180 = fma(r177, r177, r179);
        double r181 = 2.0;
        double r182 = r180 / r181;
        double r183 = y;
        double r184 = cos(r183);
        double r185 = r182 * r184;
        return r185;
}

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