Average Error: 43.6 → 0.8
Time: 1.9m
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))\]
double f(double x, double y) {
        double r5863077 = x;
        double r5863078 = exp(r5863077);
        double r5863079 = -r5863077;
        double r5863080 = exp(r5863079);
        double r5863081 = r5863078 + r5863080;
        double r5863082 = 2.0;
        double r5863083 = r5863081 / r5863082;
        double r5863084 = y;
        double r5863085 = cos(r5863084);
        double r5863086 = r5863083 * r5863085;
        double r5863087 = r5863078 - r5863080;
        double r5863088 = r5863087 / r5863082;
        double r5863089 = sin(r5863084);
        double r5863090 = r5863088 * r5863089;
        double r5863091 = /* ERROR: no complex support in C */;
        double r5863092 = /* ERROR: no complex support in C */;
        return r5863092;
}

double f(double x, double y) {
        double r5863093 = x;
        double r5863094 = exp(r5863093);
        double r5863095 = -r5863093;
        double r5863096 = exp(r5863095);
        double r5863097 = r5863094 + r5863096;
        double r5863098 = 2.0;
        double r5863099 = r5863097 / r5863098;
        double r5863100 = y;
        double r5863101 = cos(r5863100);
        double r5863102 = r5863099 * r5863101;
        double r5863103 = 5.0;
        double r5863104 = pow(r5863093, r5863103);
        double r5863105 = 0.016666666666666666;
        double r5863106 = r5863104 * r5863105;
        double r5863107 = 0.3333333333333333;
        double r5863108 = r5863093 * r5863107;
        double r5863109 = r5863108 * r5863093;
        double r5863110 = r5863098 + r5863109;
        double r5863111 = r5863110 * r5863093;
        double r5863112 = r5863106 + r5863111;
        double r5863113 = r5863112 / r5863098;
        double r5863114 = sin(r5863100);
        double r5863115 = r5863113 * r5863114;
        double r5863116 = /* ERROR: no complex support in C */;
        double r5863117 = /* ERROR: no complex support in C */;
        return r5863117;
}

\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))

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}{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.8

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

    \[\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 2019102 
(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)))))