Average Error: 43.5 → 0.8
Time: 31.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))\]
\[\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \sin y \cdot \frac{\frac{1}{60} \cdot {x}^{5} + \left(x \cdot 2 + {x}^{3} \cdot \frac{1}{3}\right)}{2} 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 + \sin y \cdot \frac{\frac{1}{60} \cdot {x}^{5} + \left(x \cdot 2 + {x}^{3} \cdot \frac{1}{3}\right)}{2} i\right))
double f(double x, double y) {
        double r64768 = x;
        double r64769 = exp(r64768);
        double r64770 = -r64768;
        double r64771 = exp(r64770);
        double r64772 = r64769 + r64771;
        double r64773 = 2.0;
        double r64774 = r64772 / r64773;
        double r64775 = y;
        double r64776 = cos(r64775);
        double r64777 = r64774 * r64776;
        double r64778 = r64769 - r64771;
        double r64779 = r64778 / r64773;
        double r64780 = sin(r64775);
        double r64781 = r64779 * r64780;
        double r64782 = /* ERROR: no complex support in C */;
        double r64783 = /* ERROR: no complex support in C */;
        return r64783;
}

double f(double x, double y) {
        double r64784 = x;
        double r64785 = exp(r64784);
        double r64786 = -r64784;
        double r64787 = exp(r64786);
        double r64788 = r64785 + r64787;
        double r64789 = 2.0;
        double r64790 = r64788 / r64789;
        double r64791 = y;
        double r64792 = cos(r64791);
        double r64793 = r64790 * r64792;
        double r64794 = sin(r64791);
        double r64795 = 0.016666666666666666;
        double r64796 = 5.0;
        double r64797 = pow(r64784, r64796);
        double r64798 = r64795 * r64797;
        double r64799 = 2.0;
        double r64800 = r64784 * r64799;
        double r64801 = 3.0;
        double r64802 = pow(r64784, r64801);
        double r64803 = 0.3333333333333333;
        double r64804 = r64802 * r64803;
        double r64805 = r64800 + r64804;
        double r64806 = r64798 + r64805;
        double r64807 = r64806 / r64789;
        double r64808 = r64794 * r64807;
        double r64809 = /* ERROR: no complex support in C */;
        double r64810 = /* ERROR: no complex support in C */;
        return r64810;
}

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.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. Simplified0.8

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

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

Reproduce

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