Average Error: 43.6 → 0.7
Time: 13.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))\]
\[\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 r39206 = x;
        double r39207 = exp(r39206);
        double r39208 = -r39206;
        double r39209 = exp(r39208);
        double r39210 = r39207 + r39209;
        double r39211 = 2.0;
        double r39212 = r39210 / r39211;
        double r39213 = y;
        double r39214 = cos(r39213);
        double r39215 = r39212 * r39214;
        double r39216 = r39207 - r39209;
        double r39217 = r39216 / r39211;
        double r39218 = sin(r39213);
        double r39219 = r39217 * r39218;
        double r39220 = /* ERROR: no complex support in C */;
        double r39221 = /* ERROR: no complex support in C */;
        return r39221;
}

double f(double x, double y) {
        double r39222 = x;
        double r39223 = exp(r39222);
        double r39224 = -r39222;
        double r39225 = exp(r39224);
        double r39226 = r39223 + r39225;
        double r39227 = 2.0;
        double r39228 = r39226 / r39227;
        double r39229 = y;
        double r39230 = cos(r39229);
        double r39231 = r39228 * r39230;
        double r39232 = 0.3333333333333333;
        double r39233 = 3.0;
        double r39234 = pow(r39222, r39233);
        double r39235 = r39232 * r39234;
        double r39236 = 0.016666666666666666;
        double r39237 = 5.0;
        double r39238 = pow(r39222, r39237);
        double r39239 = r39236 * r39238;
        double r39240 = 2.0;
        double r39241 = r39240 * r39222;
        double r39242 = r39239 + r39241;
        double r39243 = r39235 + r39242;
        double r39244 = r39243 / r39227;
        double r39245 = sin(r39229);
        double r39246 = r39244 * r39245;
        double r39247 = /* ERROR: no complex support in C */;
        double r39248 = /* ERROR: no complex support in C */;
        return r39248;
}

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. Taylor expanded around 0 0.7

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

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