Average Error: 43.6 → 0.8
Time: 13.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 r57747 = x;
        double r57748 = exp(r57747);
        double r57749 = -r57747;
        double r57750 = exp(r57749);
        double r57751 = r57748 + r57750;
        double r57752 = 2.0;
        double r57753 = r57751 / r57752;
        double r57754 = y;
        double r57755 = cos(r57754);
        double r57756 = r57753 * r57755;
        double r57757 = r57748 - r57750;
        double r57758 = r57757 / r57752;
        double r57759 = sin(r57754);
        double r57760 = r57758 * r57759;
        double r57761 = /* ERROR: no complex support in C */;
        double r57762 = /* ERROR: no complex support in C */;
        return r57762;
}

double f(double x, double y) {
        double r57763 = x;
        double r57764 = exp(r57763);
        double r57765 = -r57763;
        double r57766 = exp(r57765);
        double r57767 = r57764 + r57766;
        double r57768 = 2.0;
        double r57769 = r57767 / r57768;
        double r57770 = y;
        double r57771 = cos(r57770);
        double r57772 = r57769 * r57771;
        double r57773 = 0.3333333333333333;
        double r57774 = 3.0;
        double r57775 = pow(r57763, r57774);
        double r57776 = 0.016666666666666666;
        double r57777 = 5.0;
        double r57778 = pow(r57763, r57777);
        double r57779 = 2.0;
        double r57780 = r57779 * r57763;
        double r57781 = fma(r57776, r57778, r57780);
        double r57782 = fma(r57773, r57775, r57781);
        double r57783 = r57782 / r57768;
        double r57784 = sin(r57770);
        double r57785 = r57783 * r57784;
        double r57786 = /* ERROR: no complex support in C */;
        double r57787 = /* ERROR: no complex support in C */;
        return r57787;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 43.6

    \[\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 2020064 +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)))))