Average Error: 43.5 → 0.9
Time: 36.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 + \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 r66035 = x;
        double r66036 = exp(r66035);
        double r66037 = -r66035;
        double r66038 = exp(r66037);
        double r66039 = r66036 + r66038;
        double r66040 = 2.0;
        double r66041 = r66039 / r66040;
        double r66042 = y;
        double r66043 = cos(r66042);
        double r66044 = r66041 * r66043;
        double r66045 = r66036 - r66038;
        double r66046 = r66045 / r66040;
        double r66047 = sin(r66042);
        double r66048 = r66046 * r66047;
        double r66049 = /* ERROR: no complex support in C */;
        double r66050 = /* ERROR: no complex support in C */;
        return r66050;
}

double f(double x, double y) {
        double r66051 = x;
        double r66052 = exp(r66051);
        double r66053 = -r66051;
        double r66054 = exp(r66053);
        double r66055 = r66052 + r66054;
        double r66056 = 2.0;
        double r66057 = r66055 / r66056;
        double r66058 = y;
        double r66059 = cos(r66058);
        double r66060 = r66057 * r66059;
        double r66061 = sin(r66058);
        double r66062 = 0.016666666666666666;
        double r66063 = 5.0;
        double r66064 = pow(r66051, r66063);
        double r66065 = r66062 * r66064;
        double r66066 = 2.0;
        double r66067 = r66051 * r66066;
        double r66068 = 3.0;
        double r66069 = pow(r66051, r66068);
        double r66070 = 0.3333333333333333;
        double r66071 = r66069 * r66070;
        double r66072 = r66067 + r66071;
        double r66073 = r66065 + r66072;
        double r66074 = r66073 / r66056;
        double r66075 = r66061 * r66074;
        double r66076 = /* ERROR: no complex support in C */;
        double r66077 = /* ERROR: no complex support in C */;
        return r66077;
}

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.9

    \[\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.9

    \[\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.9

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