Average Error: 44.0 → 0.8
Time: 14.1s
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 r47895 = x;
        double r47896 = exp(r47895);
        double r47897 = -r47895;
        double r47898 = exp(r47897);
        double r47899 = r47896 + r47898;
        double r47900 = 2.0;
        double r47901 = r47899 / r47900;
        double r47902 = y;
        double r47903 = cos(r47902);
        double r47904 = r47901 * r47903;
        double r47905 = r47896 - r47898;
        double r47906 = r47905 / r47900;
        double r47907 = sin(r47902);
        double r47908 = r47906 * r47907;
        double r47909 = /* ERROR: no complex support in C */;
        double r47910 = /* ERROR: no complex support in C */;
        return r47910;
}

double f(double x, double y) {
        double r47911 = x;
        double r47912 = exp(r47911);
        double r47913 = -r47911;
        double r47914 = exp(r47913);
        double r47915 = r47912 + r47914;
        double r47916 = 2.0;
        double r47917 = r47915 / r47916;
        double r47918 = y;
        double r47919 = cos(r47918);
        double r47920 = r47917 * r47919;
        double r47921 = 0.3333333333333333;
        double r47922 = 3.0;
        double r47923 = pow(r47911, r47922);
        double r47924 = 0.016666666666666666;
        double r47925 = 5.0;
        double r47926 = pow(r47911, r47925);
        double r47927 = 2.0;
        double r47928 = r47927 * r47911;
        double r47929 = fma(r47924, r47926, r47928);
        double r47930 = fma(r47921, r47923, r47929);
        double r47931 = r47930 / r47916;
        double r47932 = sin(r47918);
        double r47933 = r47931 * r47932;
        double r47934 = /* ERROR: no complex support in C */;
        double r47935 = /* ERROR: no complex support in C */;
        return r47935;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 44.0

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