Average Error: 43.8 → 0.8
Time: 13.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 r61284 = x;
        double r61285 = exp(r61284);
        double r61286 = -r61284;
        double r61287 = exp(r61286);
        double r61288 = r61285 + r61287;
        double r61289 = 2.0;
        double r61290 = r61288 / r61289;
        double r61291 = y;
        double r61292 = cos(r61291);
        double r61293 = r61290 * r61292;
        double r61294 = r61285 - r61287;
        double r61295 = r61294 / r61289;
        double r61296 = sin(r61291);
        double r61297 = r61295 * r61296;
        double r61298 = /* ERROR: no complex support in C */;
        double r61299 = /* ERROR: no complex support in C */;
        return r61299;
}

double f(double x, double y) {
        double r61300 = x;
        double r61301 = exp(r61300);
        double r61302 = -r61300;
        double r61303 = exp(r61302);
        double r61304 = r61301 + r61303;
        double r61305 = 2.0;
        double r61306 = r61304 / r61305;
        double r61307 = y;
        double r61308 = cos(r61307);
        double r61309 = r61306 * r61308;
        double r61310 = 0.3333333333333333;
        double r61311 = 3.0;
        double r61312 = pow(r61300, r61311);
        double r61313 = r61310 * r61312;
        double r61314 = 0.016666666666666666;
        double r61315 = 5.0;
        double r61316 = pow(r61300, r61315);
        double r61317 = r61314 * r61316;
        double r61318 = 2.0;
        double r61319 = r61318 * r61300;
        double r61320 = r61317 + r61319;
        double r61321 = r61313 + r61320;
        double r61322 = r61321 / r61305;
        double r61323 = sin(r61307);
        double r61324 = r61322 * r61323;
        double r61325 = /* ERROR: no complex support in C */;
        double r61326 = /* ERROR: no complex support in C */;
        return r61326;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 43.8

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