Average Error: 43.0 → 0.8
Time: 36.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{2 \cdot x + \left(\frac{1}{3} \cdot {x}^{3} + \frac{1}{60} \cdot {x}^{5}\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{2 \cdot x + \left(\frac{1}{3} \cdot {x}^{3} + \frac{1}{60} \cdot {x}^{5}\right)}{2} \cdot \sin y i\right))
double f(double x, double y) {
        double r66469 = x;
        double r66470 = exp(r66469);
        double r66471 = -r66469;
        double r66472 = exp(r66471);
        double r66473 = r66470 + r66472;
        double r66474 = 2.0;
        double r66475 = r66473 / r66474;
        double r66476 = y;
        double r66477 = cos(r66476);
        double r66478 = r66475 * r66477;
        double r66479 = r66470 - r66472;
        double r66480 = r66479 / r66474;
        double r66481 = sin(r66476);
        double r66482 = r66480 * r66481;
        double r66483 = /* ERROR: no complex support in C */;
        double r66484 = /* ERROR: no complex support in C */;
        return r66484;
}

double f(double x, double y) {
        double r66485 = x;
        double r66486 = exp(r66485);
        double r66487 = -r66485;
        double r66488 = exp(r66487);
        double r66489 = r66486 + r66488;
        double r66490 = 2.0;
        double r66491 = r66489 / r66490;
        double r66492 = y;
        double r66493 = cos(r66492);
        double r66494 = r66491 * r66493;
        double r66495 = 2.0;
        double r66496 = r66495 * r66485;
        double r66497 = 0.3333333333333333;
        double r66498 = 3.0;
        double r66499 = pow(r66485, r66498);
        double r66500 = r66497 * r66499;
        double r66501 = 0.016666666666666666;
        double r66502 = 5.0;
        double r66503 = pow(r66485, r66502);
        double r66504 = r66501 * r66503;
        double r66505 = r66500 + r66504;
        double r66506 = r66496 + r66505;
        double r66507 = r66506 / r66490;
        double r66508 = sin(r66492);
        double r66509 = r66507 * r66508;
        double r66510 = /* ERROR: no complex support in C */;
        double r66511 = /* ERROR: no complex support in C */;
        return r66511;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 43.0

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

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

Reproduce

herbie shell --seed 2019195 
(FPCore (x y)
  :name "Euler formula imaginary part (p55)"
  (im (complex (* (/ (+ (exp x) (exp (- x))) 2.0) (cos y)) (* (/ (- (exp x) (exp (- x))) 2.0) (sin y)))))