Average Error: 43.7 → 0.8
Time: 20.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{\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 r48222 = x;
        double r48223 = exp(r48222);
        double r48224 = -r48222;
        double r48225 = exp(r48224);
        double r48226 = r48223 + r48225;
        double r48227 = 2.0;
        double r48228 = r48226 / r48227;
        double r48229 = y;
        double r48230 = cos(r48229);
        double r48231 = r48228 * r48230;
        double r48232 = r48223 - r48225;
        double r48233 = r48232 / r48227;
        double r48234 = sin(r48229);
        double r48235 = r48233 * r48234;
        double r48236 = /* ERROR: no complex support in C */;
        double r48237 = /* ERROR: no complex support in C */;
        return r48237;
}

double f(double x, double y) {
        double r48238 = x;
        double r48239 = exp(r48238);
        double r48240 = -r48238;
        double r48241 = exp(r48240);
        double r48242 = r48239 + r48241;
        double r48243 = 2.0;
        double r48244 = r48242 / r48243;
        double r48245 = y;
        double r48246 = cos(r48245);
        double r48247 = r48244 * r48246;
        double r48248 = 0.3333333333333333;
        double r48249 = 3.0;
        double r48250 = pow(r48238, r48249);
        double r48251 = r48248 * r48250;
        double r48252 = 0.016666666666666666;
        double r48253 = 5.0;
        double r48254 = pow(r48238, r48253);
        double r48255 = r48252 * r48254;
        double r48256 = 2.0;
        double r48257 = r48256 * r48238;
        double r48258 = r48255 + r48257;
        double r48259 = r48251 + r48258;
        double r48260 = r48259 / r48243;
        double r48261 = sin(r48245);
        double r48262 = r48260 * r48261;
        double r48263 = /* ERROR: no complex support in C */;
        double r48264 = /* ERROR: no complex support in C */;
        return r48264;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 43.7

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