Average Error: 43.3 → 0.7
Time: 2.1m
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{{x}^{5} \cdot \frac{1}{60} + \left(2 + \left(x \cdot \frac{1}{3}\right) \cdot x\right) \cdot x}{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{{x}^{5} \cdot \frac{1}{60} + \left(2 + \left(x \cdot \frac{1}{3}\right) \cdot x\right) \cdot x}{2} \cdot \sin y i\right))
double f(double x, double y) {
        double r8990076 = x;
        double r8990077 = exp(r8990076);
        double r8990078 = -r8990076;
        double r8990079 = exp(r8990078);
        double r8990080 = r8990077 + r8990079;
        double r8990081 = 2.0;
        double r8990082 = r8990080 / r8990081;
        double r8990083 = y;
        double r8990084 = cos(r8990083);
        double r8990085 = r8990082 * r8990084;
        double r8990086 = r8990077 - r8990079;
        double r8990087 = r8990086 / r8990081;
        double r8990088 = sin(r8990083);
        double r8990089 = r8990087 * r8990088;
        double r8990090 = /* ERROR: no complex support in C */;
        double r8990091 = /* ERROR: no complex support in C */;
        return r8990091;
}

double f(double x, double y) {
        double r8990092 = x;
        double r8990093 = exp(r8990092);
        double r8990094 = -r8990092;
        double r8990095 = exp(r8990094);
        double r8990096 = r8990093 + r8990095;
        double r8990097 = 2.0;
        double r8990098 = r8990096 / r8990097;
        double r8990099 = y;
        double r8990100 = cos(r8990099);
        double r8990101 = r8990098 * r8990100;
        double r8990102 = 5.0;
        double r8990103 = pow(r8990092, r8990102);
        double r8990104 = 0.016666666666666666;
        double r8990105 = r8990103 * r8990104;
        double r8990106 = 0.3333333333333333;
        double r8990107 = r8990092 * r8990106;
        double r8990108 = r8990107 * r8990092;
        double r8990109 = r8990097 + r8990108;
        double r8990110 = r8990109 * r8990092;
        double r8990111 = r8990105 + r8990110;
        double r8990112 = r8990111 / r8990097;
        double r8990113 = sin(r8990099);
        double r8990114 = r8990112 * r8990113;
        double r8990115 = /* ERROR: no complex support in C */;
        double r8990116 = /* ERROR: no complex support in C */;
        return r8990116;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 43.3

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

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

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

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

Reproduce

herbie shell --seed 2019128 
(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)))))