Average Error: 44.0 → 0.8
Time: 14.3s
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{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\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{\mathsf{fma}\left(\frac{1}{3}, {x}^{3}, \mathsf{fma}\left(\frac{1}{60}, {x}^{5}, 2 \cdot x\right)\right)}{2} \cdot \sin y i\right))
double f(double x, double y) {
        double r58378 = x;
        double r58379 = exp(r58378);
        double r58380 = -r58378;
        double r58381 = exp(r58380);
        double r58382 = r58379 + r58381;
        double r58383 = 2.0;
        double r58384 = r58382 / r58383;
        double r58385 = y;
        double r58386 = cos(r58385);
        double r58387 = r58384 * r58386;
        double r58388 = r58379 - r58381;
        double r58389 = r58388 / r58383;
        double r58390 = sin(r58385);
        double r58391 = r58389 * r58390;
        double r58392 = /* ERROR: no complex support in C */;
        double r58393 = /* ERROR: no complex support in C */;
        return r58393;
}

double f(double x, double y) {
        double r58394 = x;
        double r58395 = exp(r58394);
        double r58396 = -r58394;
        double r58397 = exp(r58396);
        double r58398 = r58395 + r58397;
        double r58399 = 2.0;
        double r58400 = r58398 / r58399;
        double r58401 = y;
        double r58402 = cos(r58401);
        double r58403 = r58400 * r58402;
        double r58404 = 0.3333333333333333;
        double r58405 = 3.0;
        double r58406 = pow(r58394, r58405);
        double r58407 = 0.016666666666666666;
        double r58408 = 5.0;
        double r58409 = pow(r58394, r58408);
        double r58410 = 2.0;
        double r58411 = r58410 * r58394;
        double r58412 = fma(r58407, r58409, r58411);
        double r58413 = fma(r58404, r58406, r58412);
        double r58414 = r58413 / r58399;
        double r58415 = sin(r58401);
        double r58416 = r58414 * r58415;
        double r58417 = /* ERROR: no complex support in C */;
        double r58418 = /* ERROR: no complex support in C */;
        return r58418;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 44.0

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

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

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

Reproduce

herbie shell --seed 2020024 +o rules:numerics
(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)))))