Average Error: 0.0 → 0.7
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(x, x, \mathsf{fma}\left(\frac{1}{12}, {x}^{4}, 2\right)\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(x, x, \mathsf{fma}\left(\frac{1}{12}, {x}^{4}, 2\right)\right)}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))
double f(double x, double y) {
        double r33724 = x;
        double r33725 = exp(r33724);
        double r33726 = -r33724;
        double r33727 = exp(r33726);
        double r33728 = r33725 + r33727;
        double r33729 = 2.0;
        double r33730 = r33728 / r33729;
        double r33731 = y;
        double r33732 = cos(r33731);
        double r33733 = r33730 * r33732;
        double r33734 = r33725 - r33727;
        double r33735 = r33734 / r33729;
        double r33736 = sin(r33731);
        double r33737 = r33735 * r33736;
        double r33738 = /* ERROR: no complex support in C */;
        double r33739 = /* ERROR: no complex support in C */;
        return r33739;
}

double f(double x, double y) {
        double r33740 = x;
        double r33741 = 0.08333333333333333;
        double r33742 = 4.0;
        double r33743 = pow(r33740, r33742);
        double r33744 = 2.0;
        double r33745 = fma(r33741, r33743, r33744);
        double r33746 = fma(r33740, r33740, r33745);
        double r33747 = 2.0;
        double r33748 = r33746 / r33747;
        double r33749 = y;
        double r33750 = cos(r33749);
        double r33751 = r33748 * r33750;
        double r33752 = exp(r33740);
        double r33753 = -r33740;
        double r33754 = exp(r33753);
        double r33755 = r33752 - r33754;
        double r33756 = r33755 / r33747;
        double r33757 = sin(r33749);
        double r33758 = r33756 * r33757;
        double r33759 = /* ERROR: no complex support in C */;
        double r33760 = /* ERROR: no complex support in C */;
        return r33760;
}

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. Taylor expanded around 0 0.7

    \[\leadsto \Re(\left(\frac{\color{blue}{{x}^{2} + \left(\frac{1}{12} \cdot {x}^{4} + 2\right)}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]
  3. Simplified0.7

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

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

Reproduce

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