Average Error: 43.3 → 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{\frac{1}{3} \cdot {x}^{3} + \left(\frac{1}{60} \cdot {x}^{5} + 2 \cdot x\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{\frac{1}{3} \cdot {x}^{3} + \left(\frac{1}{60} \cdot {x}^{5} + 2 \cdot x\right)}{2} \cdot \sin y i\right))
double f(double x, double y) {
        double r69361 = x;
        double r69362 = exp(r69361);
        double r69363 = -r69361;
        double r69364 = exp(r69363);
        double r69365 = r69362 + r69364;
        double r69366 = 2.0;
        double r69367 = r69365 / r69366;
        double r69368 = y;
        double r69369 = cos(r69368);
        double r69370 = r69367 * r69369;
        double r69371 = r69362 - r69364;
        double r69372 = r69371 / r69366;
        double r69373 = sin(r69368);
        double r69374 = r69372 * r69373;
        double r69375 = /* ERROR: no complex support in C */;
        double r69376 = /* ERROR: no complex support in C */;
        return r69376;
}

double f(double x, double y) {
        double r69377 = x;
        double r69378 = exp(r69377);
        double r69379 = -r69377;
        double r69380 = exp(r69379);
        double r69381 = r69378 + r69380;
        double r69382 = 2.0;
        double r69383 = r69381 / r69382;
        double r69384 = y;
        double r69385 = cos(r69384);
        double r69386 = r69383 * r69385;
        double r69387 = 0.3333333333333333;
        double r69388 = 3.0;
        double r69389 = pow(r69377, r69388);
        double r69390 = r69387 * r69389;
        double r69391 = 0.016666666666666666;
        double r69392 = 5.0;
        double r69393 = pow(r69377, r69392);
        double r69394 = r69391 * r69393;
        double r69395 = 2.0;
        double r69396 = r69395 * r69377;
        double r69397 = r69394 + r69396;
        double r69398 = r69390 + r69397;
        double r69399 = r69398 / r69382;
        double r69400 = sin(r69384);
        double r69401 = r69399 * r69400;
        double r69402 = /* ERROR: no complex support in C */;
        double r69403 = /* ERROR: no complex support in C */;
        return r69403;
}

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.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. Final simplification0.8

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

Reproduce

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