Average Error: 43.6 → 0.6
Time: 10.2s
Precision: 64
\[\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]
\[\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\]
\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))
\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
double f(double x, double y) {
        double r34747 = x;
        double r34748 = exp(r34747);
        double r34749 = -r34747;
        double r34750 = exp(r34749);
        double r34751 = r34748 + r34750;
        double r34752 = 2.0;
        double r34753 = r34751 / r34752;
        double r34754 = y;
        double r34755 = cos(r34754);
        double r34756 = r34753 * r34755;
        double r34757 = r34748 - r34750;
        double r34758 = r34757 / r34752;
        double r34759 = sin(r34754);
        double r34760 = r34758 * r34759;
        double r34761 = /* ERROR: no complex support in C */;
        double r34762 = /* ERROR: no complex support in C */;
        return r34762;
}

double f(double x, double y) {
        double r34763 = 0.3333333333333333;
        double r34764 = x;
        double r34765 = 3.0;
        double r34766 = pow(r34764, r34765);
        double r34767 = 0.016666666666666666;
        double r34768 = 5.0;
        double r34769 = pow(r34764, r34768);
        double r34770 = 2.0;
        double r34771 = r34770 * r34764;
        double r34772 = fma(r34767, r34769, r34771);
        double r34773 = fma(r34763, r34766, r34772);
        double r34774 = 2.0;
        double r34775 = r34773 / r34774;
        double r34776 = y;
        double r34777 = sin(r34776);
        double r34778 = r34775 * r34777;
        return r34778;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 43.6

    \[\Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{e^{x} - e^{-x}}{2} \cdot \sin y i\right))\]
  2. Simplified43.6

    \[\leadsto \color{blue}{\frac{e^{x} - e^{-x}}{2} \cdot \sin y}\]
  3. Taylor expanded around 0 0.6

    \[\leadsto \frac{\color{blue}{\frac{1}{3} \cdot {x}^{3} + \left(\frac{1}{60} \cdot {x}^{5} + 2 \cdot x\right)}}{2} \cdot \sin y\]
  4. Simplified0.6

    \[\leadsto \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\]
  5. Final simplification0.6

    \[\leadsto \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\]

Reproduce

herbie shell --seed 2020056 +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)))))