Average Error: 43.2 → 0.8
Time: 31.2s
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 r51888 = x;
        double r51889 = exp(r51888);
        double r51890 = -r51888;
        double r51891 = exp(r51890);
        double r51892 = r51889 + r51891;
        double r51893 = 2.0;
        double r51894 = r51892 / r51893;
        double r51895 = y;
        double r51896 = cos(r51895);
        double r51897 = r51894 * r51896;
        double r51898 = r51889 - r51891;
        double r51899 = r51898 / r51893;
        double r51900 = sin(r51895);
        double r51901 = r51899 * r51900;
        double r51902 = /* ERROR: no complex support in C */;
        double r51903 = /* ERROR: no complex support in C */;
        return r51903;
}

double f(double x, double y) {
        double r51904 = x;
        double r51905 = exp(r51904);
        double r51906 = -r51904;
        double r51907 = exp(r51906);
        double r51908 = r51905 + r51907;
        double r51909 = 2.0;
        double r51910 = r51908 / r51909;
        double r51911 = y;
        double r51912 = cos(r51911);
        double r51913 = r51910 * r51912;
        double r51914 = 0.3333333333333333;
        double r51915 = 3.0;
        double r51916 = pow(r51904, r51915);
        double r51917 = 0.016666666666666666;
        double r51918 = 5.0;
        double r51919 = pow(r51904, r51918);
        double r51920 = 2.0;
        double r51921 = r51920 * r51904;
        double r51922 = fma(r51917, r51919, r51921);
        double r51923 = fma(r51914, r51916, r51922);
        double r51924 = r51923 / r51909;
        double r51925 = sin(r51911);
        double r51926 = r51924 * r51925;
        double r51927 = /* ERROR: no complex support in C */;
        double r51928 = /* ERROR: no complex support in C */;
        return r51928;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 43.2

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