Average Error: 44.0 → 0.8
Time: 13.8s
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 r51008 = x;
        double r51009 = exp(r51008);
        double r51010 = -r51008;
        double r51011 = exp(r51010);
        double r51012 = r51009 + r51011;
        double r51013 = 2.0;
        double r51014 = r51012 / r51013;
        double r51015 = y;
        double r51016 = cos(r51015);
        double r51017 = r51014 * r51016;
        double r51018 = r51009 - r51011;
        double r51019 = r51018 / r51013;
        double r51020 = sin(r51015);
        double r51021 = r51019 * r51020;
        double r51022 = /* ERROR: no complex support in C */;
        double r51023 = /* ERROR: no complex support in C */;
        return r51023;
}

double f(double x, double y) {
        double r51024 = x;
        double r51025 = exp(r51024);
        double r51026 = -r51024;
        double r51027 = exp(r51026);
        double r51028 = r51025 + r51027;
        double r51029 = 2.0;
        double r51030 = r51028 / r51029;
        double r51031 = y;
        double r51032 = cos(r51031);
        double r51033 = r51030 * r51032;
        double r51034 = 0.3333333333333333;
        double r51035 = 3.0;
        double r51036 = pow(r51024, r51035);
        double r51037 = r51034 * r51036;
        double r51038 = 0.016666666666666666;
        double r51039 = 5.0;
        double r51040 = pow(r51024, r51039);
        double r51041 = r51038 * r51040;
        double r51042 = 2.0;
        double r51043 = r51042 * r51024;
        double r51044 = r51041 + r51043;
        double r51045 = r51037 + r51044;
        double r51046 = r51045 / r51029;
        double r51047 = sin(r51031);
        double r51048 = r51046 * r51047;
        double r51049 = /* ERROR: no complex support in C */;
        double r51050 = /* ERROR: no complex support in C */;
        return r51050;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 44.0

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