Average Error: 43.5 → 0.7
Time: 46.6s
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{\left(x \cdot \left(\frac{1}{3} \cdot \left(x \cdot x\right)\right) + 2 \cdot x\right) + {x}^{5} \cdot \frac{1}{60}}{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{\left(x \cdot \left(\frac{1}{3} \cdot \left(x \cdot x\right)\right) + 2 \cdot x\right) + {x}^{5} \cdot \frac{1}{60}}{2} \cdot \sin y i\right))
double f(double x, double y) {
        double r1306691 = x;
        double r1306692 = exp(r1306691);
        double r1306693 = -r1306691;
        double r1306694 = exp(r1306693);
        double r1306695 = r1306692 + r1306694;
        double r1306696 = 2.0;
        double r1306697 = r1306695 / r1306696;
        double r1306698 = y;
        double r1306699 = cos(r1306698);
        double r1306700 = r1306697 * r1306699;
        double r1306701 = r1306692 - r1306694;
        double r1306702 = r1306701 / r1306696;
        double r1306703 = sin(r1306698);
        double r1306704 = r1306702 * r1306703;
        double r1306705 = /* ERROR: no complex support in C */;
        double r1306706 = /* ERROR: no complex support in C */;
        return r1306706;
}

double f(double x, double y) {
        double r1306707 = x;
        double r1306708 = exp(r1306707);
        double r1306709 = -r1306707;
        double r1306710 = exp(r1306709);
        double r1306711 = r1306708 + r1306710;
        double r1306712 = 2.0;
        double r1306713 = r1306711 / r1306712;
        double r1306714 = y;
        double r1306715 = cos(r1306714);
        double r1306716 = r1306713 * r1306715;
        double r1306717 = 0.3333333333333333;
        double r1306718 = r1306707 * r1306707;
        double r1306719 = r1306717 * r1306718;
        double r1306720 = r1306707 * r1306719;
        double r1306721 = r1306712 * r1306707;
        double r1306722 = r1306720 + r1306721;
        double r1306723 = 5.0;
        double r1306724 = pow(r1306707, r1306723);
        double r1306725 = 0.016666666666666666;
        double r1306726 = r1306724 * r1306725;
        double r1306727 = r1306722 + r1306726;
        double r1306728 = r1306727 / r1306712;
        double r1306729 = sin(r1306714);
        double r1306730 = r1306728 * r1306729;
        double r1306731 = /* ERROR: no complex support in C */;
        double r1306732 = /* ERROR: no complex support in C */;
        return r1306732;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 43.5

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

    \[\leadsto \Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\color{blue}{{x}^{5} \cdot \frac{1}{60} + x \cdot \left(\frac{1}{3} \cdot \left(x \cdot x\right) + 2\right)}}{2} \cdot \sin y i\right))\]
  4. Using strategy rm
  5. Applied +-commutative0.7

    \[\leadsto \Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{{x}^{5} \cdot \frac{1}{60} + x \cdot \color{blue}{\left(2 + \frac{1}{3} \cdot \left(x \cdot x\right)\right)}}{2} \cdot \sin y i\right))\]
  6. Applied distribute-rgt-in0.7

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

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

Reproduce

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