Average Error: 43.4 → 0.8
Time: 14.3s
Precision: 64
\[\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]
\[\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}{2} \cdot \sin y i\right))\]
\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))
\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}{2} \cdot \sin y i\right))
double f(double x, double y) {
        double r62711 = x;
        double r62712 = exp(r62711);
        double r62713 = -r62711;
        double r62714 = exp(r62713);
        double r62715 = r62712 + r62714;
        double r62716 = 2.0;
        double r62717 = r62715 / r62716;
        double r62718 = y;
        double r62719 = cos(r62718);
        double r62720 = r62717 * r62719;
        double r62721 = r62712 - r62714;
        double r62722 = r62721 / r62716;
        double r62723 = sin(r62718);
        double r62724 = r62722 * r62723;
        double r62725 = /* ERROR: no complex support in C */;
        double r62726 = /* ERROR: no complex support in C */;
        return r62726;
}

double f(double x, double y) {
        double r62727 = x;
        double r62728 = exp(r62727);
        double r62729 = -r62727;
        double r62730 = exp(r62729);
        double r62731 = r62728 + r62730;
        double r62732 = 2.0;
        double r62733 = r62731 / r62732;
        double r62734 = y;
        double r62735 = cos(r62734);
        double r62736 = r62733 * r62735;
        double r62737 = 0.3333333333333333;
        double r62738 = 3.0;
        double r62739 = pow(r62727, r62738);
        double r62740 = 0.016666666666666666;
        double r62741 = 5.0;
        double r62742 = pow(r62727, r62741);
        double r62743 = 2.0;
        double r62744 = r62743 * r62727;
        double r62745 = fma(r62740, r62742, r62744);
        double r62746 = fma(r62737, r62739, r62745);
        double r62747 = r62746 / r62732;
        double r62748 = sin(r62734);
        double r62749 = r62747 * r62748;
        double r62750 = /* ERROR: no complex support in C */;
        double r62751 = /* ERROR: no complex support in C */;
        return r62751;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 43.4

    \[\Im(\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.8

    \[\leadsto \Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\color{blue}{\frac{1}{3} \cdot {x}^{3} + \left(\frac{1}{60} \cdot {x}^{5} + 2 \cdot x\right)}}{2} \cdot \sin y i\right))\]
  3. Simplified0.8

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

    \[\leadsto \Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}{2} \cdot \sin y i\right))\]

Reproduce

herbie shell --seed 2020060 +o rules:numerics
(FPCore (x y)
  :name "Euler formula imaginary part (p55)"
  :precision binary64
  (im (complex (* (/ (+ (exp x) (exp (- x))) 2) (cos y)) (* (/ (- (exp x) (exp (- x))) 2) (sin y)))))