Average Error: 44.0 → 0.8
Time: 10.8s
Precision: 64
\[\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]
\[\frac{\frac{1}{3} \cdot {x}^{3} + \left(\frac{1}{60} \cdot {x}^{5} + 2 \cdot x\right)}{2} \cdot \sin y\]
\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))
\frac{\frac{1}{3} \cdot {x}^{3} + \left(\frac{1}{60} \cdot {x}^{5} + 2 \cdot x\right)}{2} \cdot \sin y
double f(double x, double y) {
        double r36388 = x;
        double r36389 = exp(r36388);
        double r36390 = -r36388;
        double r36391 = exp(r36390);
        double r36392 = r36389 + r36391;
        double r36393 = 2.0;
        double r36394 = r36392 / r36393;
        double r36395 = y;
        double r36396 = cos(r36395);
        double r36397 = r36394 * r36396;
        double r36398 = r36389 - r36391;
        double r36399 = r36398 / r36393;
        double r36400 = sin(r36395);
        double r36401 = r36399 * r36400;
        double r36402 = /* ERROR: no complex support in C */;
        double r36403 = /* ERROR: no complex support in C */;
        return r36403;
}

double f(double x, double y) {
        double r36404 = 0.3333333333333333;
        double r36405 = x;
        double r36406 = 3.0;
        double r36407 = pow(r36405, r36406);
        double r36408 = r36404 * r36407;
        double r36409 = 0.016666666666666666;
        double r36410 = 5.0;
        double r36411 = pow(r36405, r36410);
        double r36412 = r36409 * r36411;
        double r36413 = 2.0;
        double r36414 = r36413 * r36405;
        double r36415 = r36412 + r36414;
        double r36416 = r36408 + r36415;
        double r36417 = 2.0;
        double r36418 = r36416 / r36417;
        double r36419 = y;
        double r36420 = sin(r36419);
        double r36421 = r36418 * r36420;
        return r36421;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 44.0

    \[\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]
  2. Simplified44.0

    \[\leadsto \color{blue}{\frac{e^{x} - e^{-x}}{2} \cdot \sin y}\]
  3. Taylor expanded around 0 0.8

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

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

Reproduce

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