Average Error: 43.3 → 0.7
Time: 44.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{\mathsf{fma}\left({x}^{5}, \frac{1}{60}, x \cdot \left(2 + \frac{1}{3} \cdot \left(x \cdot x\right)\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({x}^{5}, \frac{1}{60}, x \cdot \left(2 + \frac{1}{3} \cdot \left(x \cdot x\right)\right)\right)}{2} \cdot \sin y i\right))
double f(double x, double y) {
        double r3547021 = x;
        double r3547022 = exp(r3547021);
        double r3547023 = -r3547021;
        double r3547024 = exp(r3547023);
        double r3547025 = r3547022 + r3547024;
        double r3547026 = 2.0;
        double r3547027 = r3547025 / r3547026;
        double r3547028 = y;
        double r3547029 = cos(r3547028);
        double r3547030 = r3547027 * r3547029;
        double r3547031 = r3547022 - r3547024;
        double r3547032 = r3547031 / r3547026;
        double r3547033 = sin(r3547028);
        double r3547034 = r3547032 * r3547033;
        double r3547035 = /* ERROR: no complex support in C */;
        double r3547036 = /* ERROR: no complex support in C */;
        return r3547036;
}

double f(double x, double y) {
        double r3547037 = x;
        double r3547038 = exp(r3547037);
        double r3547039 = -r3547037;
        double r3547040 = exp(r3547039);
        double r3547041 = r3547038 + r3547040;
        double r3547042 = 2.0;
        double r3547043 = r3547041 / r3547042;
        double r3547044 = y;
        double r3547045 = cos(r3547044);
        double r3547046 = r3547043 * r3547045;
        double r3547047 = 5.0;
        double r3547048 = pow(r3547037, r3547047);
        double r3547049 = 0.016666666666666666;
        double r3547050 = 2.0;
        double r3547051 = 0.3333333333333333;
        double r3547052 = r3547037 * r3547037;
        double r3547053 = r3547051 * r3547052;
        double r3547054 = r3547050 + r3547053;
        double r3547055 = r3547037 * r3547054;
        double r3547056 = fma(r3547048, r3547049, r3547055);
        double r3547057 = r3547056 / r3547042;
        double r3547058 = sin(r3547044);
        double r3547059 = r3547057 * r3547058;
        double r3547060 = /* ERROR: no complex support in C */;
        double r3547061 = /* ERROR: no complex support in C */;
        return r3547061;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 43.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.7

    \[\leadsto \Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\color{blue}{2 \cdot x + \left(\frac{1}{3} \cdot {x}^{3} + \frac{1}{60} \cdot {x}^{5}\right)}}{2} \cdot \sin y i\right))\]
  3. Simplified0.7

    \[\leadsto \Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\color{blue}{\mathsf{fma}\left({x}^{5}, \frac{1}{60}, x \cdot \left(2 + \frac{1}{3} \cdot \left(x \cdot x\right)\right)\right)}}{2} \cdot \sin y i\right))\]
  4. Final simplification0.7

    \[\leadsto \Im(\left(\frac{e^{x} + e^{-x}}{2} \cdot \cos y + \frac{\mathsf{fma}\left({x}^{5}, \frac{1}{60}, x \cdot \left(2 + \frac{1}{3} \cdot \left(x \cdot x\right)\right)\right)}{2} \cdot \sin y i\right))\]

Reproduce

herbie shell --seed 2019173 +o rules:numerics
(FPCore (x y)
  :name "Euler formula imaginary part (p55)"
  (im (complex (* (/ (+ (exp x) (exp (- x))) 2.0) (cos y)) (* (/ (- (exp x) (exp (- x))) 2.0) (sin y)))))