Average Error: 44.1 → 0.7
Time: 35.4s
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 r53519 = x;
        double r53520 = exp(r53519);
        double r53521 = -r53519;
        double r53522 = exp(r53521);
        double r53523 = r53520 + r53522;
        double r53524 = 2.0;
        double r53525 = r53523 / r53524;
        double r53526 = y;
        double r53527 = cos(r53526);
        double r53528 = r53525 * r53527;
        double r53529 = r53520 - r53522;
        double r53530 = r53529 / r53524;
        double r53531 = sin(r53526);
        double r53532 = r53530 * r53531;
        double r53533 = /* ERROR: no complex support in C */;
        double r53534 = /* ERROR: no complex support in C */;
        return r53534;
}

double f(double x, double y) {
        double r53535 = x;
        double r53536 = exp(r53535);
        double r53537 = -r53535;
        double r53538 = exp(r53537);
        double r53539 = r53536 + r53538;
        double r53540 = 2.0;
        double r53541 = r53539 / r53540;
        double r53542 = y;
        double r53543 = cos(r53542);
        double r53544 = r53541 * r53543;
        double r53545 = 0.3333333333333333;
        double r53546 = 3.0;
        double r53547 = pow(r53535, r53546);
        double r53548 = r53545 * r53547;
        double r53549 = 0.016666666666666666;
        double r53550 = 5.0;
        double r53551 = pow(r53535, r53550);
        double r53552 = r53549 * r53551;
        double r53553 = 2.0;
        double r53554 = r53553 * r53535;
        double r53555 = r53552 + r53554;
        double r53556 = r53548 + r53555;
        double r53557 = r53556 / r53540;
        double r53558 = sin(r53542);
        double r53559 = r53557 * r53558;
        double r53560 = /* ERROR: no complex support in C */;
        double r53561 = /* ERROR: no complex support in C */;
        return r53561;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 44.1

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

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