Average Error: 43.5 → 0.9
Time: 39.6s
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}{60}, {x}^{5}, x \cdot \left(x \cdot \left(\frac{1}{3} \cdot x\right) + 2\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}{60}, {x}^{5}, x \cdot \left(x \cdot \left(\frac{1}{3} \cdot x\right) + 2\right)\right)}{2} \cdot \sin y i\right))
double f(double x, double y) {
        double r1973045 = x;
        double r1973046 = exp(r1973045);
        double r1973047 = -r1973045;
        double r1973048 = exp(r1973047);
        double r1973049 = r1973046 + r1973048;
        double r1973050 = 2.0;
        double r1973051 = r1973049 / r1973050;
        double r1973052 = y;
        double r1973053 = cos(r1973052);
        double r1973054 = r1973051 * r1973053;
        double r1973055 = r1973046 - r1973048;
        double r1973056 = r1973055 / r1973050;
        double r1973057 = sin(r1973052);
        double r1973058 = r1973056 * r1973057;
        double r1973059 = /* ERROR: no complex support in C */;
        double r1973060 = /* ERROR: no complex support in C */;
        return r1973060;
}

double f(double x, double y) {
        double r1973061 = x;
        double r1973062 = exp(r1973061);
        double r1973063 = -r1973061;
        double r1973064 = exp(r1973063);
        double r1973065 = r1973062 + r1973064;
        double r1973066 = 2.0;
        double r1973067 = r1973065 / r1973066;
        double r1973068 = y;
        double r1973069 = cos(r1973068);
        double r1973070 = r1973067 * r1973069;
        double r1973071 = 0.016666666666666666;
        double r1973072 = 5.0;
        double r1973073 = pow(r1973061, r1973072);
        double r1973074 = 0.3333333333333333;
        double r1973075 = r1973074 * r1973061;
        double r1973076 = r1973061 * r1973075;
        double r1973077 = r1973076 + r1973066;
        double r1973078 = r1973061 * r1973077;
        double r1973079 = fma(r1973071, r1973073, r1973078);
        double r1973080 = r1973079 / r1973066;
        double r1973081 = sin(r1973068);
        double r1973082 = r1973080 * r1973081;
        double r1973083 = /* ERROR: no complex support in C */;
        double r1973084 = /* ERROR: no complex support in C */;
        return r1973084;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 43.5

    \[\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.9

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

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

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

Reproduce

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