Average Error: 43.4 → 0.8
Time: 15.0s
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 r104866 = x;
        double r104867 = exp(r104866);
        double r104868 = -r104866;
        double r104869 = exp(r104868);
        double r104870 = r104867 + r104869;
        double r104871 = 2.0;
        double r104872 = r104870 / r104871;
        double r104873 = y;
        double r104874 = cos(r104873);
        double r104875 = r104872 * r104874;
        double r104876 = r104867 - r104869;
        double r104877 = r104876 / r104871;
        double r104878 = sin(r104873);
        double r104879 = r104877 * r104878;
        double r104880 = /* ERROR: no complex support in C */;
        double r104881 = /* ERROR: no complex support in C */;
        return r104881;
}

double f(double x, double y) {
        double r104882 = x;
        double r104883 = exp(r104882);
        double r104884 = -r104882;
        double r104885 = exp(r104884);
        double r104886 = r104883 + r104885;
        double r104887 = 2.0;
        double r104888 = r104886 / r104887;
        double r104889 = y;
        double r104890 = cos(r104889);
        double r104891 = r104888 * r104890;
        double r104892 = 0.3333333333333333;
        double r104893 = 3.0;
        double r104894 = pow(r104882, r104893);
        double r104895 = r104892 * r104894;
        double r104896 = 0.016666666666666666;
        double r104897 = 5.0;
        double r104898 = pow(r104882, r104897);
        double r104899 = r104896 * r104898;
        double r104900 = 2.0;
        double r104901 = r104900 * r104882;
        double r104902 = r104899 + r104901;
        double r104903 = r104895 + r104902;
        double r104904 = r104903 / r104887;
        double r104905 = sin(r104889);
        double r104906 = r104904 * r104905;
        double r104907 = /* ERROR: no complex support in C */;
        double r104908 = /* ERROR: no complex support in C */;
        return r104908;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 43.4

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

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