Average Error: 43.4 → 0.8
Time: 12.6s
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 r43102 = x;
        double r43103 = exp(r43102);
        double r43104 = -r43102;
        double r43105 = exp(r43104);
        double r43106 = r43103 + r43105;
        double r43107 = 2.0;
        double r43108 = r43106 / r43107;
        double r43109 = y;
        double r43110 = cos(r43109);
        double r43111 = r43108 * r43110;
        double r43112 = r43103 - r43105;
        double r43113 = r43112 / r43107;
        double r43114 = sin(r43109);
        double r43115 = r43113 * r43114;
        double r43116 = /* ERROR: no complex support in C */;
        double r43117 = /* ERROR: no complex support in C */;
        return r43117;
}

double f(double x, double y) {
        double r43118 = x;
        double r43119 = exp(r43118);
        double r43120 = -r43118;
        double r43121 = exp(r43120);
        double r43122 = r43119 + r43121;
        double r43123 = 2.0;
        double r43124 = r43122 / r43123;
        double r43125 = y;
        double r43126 = cos(r43125);
        double r43127 = r43124 * r43126;
        double r43128 = 0.3333333333333333;
        double r43129 = 3.0;
        double r43130 = pow(r43118, r43129);
        double r43131 = r43128 * r43130;
        double r43132 = 0.016666666666666666;
        double r43133 = 5.0;
        double r43134 = pow(r43118, r43133);
        double r43135 = r43132 * r43134;
        double r43136 = 2.0;
        double r43137 = r43136 * r43118;
        double r43138 = r43135 + r43137;
        double r43139 = r43131 + r43138;
        double r43140 = r43139 / r43123;
        double r43141 = sin(r43125);
        double r43142 = r43140 * r43141;
        double r43143 = /* ERROR: no complex support in C */;
        double r43144 = /* ERROR: no complex support in C */;
        return r43144;
}

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}{\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 2020062 
(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)))))