Average Error: 44.3 → 0.8
Time: 14.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 + \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 r62126 = x;
        double r62127 = exp(r62126);
        double r62128 = -r62126;
        double r62129 = exp(r62128);
        double r62130 = r62127 + r62129;
        double r62131 = 2.0;
        double r62132 = r62130 / r62131;
        double r62133 = y;
        double r62134 = cos(r62133);
        double r62135 = r62132 * r62134;
        double r62136 = r62127 - r62129;
        double r62137 = r62136 / r62131;
        double r62138 = sin(r62133);
        double r62139 = r62137 * r62138;
        double r62140 = /* ERROR: no complex support in C */;
        double r62141 = /* ERROR: no complex support in C */;
        return r62141;
}

double f(double x, double y) {
        double r62142 = x;
        double r62143 = exp(r62142);
        double r62144 = -r62142;
        double r62145 = exp(r62144);
        double r62146 = r62143 + r62145;
        double r62147 = 2.0;
        double r62148 = r62146 / r62147;
        double r62149 = y;
        double r62150 = cos(r62149);
        double r62151 = r62148 * r62150;
        double r62152 = 0.3333333333333333;
        double r62153 = 3.0;
        double r62154 = pow(r62142, r62153);
        double r62155 = 0.016666666666666666;
        double r62156 = 5.0;
        double r62157 = pow(r62142, r62156);
        double r62158 = 2.0;
        double r62159 = r62158 * r62142;
        double r62160 = fma(r62155, r62157, r62159);
        double r62161 = fma(r62152, r62154, r62160);
        double r62162 = r62161 / r62147;
        double r62163 = sin(r62149);
        double r62164 = r62162 * r62163;
        double r62165 = /* ERROR: no complex support in C */;
        double r62166 = /* ERROR: no complex support in C */;
        return r62166;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 44.3

    \[\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 2020034 +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)))))