Average Error: 43.4 → 0.8
Time: 38.1s
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({x}^{5}, \frac{1}{60}, x \cdot \left(2 + \frac{1}{3} \cdot \left(x \cdot x\right)\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({x}^{5}, \frac{1}{60}, x \cdot \left(2 + \frac{1}{3} \cdot \left(x \cdot x\right)\right)\right)}{2} \cdot \sin y i\right))
double f(double x, double y) {
        double r2023518 = x;
        double r2023519 = exp(r2023518);
        double r2023520 = -r2023518;
        double r2023521 = exp(r2023520);
        double r2023522 = r2023519 + r2023521;
        double r2023523 = 2.0;
        double r2023524 = r2023522 / r2023523;
        double r2023525 = y;
        double r2023526 = cos(r2023525);
        double r2023527 = r2023524 * r2023526;
        double r2023528 = r2023519 - r2023521;
        double r2023529 = r2023528 / r2023523;
        double r2023530 = sin(r2023525);
        double r2023531 = r2023529 * r2023530;
        double r2023532 = /* ERROR: no complex support in C */;
        double r2023533 = /* ERROR: no complex support in C */;
        return r2023533;
}

double f(double x, double y) {
        double r2023534 = x;
        double r2023535 = exp(r2023534);
        double r2023536 = -r2023534;
        double r2023537 = exp(r2023536);
        double r2023538 = r2023535 + r2023537;
        double r2023539 = 2.0;
        double r2023540 = r2023538 / r2023539;
        double r2023541 = y;
        double r2023542 = cos(r2023541);
        double r2023543 = r2023540 * r2023542;
        double r2023544 = 5.0;
        double r2023545 = pow(r2023534, r2023544);
        double r2023546 = 0.016666666666666666;
        double r2023547 = 2.0;
        double r2023548 = 0.3333333333333333;
        double r2023549 = r2023534 * r2023534;
        double r2023550 = r2023548 * r2023549;
        double r2023551 = r2023547 + r2023550;
        double r2023552 = r2023534 * r2023551;
        double r2023553 = fma(r2023545, r2023546, r2023552);
        double r2023554 = r2023553 / r2023539;
        double r2023555 = sin(r2023541);
        double r2023556 = r2023554 * r2023555;
        double r2023557 = /* ERROR: no complex support in C */;
        double r2023558 = /* ERROR: no complex support in C */;
        return r2023558;
}

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}{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}{\mathsf{fma}\left({x}^{5}, \frac{1}{60}, x \cdot \left(2 + \left(x \cdot x\right) \cdot \frac{1}{3}\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({x}^{5}, \frac{1}{60}, x \cdot \left(2 + \frac{1}{3} \cdot \left(x \cdot x\right)\right)\right)}{2} \cdot \sin y i\right))\]

Reproduce

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